求解具有一个已知系数的线性方程组

时间:2012-10-10 20:01:37

标签: matlab

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来实际解决这些方程以获得a2a3的值。

s2解决了a3但它与我们在纸上的不相符(不完全相同)。 a2 + a3 + 6 = 3应该产生a3 = -3 - a2。

因为想象。不知何故,我需要将向量解sol等同于每行的值[y 3 2]

1 个答案:

答案 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。