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

Learn moreOpportunities for recent engineering grads.

Apply Today
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?

*No products are associated with this question.*

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?

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])

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.

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')

Answer by Zuhaib on 12 Dec 2012

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

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])

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 ]

## 0 Comments