公式是这样子的:z=a(b-x-y)+x+c*x/b*(b-x-y)+d*x/y*(b-x-y)
其中
x=[1.18 1.29 1.66 1.85 2.04 2.24 2.47 2.74 3.01 3.32];
y=[0.43 0.69 0.81 1.03 1.12 1.21 1.28 1.35 1.42 1.51];
z=[1.29 1.66 1.85 2.04 2.24 2.47 2.74 3.01 3.32 3.69];
求a.b.c.d的值,该怎么使用最小二乘法拟合呢?
Matlab中最小二乘法求非线性多项式系数
答案:1 悬赏:10 手机版
解决时间 2021-02-21 09:58
- 提问者网友:像風在裏
- 2021-02-21 01:31
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 2021-02-21 02:37
%定义要拟合的函数文件fun1.m
function z=fun1(a,x)
z=a(1).*(a(2)-x(1,:)-x(2,:))+x(1,:)+a(3)*x(1,:)./a(2).*(a(2)-x(1,:)-x(2,:))+a(4).*x(1,:)./x(2,:).*(a(2)-x(1,:)-x(2,:));
在命令窗口中输入:
x=[1.18 1.29 1.66 1.85 2.04 2.24 2.47 2.74 3.01 3.32];
y=[0.43 0.69 0.81 1.03 1.12 1.21 1.28 1.35 1.42 1.51];
z=[1.29 1.66 1.85 2.04 2.24 2.47 2.74 3.01 3.32 3.69];
a0=[0.1,0.1,0.1,0.1]; %拟合的初值
lsqcurvefit('fun1',a0,[x;y],z)
结果为:
ans =
0.555125208646224 4.266319694348778 -0.370303258582425 -0.145775833712440
function z=fun1(a,x)
z=a(1).*(a(2)-x(1,:)-x(2,:))+x(1,:)+a(3)*x(1,:)./a(2).*(a(2)-x(1,:)-x(2,:))+a(4).*x(1,:)./x(2,:).*(a(2)-x(1,:)-x(2,:));
在命令窗口中输入:
x=[1.18 1.29 1.66 1.85 2.04 2.24 2.47 2.74 3.01 3.32];
y=[0.43 0.69 0.81 1.03 1.12 1.21 1.28 1.35 1.42 1.51];
z=[1.29 1.66 1.85 2.04 2.24 2.47 2.74 3.01 3.32 3.69];
a0=[0.1,0.1,0.1,0.1]; %拟合的初值
lsqcurvefit('fun1',a0,[x;y],z)
结果为:
ans =
0.555125208646224 4.266319694348778 -0.370303258582425 -0.145775833712440
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯