matlab 中关于AX=B 的求解的一个问题

clear all;
M=1.05;
F=40.0;
tt=0.002;
a=2/3*F^2*log(M);
n=0:30;d(1)=1;d(31)=0;
s=exp(-a*n*tt).*sin(2*pi*F*n*tt);
r(1)=0.2;r(33)=-0.4;r(37)=0.15;r(52)=0.5;
r(72)=-0.35;r(87)=0.1;r(122)=0.2;r(131)=0;
rand('state',0);N=rand(1,161);
X=conv(r,s)+N;c=fliplr(s);rb=conv(s,c);
rbb=toeplitz(rb);rdb=conv(d,c)';
A=inv(rbb)*rdb;
plot(A); 无论是用A\B还是A的逆去乘B。。都是错误的。。。求高人指点。。matlab新手

用其中任意三个线性无关的方程求出a,b,c的一组值,但是这样我们就浪费了很多数据。

2.如果同时求解8个方程肯定无解,但是我们想要找到一个向量Y使得AY与B(B应该是一列向量)最为接近,而AY是A的列向量的一个线性组合,所以此问题转化为在A的列向量所生成的空间SA中寻找一向量Y使AY与B最为接近,至于如何度量接近程度一般使用欧氏范数||AY-B||。

3.根据最佳逼近定理显然B与其在SA中的正交分解(或垂直投影)pb的距离是B与SA中所有向量距离的最小者。此时Y便是AY=pb的解,由于pb是A的列向量的线性组合,所以此方程肯定有解。但每次求解时都计算b是一件很繁琐的事,所以我们要寻找一个更简便的方法。

4.由于pb是B在SA中的正交分解,所以(B-pb)⊥SA,所以(B-pb)垂直于A的每一个列向量a1,a2…an,其转置记为ta1,ta2,…tan,可知此时有ta1.(B-pb)=0,ta2.(B-pb)=0…(向量内积定义),即(A的转置A')A'(B-pb)=0,即A'pb=A'B,而pb=AY
所以A'AY=A'B,此方程成为AX=B的正规方程,由此亦可求出最佳逼近Y。此时系数矩阵已是方阵且可逆,Y=A'A\A'B=inv(A'A)*(A'B)。

5.此问题有另外分析解法,即求使Q=∑(1-ax-by-cz)^2达最小的a,b,c的值,分别对a,b,c求偏导数并令其为零亦可得到正规方程(组)。

6.此问题是最小二乘问题或称数据拟合(方法属于Gauss),至于最佳逼近和正交分解可参考有关线性代数或泛函分析的书籍。

希望对你有所帮助……
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-16
用A=pinv(rbb)*rdb追问

rbb是方阵啊。。。而且得出的结果与期望不符

追答

rbb不是满秩矩阵(奇异),无法求逆,只能求伪逆。也就是说这个方程的解是不存在的,只能得到最小二乘解。下面的是matlab的说明例子,你看了就明白了。

A is singular, A\b returns the following warning.
Warning: Matrix is singular to working precision.

In this case, Ax = b might not have a solution. For example,
A = magic(5);
A(:,1) = zeros(1,5); % Set column 1 of A to zeros
b = [1;2;5;7;7];
x = A\b
Warning: Matrix is singular to working precision.

ans =

NaN
NaN
NaN
NaN
NaN

If you get this warning, you can still attempt to solve Ax = b using the pseudoinverse function pinv.
x = pinv(A)*b

x =

0
0.0209
0.2717
0.0808
-0.0321

The result x is least squares solution to Ax = b. To determine whether x is a exact solution -- that is, a solution for which Ax - b = 0 -- simply compute
A*x-b

ans =

-0.0603
0.6246
-0.4320
0.0141
0.0415

本回答被网友采纳

matlab 中关于AX=B 的求解的一个问题
所以A'AY=A'B,此方程成为AX=B的正规方程,由此亦可求出最佳逼近Y。此时系数矩阵已是方阵且可逆,Y=A'A\\A'B=inv(A'A)*(A'B)。5.此问题有另外分析解法,即求使Q=∑(1-ax-by-cz)^2达最小的a,b,c的值,分别对a,b,c求偏导数并令其为零亦可得到正规方程(组)。6.此问题是最小二...

matlab矩阵 AX=B 求解问题是这样的一个问题已知这样的一组数据:x=[8...
1.首先,这里有8个方程,3个未知量,当然你可以用其中任意三个线性无关的方程求出a,b,c的一组值,但是这样我们就浪费了很多数据.2.如果同时求解8个方程肯定无解,但是我们想要找到一个向量Y使得AY与B(B应该是一列向量)最为接近,而AY是A的列向量的一个线性组合,所以此问题转化为在A的列向量所生成...

如何使用matlab,求AX=B?
1。一般情况下,x=a\\b是方程a*x =b的解,而x=b\/a是方程x*a=b的解。例:a=[1 2 3; 4 2 6; 7 4 9],b=[4; 1; 2];x=a\\b,则显示:x=-1.5000 2.0000 0.5000;如果a为非奇异矩阵,则a\\b和b\/a可通过a的逆矩阵与b阵得到:a\\b = inv(a)*b;b\/a = b...

...一个matlab程序,关于一个线性方程组求解AX=B的求解问题
如果A非奇异的话,X=inv(A)*B,inv(A)为求拟运算,或者直接左除,A\\B。

matlab求矩阵Ax=b的解,A为3阶魔方阵,b是(3×1)全1列向量。用rref,inv\/...
A)jb = 1 2 3 矩阵 是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。

求用Matlab解线性代数
所求方程是Ax=b,其中b含有参数a.matlab求解就是输入A,b,则x=A-1b。再代入a=216。过程如下 === >> syms a >> A=[1 -1 -2 3;1 -3 -6 2;1 5 0 -10;3 1 7 4]A = 1 -1 -2 3 1 -3 -6 2 1 5 0 -10 3 1 7 4 >> b=[...

在MATLAB中,方程Ax=B的解可以用哪个命令求得?
>>x=A\\B x = 2.00 3.00;即二元一次方程组的解x1和x2分别是2和3。对于同学问到的用matlab解多次的方程组,有符号解法,方法是:先解出符号解,然后用vpa(F,n)求出n位有效数字的数值解.具体步骤如下:第一步:定义变量syms x y z ...;第二步:求解[x,y,z,...]=solve('eqn1','...

如何用matlab解这个方程组AX=B
求解AX=B,即X=A^(-1)*B 在matlab中输入好数据用X=inv(A)*B就可以了。结果如下:具体程序见附件。

matlab求AX=B
在线性代数中该方程解为: X =A的逆左乘B ,在Matlab中可采用左除运算,X=A\\B,数值效果要比inv(A)*B好,pinv(A)*B是针对A为奇异阵的情况,其中pinv(A)为A的广义逆

矩阵求值 matlab 已知矩阵A和x,求Ax=b,求b的值,用matlab怎么编啊...
可以利用function函数 对于求Ax=b,再不能保证A为可逆情况下,可以利用广义逆的公式,求出A的广义逆

相似回答