MATLAB最小2乘问题 跪求 !!!!!!

来源:百度知道 编辑:UC知道 时间:2024/09/21 19:40:09
方程 X+aY=b X数据为3.278 3.337 3.390 3.679 Y数据为4.513 7.820 11.184 14.718 怎样用MATLAB程序求出a,b值

等等,我调好后给你。 记得,是我先说的啊。
clear;
clc;

x=[3.278 3.337 3.390 3.679];
y=[4.513 7.820 11.184 14.718];
N=length(y);
A=[ones(1,N);-y]';
B=inv(A'*A)*A'*x';

b=B(1)
a=B(2)
y1=(b-x)/a;

plot(x,y,'*');
hold;
plot(x,y1);

x=[3.278 3.337 3.390 3.679 ]';%转成列向量
y=[3.278 3.337 3.390 3.679 ]';%转成列向量

%构造矩阵K
K=[ones(size(y)),-y];
ba=K\x;
b=ba(1)
a=ba(2)

xx=b-a*y;
plot(x,y,'r*',xx,y)
xlabel('x')
ylabel('y')

%本例的思想:
X+aY=b 可写成X=b-aY
对于每一个数据点(Xi,Yi)都满足上式,把点坐标代入,那么可以写出4个含有a,b的二元一次方程组。这里就碰到了四个方程,两个未知数是一个超定方程组,可以用最小二乘法进行求解。
你可以把它写成矩阵形式就是
X=K*ba,这里最关键就是K的构造。你看上面的计算结果K,就知道怎么回事了。

另外matlab对于求解超定方程组,直接用矩阵除法就可以了。它本质就是用最小二乘法求解。