求一matlab程序(最小二乘法)

2025-04-16 21:43:33
推荐回答(2个)
回答(1):

>> clear
>> x=[19 ,25 ,31 , 38, 44];
>> f=[19.0,32.3,49.0,73.3,97.8];
>> xx=x.^2;
>> A=[xx;ones(size(x))]';
>> c=A\f';
>> a=c(2);
>> b=c(1);
>> y=a+b*xx;
>> plot(x,f,'.',x,y,'r')

做出的图,点表示原始数值。红线为拟合的直线。

回答(2):

function haha
[T,X]=ode45(@feq,[0,1],[0.1 0.2 0.3])
function xdot=feq(t,x)
a=0;b=0.00001;c=0;del=0.01;pf=15;
if x(3)>=pf&x(1)-x(2)>=0
xdot=[a*del*(x(1)-x(2));b*(x(3)-pf)+c*(x(3)-pf)*(del*(x(1)-x(2)));del*(x(1)-x(2))];
elseif x(3)>=pf&x(1)-x(2)<0
xdot=[0;-a*del*(x(1)-x(2))+b*(x(3)-pf)-c*(x(3)-pf)*(del*(x(1)-x(2)));del*(x(1)-x(2))];
elseif x(3)=0
xdot=[a*del*(x(1)-x(2))-b*(x(3)-pf)-c*(x(3)-pf)*del*(x(1)-x(2));0;del*(x(1)-x(2))];
else
xdot=[-b*(x(3)-pf)+c*(x(3)-pf)*del*(x(1)-x(2));-a*del*(x(1)-x(2));del*(x(1)-x(2))];
end

结果:
T =

0
0.0250
0.0500
0.0750
0.1000
0.1250
0.1500

X =

0.1000 0.2000 0.3000
0.1000 0.2000 0.3000
0.1000 0.2000 0.3000
0.1000 0.2000 0.2999