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
отсутствует оператор и должен быть 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
OMG, это так просто, вы просто поставить свою домашнюю работу на StackOverflow и люди дайте ответ с комментариями на тарелке – matcheek 2010-12-01 12:35:05