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

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