用matlab解一个简单的超定方程

来源:百度知道 编辑:UC知道 时间:2024/05/15 00:18:54
1.24a+1.27b+c=1
1.36a+1.74b+c=1
1.38a+1.64b+c=1
1.38a+1.82b+c=1
1.38a+1.90b+c=1
1.40a+1.70b+c=1
1.48a+1.82b+c=1
1.54a+1.82b+c=1
1.56a+2.08b+c=1
1.14a+1.78b+c=-1
1.18a+1.96b+c=-1
1.20a+1.86b+c=-1
初学matlab ,大家帮忙用matlab解这个超定方程,拟和成一条直线。谢谢大家了。。

对于方程组Ax=b,A为n×m矩阵,如果A列满秩,且n>m。则方程组没有精确解,此时称方程组为超定方程组。线性超定方程组经常遇到的问题是数据的曲线拟合。对于超定方程,在MATLAB中,利用左除命令(x=A\b)来寻求它的最小二乘解;还可以用广义逆来求,即x=pinv(A),所得的解不一定满足Ax=b,x只是最小二乘意义上的解。左除的方法是建立在奇异值分解基础之上,由此获得的解最可靠;广义逆法是建立在对原超定方程直接进行householder变换的基础上,其算法可靠性稍逊与奇异值求解,但速度较快;

A=[...
1.24 1.27 1
1.36 1.74 1
1.38 1.64 1
1.38 1.82 1
1.38 1.90 1
1.40 1.70 1
1.48 1.82 1
1.54 1.82 1
1.56 2.08 1
1.14 1.78 1
1.18 1.96 1
1.20 1.86 1]
b=[1 1 1 1 1 1 1 1 1 -1 -1 -1]'
rank=rank(A)
abc=A\b

结果:
rank =

3

abc =

6.1049
-2.3561
-3.5622

这个是解答矛盾方程:
A'*A*x=A'*B
A'*A A'*B 两个矩阵是方阵!!!

A=[1.24 1.27 1;
1.36 1.74 1 ;
1.38 1.64 1;
1.38 1.82 1;
1.38 1.90 1;
1.40 1.70 1;
1.48 1.82 1;
1.54 1.82 1;
1.56 2.08 1;
1.14 1.78 1;