matlab拟合函数求系数,Matlab已知数学模型拟合公式系数(求助)

目前手中有很多组数据,暂且拿一组举例:

已知:

x =[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5];

y =[1274.4,1261.97,1250.14,1232.4,1212.7,1183.1,1153.5,1114.1,1069.7,1025.4,980.6,909.8,828.4,708,534.5,80.2];

曲线符合的公式是:y=b(1)*(1+b(2)*x+b(3)*x.^2).^b(4);

要求:用matlab拟合出系数b(1),b(2),b(3),b(4)的值。

我已经编写了两组程序,但是运行结果都不理想,出现了复数,误差很大,而且并不知道错在哪里

程序一:

x=[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5]';

y=[1274.4, 1262.0, 1250.1, 1232.4, 1212.7, 1183.1, 1153.5, 1114.1, 1069.7, 1025.4, 980.6, 909.8, 828.4, 708.0, 534.5, 80.2]';

fun=inline('b(1)*(1+b(2)*x+b(3)*x.^2).^b(4)','b','x');

b0=[10,0.01,0.001,0.001];

[x,resnorm]=lsqcurvefit(fun,b0,x,y)

程序二:

1.新建M文件

function f=lsqcurvefun(b,x)

f=b(1)*(1+b(2)*x+b(3)*x.^2).^b(4);

2.输入命令

x=[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5]';

y=[1274.4, 1262.0, 1250.1, 1232.4, 1212.7, 1183.1, 1153.5, 1114.1, 1069.7, 1025.4, 980.6, 909.8, 828.4, 708.0, 534.5, 80.2]';

b0=[1,0.01,0.001,0.001];

x=lsqcurvefit('lsqcurvefun',b0,x,y)

2a39720edc801e3a55bd2aeffaaaef89.gif

2009-7-15 23:07 上传

点击文件名下载附件

30.54 KB, 下载次数: 3280

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值