フィルターのクリア

what is the syntaxis for numerical solvers?

1 回表示 (過去 30 日間)
Petr
Petr 2012 年 12 月 12 日
編集済み: Walter Roberson 2018 年 12 月 13 日
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?

採用された回答

Petr
Petr 2012 年 12 月 12 日
thanks! but.. how to introduce the range in which I look for solutions? say, x=1..3 ? what's the syntax?
  3 件のコメント
Petr
Petr 2012 年 12 月 13 日
! I found the way: using assumptions
Thanks
Walter Roberson
Walter Roberson 2012 年 12 月 13 日
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.

サインインしてコメントする。

その他の回答 (4 件)

Azzi Abdelmalek
Azzi Abdelmalek 2012 年 12 月 12 日
編集済み: Azzi Abdelmalek 2012 年 12 月 12 日
sol=solve('sin(x) = y^2 - 1', 'cos(x) = y')
%or
sol=solve('sin(x) -y^2 + 1', 'cos(x) - y')
  2 件のコメント
Chibuzo Chukwu
Chibuzo Chukwu 2018 年 12 月 13 日
How do I make x the subject of this equation.using matlab
x = exp(x+y)
Walter Roberson
Walter Roberson 2018 年 12 月 13 日
編集済み: Walter Roberson 2018 年 12 月 13 日
In older versions of MATLAB,
solve('x = exp(x+y)', 'x')
In more modern versions
syms x y
solve(x == exp(x+y), x)
However, MATLAB is not able to find a solution. A solution exists, and is
-lambertw(-exp(y))
but MATLAB is not strong on Lambert W processing.

サインインしてコメントする。


Zuhaib
Zuhaib 2012 年 12 月 12 日
it depend on your equation .. write function used in your equation for search in hepl of matlab

Walter Roberson
Walter Roberson 2012 年 12 月 12 日
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 件のコメント
Petr
Petr 2012 年 12 月 13 日
>> 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 ]

サインインしてコメントする。


Chibuzo Chukwu
Chibuzo Chukwu 2018 年 12 月 13 日
How do I make x the subject of this equation.using matlab
x = exp(x+y)

カテゴリ

Help Center および File ExchangeNumeric Solvers についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by