尝试用MATLAB象征性地解决2个未知数的方程

时间:2010-11-30 23:54:37

标签: matlab

尝试使用MATLAB解决2个未知的方程式,并且不喜欢我的输入。

其中c是3.06 + 2.57j,v是12:

eq1 = 'c = a/10j'
eq2 = '(6b)/50 + b/10j = a/10j + a/10'

试图解决a和b。有关如何正确使用这些内容的任何建议吗?

2 个答案:

答案 0 :(得分:2)

Matlab搞砸了,但语法是

sol = solve(eq1,x1,eq2,x2,..);

使它成为solve({eq1,eq2,..},{x1,x2,..})会更有意义,但不是,我们必须逐一写出所有的论点。

无论如何,技巧是eq1,eq2,..是必须被评估为零的符号表达式。因此,c = a/10j取代eq1=sym('c-a/10j')而不是eq1 = sym('c - a/(10*i)'); % must evaluate to zero eq2 = sym('(6*b)/50 + b/(10*i) -( a/(10*i) + a/10)'); %must evaluate to zero sol = solve(eq1,'a',eq2,'b'); a = subs(sol.a,'c',3.06+2.57j) b = subs(sol.b,'c',3.06+2.57j)

所以试试这个:

a= -25.7000 +30.6000i

生成b=-20.6639 +29.6967i10j

请注意,符号函数无法理解10*i。它必须是6b。此外,notatation 6*b缺少运算符,需要equs = [eq1;eq2]; vars = [sym('a');sym('b')]; A = jacobian(equs,vars); b = A*vars - equs; x = A\b; c = 3.06+2.57j; sol = subs(x,'c',c)

祝你好运!


由于问题是线性的,还有另一种解决方法

sol =
 -25.7000 +30.6000i
 -20.6639 +29.6967i

结果

{{1}}

答案 1 :(得分:0)

你需要告诉matlab c,eq1,eq2,a,j(这不复杂吗?),b是符号变量。即使用命令“syms a b c j eq1 eq2”。然后像上面那样定义所有内容减去单引号(这是一个字符串!)。

然后你可以使用'solve(eq2,'你想要解决的变量')。很容易。

相关问题