I have this program to get the value of "m"
clc
syms m
eqns = (72*m^2)-(1.5*m^3) == 358;
S=solve (eqns,m,'Real',true)
double (S.m);
However in the output I get this error
S =
32*cos(atan(2167511^(1/2)/5965)/3) + 16
16*3^(1/2)*sin(atan(2167511^(1/2)/5965)/3) - 16*cos(atan(2167511^(1/2)/5965)/3) + 16
16 - 16*3^(1/2)*sin(atan(2167511^(1/2)/5965)/3) - 16*cos(atan(2167511^(1/2)/5965)/3)
Error using sym/subsref
Too many output arguments.
Error in Untitled (line 5)
double (S.m);
Can any body help me with this?

 採用された回答

Walter Roberson
Walter Roberson 2020 年 5 月 4 日

1 投票

When there is only a single variable being solved for, and ReturnConditions is not set, then solve() does not return a structure containing the one variable: it returns the value of the variable. In terms of your code, that means you would use
double(S) %instead of double(S.m)
Or you could instead
S=solve (eqns, m, 'Real', true, 'returnconditions', true);
and then S.m would exist.

3 件のコメント

Rohit Tamrakar
Rohit Tamrakar 2020 年 5 月 4 日
Thanks Walter this worked.
I got this as answer.
ans =
47.8960
2.2849
-2.1809
I want the the value of "m" to be selected as 2.28 i.e the smallest positive integer among these three values. What code I have to use for selecting 2.28 value?
Walter Roberson
Walter Roberson 2020 年 5 月 4 日
min(S(S>0))
Rohit Tamrakar
Rohit Tamrakar 2020 年 5 月 4 日
Thanks Walter :)

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

その他の回答 (1 件)

Mathias Andersen
Mathias Andersen 2020 年 5 月 4 日

1 投票

Double(S) will produce a matrix with the solutions.
S.m is not a variable stated anywhere in the script

4 件のコメント

Rohit Tamrakar
Rohit Tamrakar 2020 年 5 月 4 日
How can I get the value for variable "m" ?
Walter Roberson
Walter Roberson 2020 年 5 月 4 日
S is the output of solve(). If two or more variables were being solved for and a single output were given, then S would be a structure with one field for each variable being solved for, and then S.m would exist.
S.m would also be created if 'returnconditions', true is specified.
Mathias Andersen
Mathias Andersen 2020 年 5 月 4 日
編集済み: Mathias Andersen 2020 年 5 月 4 日
S contains the values for m
Walter Roberson
Walter Roberson 2020 年 5 月 4 日
Not when you solve for a single variable and you do not have ReturnConditions true: in that case, MATLAB cannot tell that apart from the case where you want the non-struct version of the solution.

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

カテゴリ

ヘルプ センター および File ExchangeMATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by