2
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]

4

1 回答 1

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')

PS 我已经检查过了,这适用于 MATLAB R2011b。

于 2012-10-10T20:13:29.933 回答