如何在MATLAB中求解包含符号的方程组?

时间:2020-12-29 23:03:56

标签: matlab

我正在尝试为 "p, x, y, z," 求解这四个方程,其中包含两个参数 "b", "a",并且我使用了 solve 命令,如图所示在代码中:

clc,clear;

syms  p x y z b a
 
eqn1 = (1)*p  + (exp(0.5*b^(1/3)))*x + (exp(-0.25*b^(1/3)) * cos(0.25*sqrt(3)*b^(1/3)))*y + (exp(-0.25*b^(1/3)) * sin(0.25*sqrt(3)*b^(1/3)))*z == 0;

eqn2 = (1)*p  + (exp(-0.5*b^(1/3)))*x + (exp(0.25*b^(1/3)) * cos(0.25*sqrt(3)*b^(1/3)))*y - (exp(0.25*b^(1/3)) * sin(0.25*sqrt(3)*b^(1/3)))*z == 0;

eqn3 = (b^(1/3)*exp(0.5*b^(1/3))+a*b^(2/3)*exp(0.5*b^(1/3)))*x + (-.866*b^.333*sin(.433*b^.333)*exp(-.25*b^.333)-.5*cos(.433*b^.333)*b^.333*exp(-.25*b^.333) + a(-.5*b^.666*cos(.433*b^.333)*exp(-.25*b^.333)+.866*b^.666*sin(.433*b^.333)*exp(-.25*b^.333)))*y + (.866*cos(.433*b^.333)*b^.333*exp(-.25*b^.333)-.5*b^.333*sin(.433*b^.333)*exp(-.25*b^.333)+a(-.5*b^.666*sin(.433*b^.333)*exp(-.25*b^.333)-.866*b^.666*cos(.433*b^.333)*exp(-.25*b^.333)))*z == 0;
                                                                 
eqn4 = (b^(1/3)*exp(-0.5*b^(1/3))-a*b^(2/3)*exp(-0.5*b^(1/3)))*x + (.866*b^.333*sin(.433*b^.333)*exp(.25*b^.333)-.5*cos(.433*b^.333)*b^.333*exp(.25*b^.333) - a(-.5*b^.666*cos(.433*b^.333)*exp(.25*b^.333)-.866*b^.666*sin(.433*b^.333)*exp(.25*b^.333)))*y + (.866*cos(.433*b^.333)*b^.333*exp(.25*b^.333)+.5*b^.333*sin(.433*b^.333)*exp(.25*b^.333)-a(.5*b^.666*sin(.433*b^.333)*exp(.25*b^.333)-.866*b^.666*cos(.433*b^.333)*exp(.25*b^.333) ))*z == 0;
                                                                       
sol = solve([eqn1, eqn2, eqn3, eqn4 ], [p, x, y, z]);
pSol = sol.p
xSol = sol.x
ySol = sol.y
zSol = sol.z


,但它一直显示错误,请您提出解决此问题的任何方法。

1 个答案:

答案 0 :(得分:1)

让我们看看这个:

eqn3 = (b^(1/3)*exp(0.5*b^(1/3))+a*b^(2/3)*exp(0.5*b^(1/3)))*x + (-.866*b^.333*sin(.433*b^.333)*exp(-.25*b^.333)-.5*cos(.433*b^.333)*b^.333*exp(-.25*b^.333) + a(-.5*b^.666*cos(.433*b^.333)*exp(-.25*b^.333)+.866*b^.666*sin(.433*b^.333)*exp(-.25*b^.333)))*y + (.866*cos(.433*b^.333)*b^.333*exp(-.25*b^.333)-.5*b^.333*sin(.433*b^.333)*exp(-.25*b^.333)+a(-.5*b^.666*sin(.433*b^.333)*exp(-.25*b^.333)-.866*b^.666*cos(.433*b^.333)*exp(-.25*b^.333)))*z == 0;

我选了一个错误的部分,总共 4 个。

a(-.5*b^.666

你看,如果 a(index) 存在,index 必须是一个正整数。但是,在您的代码中,-.5*b^.666*cos(.433*b^.333)*exp(-.25*b^.333)+.866*b^.666*sin(.433*b^.333)*exp(-.25*b^.333) 的值可能不是正整数。而 A 甚至可能不是矩阵,更不用说索引了。

另外,在发布问题之前,您最好检查一下基本的语法问题,以节省彼此的时间。

相关问题