尝试使用MATLAB解决2个未知的方程式,并且不喜欢我的输入。
其中c是3.06 + 2.57j,v是12:
eq1 = 'c = a/10j'
eq2 = '(6b)/50 + b/10j = a/10j + a/10'
试图解决a和b。有关如何正确使用这些内容的任何建议吗?
答案 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.6967i
和10j
。
请注意,符号函数无法理解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,'你想要解决的变量')。很容易。