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

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

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