Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

what is the syntaxis for numerical solvers?

Asked by Petr on 12 Dec 2012

Hi, for the last hour I am trying to start the numerical solver..

The copy-past from "help"

numeric::solve([sin(x) = y^2 - 1, cos(x) = y], [x, y]);

gives

Error: Unexpected MATLAB operator 

for '::'

I can also use the other syntaxis option, which works fine in my script:

syms ha r2 positive; [h,rcone] = solve( hh(ha,r2) == 0, VV(ha,r2) == V0);

If use this, how do I define the range of ha and r2 in which I want the solutions?

0 Comments

Petr

Products

No products are associated with this question.

4 Answers

Answer by Petr on 12 Dec 2012
Accepted answer

thanks! but.. how to introduce the range in which I look for solutions? say, x=1..3 ? what's the syntax?

3 Comments

Walter Roberson on 12 Dec 2012
syms x y
feval(symengine, 'numeric::solve', [sin(x) = y^2 - 1, cos(x) = y], [sym('x=1..3'), y])
Petr on 13 Dec 2012

! I found the way: using assumptions

Thanks

Walter Roberson on 13 Dec 2012

Note this from the numeric::solve documentation page:

Note:   In contrast to the symbolic solver solve, the numerical solver does not react to properties of identifiers set via assume. To use these properties, call float ( hold( solve )(arguments)) instead.
Petr
Answer by Azzi Abdelmalek on 12 Dec 2012
Edited by Azzi Abdelmalek on 12 Dec 2012
sol=solve('sin(x) = y^2 - 1', 'cos(x) = y')

%or

sol=solve('sin(x) -y^2 + 1', 'cos(x) - y')

0 Comments

Azzi Abdelmalek
Answer by Zuhaib on 12 Dec 2012

it depend on your equation .. write function used in your equation for search in hepl of matlab

0 Comments

Zuhaib
Answer by Walter Roberson on 12 Dec 2012

numeric::solve is a MuPAD call that cannot be directly used from MATLAB. Use

feval(symengine, 'numeric::solve', [sym('sin(x) = y^2 - 1'), sym('cos(x) = y')], [sym('x'), sym('y')])

If you have R2011b or later (I think it is), you can use

syms x y
feval(symengine, 'numeric::solve', [sin(x) = y^2 - 1, cos(x) = y], [x, y])

1 Comment

Petr on 13 Dec 2012

>> syms x y

>> feval(symengine, 'numeric::solve', [sin(x) = y^2 - 1, cos(x) = y], [x, y])

it tells

"Error: The expression to the left of the equals sign is not a valid target for an assignment." to the '=' sign after sin(x).

I tried == instead and it does not work.. Am I doing something completely wrong? Looks like all the toolboxes are installed and it is R2012a

The answer to

>> feval(symengine, 'numeric::solve', [sym('sin(x) = y^2 - 1'), sym('cos(x) = y')], [sym('x'), sym('y')])

is [ empty sym ]

Walter Roberson

Contact us