如何在MATLAB中用2个变量求解2个复杂方程?

时间:2013-02-19 19:19:38

标签: matlab equation-solving

我有这两个方程式:

y1=a*(10/11- (3*i)/4) + b*(5/6+ (7*i)/5)
y2= -1+(j*2) 

其中:y1 = y2,我想使用 MATLAB找到“a”和“b”的确切值。

我应该用什么MATLAB命令来解决这两个方程?

p.s。:我尝试使用solve命令,但它没有给我任何答案:

syms a b
y1=a*(10/11- (3*i)/4) + b*(5/6+ (7*i)/5);
y2= -1+(j*2);
s=solve('y1-y2=0',[a b])

它给了我这个:

Warning: Explicit solution could not be found. 
> In solve at 160 

s =

[ empty sym ]

2 个答案:

答案 0 :(得分:1)

首先,确保正确编写方程式(操作优先级,括号):

y1中,第二和第三项都写得很奇怪:

如果你简化(根据你所写的内容),它就会变成(45/124)*i + b*(67/30)

另外,为什么要在i中混合jy2

如果你做得很好,而你仍然得到相同的答案,那真的意味着没有可能的解决方案。

编辑:

再看一遍,你没有2个等式/ 2变量系统,你有3个变量(y,a,b)......这意味着你无法解决。

编辑2:

从最后一条评论中:只要做你想说的事情,均衡两个方程式的实部和虚部:

syms a;
S = solve('a*(10/11)+b*(5/6)=-1','a*(3/4)+b*(7/5)=2');
S = [S.a S.b]

S =

[-4048/855, 226/57]

答案 1 :(得分:-1)

>> syms a b
>> solve( a*(10/11- (3*i)/4) + (3/4*i+ ((12)/(31*i))) + b*(5/6+ (7*i)/5i)==-1+(j*2))
a*(- 300/737 + (45*i)/134) - 30/67 + (3045*i)/4154

See official doc