Calculating a new variable from a symbolic equation

1 回表示 (過去 30 日間)
Helena Hjørringgaard
Helena Hjørringgaard 2020 年 3 月 24 日
I'm new to Matlab so I hope you can help me :-). I'm using MATLAB r2019a.
I have a array (Q) that I would like to use as a input in a equation and solve for a variable (y). I need the equation to calculate a y for each Q. How do I do that?
So far I've tried this (simplyfied):
Q_full = 0.5
Q = [1,2,3]
syms Q Q_full y
eqn = vpasolve(Q/Q_full == 2+y,y)
The errors I get are:
Error using mupadengine/feval (line 195)
Symbolic parameters not supported in nonpolynomial equations.
Error in sym/vpasolve (line 172)
sol = eng.feval('symobj::vpasolve',eqns,vars,X0);
Error in Model (line 30)
eqn = vpasolve(Q/Q_full == 0.46-(0.5*cos(pi*(y/D)))+(0.04*cos(2*pi*(y/D))),y); <- this is my real equation

採用された回答

Birdman
Birdman 2020 年 3 月 24 日
編集済み: Birdman 2020 年 3 月 24 日
You already defined values for Q_full and Q. You do not need to define them as symbolic variables later. This will not work. Try the following approach:
Q_full = 0.5
Q = [1,2,3]
syms y
for i=1:numel(Q)
eqn(i) = vpasolve(Q(i)/Q_full == 2+y,y)
end

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2020 年 3 月 24 日
syms Q Q_full y
That line overwrites the numeric values that you assigned to Q and Q_full. That gives you an equation with more than one unresolved variable. vpasolve can only handle multiple unresolved variables for polynomials.
Do not do the syms on Q Q_full.
In any one call to vpasolve, vpasolve will attempt to find parameter values that satisfy all of the equations simultaneously. It never treats the inputs as a sequence of separate equations, only ever as simultaneous equations.
Therefore, either loop or else arrayfun
arrayfun(@(Qr) vpasolve(Qr == etc, y), Q./Q_full)

カテゴリ

Help Center および File ExchangeSymbolic Math Toolbox についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by