clc;
clear all;
syms y a2 a3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% [ 0.5 0.25 0.125 ] [ a2 ] [ y ]
% [ 1 1 1 ] [ a3 ] = [ 3 ]
% [ 2 4 8 ] [ 6 ] [ 2 ]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
M = [0.5 0.25 0.125; 1 1 1; 2 4 8];
t = [a2 a3 6];
r = [y 3 2];
sol = M * t'
s1 = solve(sol(1), a2) % solve for a2
s2 = solve(sol(2), a3) % solve for a3
这是我到目前为止所拥有的。 这些是我的输出
sol =
conj(a2)/2 + conj(a3)/4 + 3/4
conj(a2) + conj(a3) + 6
2*conj(a2) + 4*conj(a3) + 48
s1 =
- conj(a3)/2 - 3/2 - Im(a3)*i
s2 =
- conj(a2) - 6 - 2*Im(a2)*i
sol
看起来就像我们将它们放回等式形式时所拥有的那样:
0.5 * a2 + 0.25 * a3 + 0.125 * a4
a2 + a3 + a4 = 3
2 * a2 + 4 * a3 + 8 * a4 = 2
其中a4已知== 6.
我的问题是,我不知道如何使用solve
来实际解决这些方程以获得a2
和a3
的值。
s2
解决了a3但它与我们在纸上的不相符(不完全相同)。
a2 + a3 + 6 = 3应该产生a3 = -3 - a2。
因为想象。不知何故,我需要将向量解sol
等同于每行的值[y 3 2]
。
答案 0 :(得分:1)
您需要为solve
函数提供等式。就像那样简单:
sol = solve(M * t' == r');
结果你有
sol.a2 = 17
sol.a3 = -20
sol.y = 17/4
这适用于MATLAB R2012b。一般来说,这可以在一行中解决:
solve('a2 / 2 + a3 / 4 - y + 3 / 4 = 0', 'a2 + a3 + 3 = 0', '2 * a2 + 4 * a3 + 46 = 0')
P.S。我已经检查过,这适用于MATLAB R2011b。