Solve symbolic equation by comparing coefficients
14 ビュー (過去 30 日間)
古いコメントを表示
I have an equation like this:
, which I need to rearrange to this form:
.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/889545/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/889550/image.png)
Obviously, the above holds true
for
and
. However, I would like to do this automatically. How can d and e be found using Matlabs Symbolic Toolbox?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/889555/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/889560/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/889565/image.png)
The following approach won't help, since the system isn't well defined.
syms a b c d e f x y z
eq = a*x + y*(b + c*z)==0;
target = x + y*(d + e*z)==0;
solve([eq target],[d e])
Any help would be appreciated!
2 件のコメント
HighPhi
2022 年 2 月 9 日
syms a b c d e f x y z
eq(a,b,c) = a*x + y*(b + c*z);
target(a,b,c,d,e) = x + y*(d + e*z);
eq2(a,b,c,d,e) = subs(eq, [b, c], [d*a, e*a])
simplify(eq2)
D = solve(eq2 == 0, d)
E = solve(eq2 == 0, e)
not sure if that helps much but maybe it'll help you get closer to where you want to be. (I'm not totally positive what you're trying to do with it 😝 )
採用された回答
Prachi Kulkarni
2022 年 2 月 15 日
編集済み: Prachi Kulkarni
2022 年 2 月 15 日
Hi,
For a given example expression of the form a*x + y*(b + c*x), you can get the coefficients d and e of the reduced forms as follows.
syms x y z
eq = 2*x + y*(3 + 4*z); % input equation
[d,e] = reducedCoefficients(eq);
function [d,e] = reducedCoefficients(eq)
coef = coeffs(eq);
b = coef(1);
c = coef(2);
a = coef(3);
d = double(b/a);
e = double(c/a);
end
4 件のコメント
Prachi Kulkarni
2022 年 2 月 17 日
Hi,
For the general case, you can get the coefficients d and e of the reduced form as follows.
syms a b c x y z
eq = a*x + y*(b + c*z);
coef = coeffs(eq,[x,y,z]);
b = coef(1);
c = coef(2);
a = coef(3);
d = b/a;
e = c/a;
For your specific case, you can get the coefficients lambda and gamma of the reduced form as follows.
syms eta a Q d2ydt2 y t
eq = 4*(eta.^2)*d2ydt2 + 1.5*a*(Q.^2)*(1+cos(t))*y + y;
coef = coeffs(eq,[d2ydt2,y,cos(t)]);
lambda = coef(1)/coef(3);
gamma = coef(2)/coef(3);
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Symbolic Math Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!