【求助高手】如何用MATLAB求y=ax^0.5+bx模型的拟合系数a,b?

2025-04-10 01:05:20
推荐回答(4个)
回答1:

function s=hansh(x,r)
a=x(1);
b=x(2);
s=a.*r.^0.5+b.*r;
保存为hanshu.m
t=[4,6,8,10,12,15];
y=[19,22,27,33,36,40];
x0=[1 1];
[x,resnorm]=lsqcurvefit(@hansh,x0,t,y)
保存为cesh.m

在命令窗口中输入cesh
结果:
x =

7.7600 0.7103

resnorm =

5.1186
x是两个系数的值,resnorm表示拟合曲线的残差(表示拟合值和实际值的差距,越小越好)

回答2:

%将你的所有数据代入方程,会得到一个关于a,b的二元一次方程组(你给出六个数据,就有六个方程),再将方程组写成矩阵形式AX=b
x=[4,6,8,10,12,15]'; %转成列向量
y=[19,22,27,33,36,40]'; %转成列向量
A=[sqrt(x),x]; %矩阵
X=A\y; %求a,b,即求解线性方程组,方程数超过变量数,超定,MATLAB会自己用最小二乘法求解
a=X(1)
b=X(2)
plot(x,y,'*',x,a*sqrt(x)+b*x)
legend('原始数据点','拟合曲线')

回答3:

你的函数没声明
你应该建立一个hansh.m放在你的工作环境下(代码的前四行)例如work文件夹
在主界面输入后四行

回答4:

直接用回归命令regress即可,返回结果就是回归系数。
x,y都用列向量,然后用命令
[k,b]=regress(y,x),就行了。