matlab由x得到y,matlab 已知x、y值以及函数,求未知参数

满意答案

00e27ab806e4881f8254fe7ae8741834.png

1位老农民

2013.10.03

00e27ab806e4881f8254fe7ae8741834.png

采纳率:59%    等级:12

已帮助:5911人

matlab 非线性的拟合有两个命令lsqcurvefit和lsqnonlin。这里用lsqcurvefit(lsqnonlin一样做),先介绍下lsqcurvefit(原理是最小二乘法)

已知数据点:xdata=(xdata1,xdata2,…,xdatan)

ydata=(ydata1,ydata2,…,ydatan)

lsqcurvefit用以求含参量x(向量)的向量值函数

F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T

中的参变量x(向量),使得1/2*∑[a+b*exp(-0.02*k*t(i))-c(i)]^2最小

1.先定义个函数fun

function y=fun(x,t)

y=(x(1)+x(2)*t.^x(3)).*(1-t).^x(4);

2.调用

clc

clear

tdata=[0.0015 0.0073 0.0125 0.0415 0.0725 0.1030 0.1323 0.1607 0.1879 0.2141 0.2392 0.2632 0.2862 0.3081 0.3291];

ydata=[-2.8988 -0.1635 0.0122 0.0174 0.0181 0.0176 0.0170 0.0164 0.0159 0.0153 0.0146 0.0140 0.0134 0.0129 0.0125];

x0=[1 1 1 1];

x=lsqcurvefit('fun',x0,tdata,ydata)

结果a =-12.4986 b =31.6477 m =0.2062

n =250.3035

*****有一个地方x0=[1 1 1 1];这边是x0迭代的初始值即a,b,m,n迭代的初始值,你可以自己修改一下(根据建的模型,找你认为近似的解或可行解带入可以提高结果精度)初始值的不同对解有点影响,但不大

11分享举报

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值