如何使用Matlab编程进行参数拟合 (小木虫转载)

如何使用Matlab编程进行参数拟合 

 

1前言
2基本概念和原理
3主要内容
4实例
5涉及的文件



1前言


之前帮疯学网做过一个利用Matlab编程进行参数拟合 的教程,由于疯学网好像倒闭了,希望之前做的工作不要白费,这里拿出来分享下,希望能对虫友的学习、科研工作有所帮助。其他的不多说,言归正传,下面从原理和实例对如何使用Matlab编程进行参数拟合进行讲解。


2基本概念和原理

所谓参数拟合,就是已知试验或者真实数据,然后寻找一个模型对其规律进行模拟,求取模型中未知参数的一个过程。根据模型的复杂程度我分成以下几类讲解:
代数方程模型
线性模型
非线性模型
单变量,单目标问题
多变量,单目标问题
多变量,多目标问题,共享参数
复数模型拟合
微分方程模型
简单微分方程参数拟合
复杂微分方程参数拟合

3主要内容



3.1代数方程模型

y=f(x,β)
x, n维自变量x=[x1,x2,…,xn]'
β,p维参数向量β =[β1, β2,…, βn]'
y,m维因变量y=[y1,y2,…,yn]'
f,m维函数向量f=[f1,f2,…,fn]'

Matlab 求解函数
线性最小二乘法:ployfit, regress
非线性最小二乘法:fit, lsqnonlin,lsqcurvefit,nlinfit
nlintool,fmincon


3.2微分方程模型

dx/dt=f(t,x,β,u)  x(t0)=x0
x, n维状态变量x=[x1,x2,…,xn]'
x0, n维状态变量初值x=[x10,x20,…,xn0]'
β,p维参数向量β =[β1, β2,…, βp]'
u,r维操作变量y=[u1,u2,…,um]'
f,ODE方程m维函数向量f=[f1,f2,…,fm]'

对于给定β,由龙格-库塔积分可得x(t)
y(t)=g(x(t), β) 
y为m维输出量y=[y1,y2,…,yn]'
g为输出量y与状态变量x之间非线性关系的函数向量g=[g1,g2,…,gn]'
用导数法和积分法将ODE问题转化为代数方程问题


3.2优化准则和参数初值确定方法

优化准则:最小二乘法,极大似然,概率密度函数
非线性模型必须采用非线性回归的方法
参数初值确定方法
(1)根据模型结构 和本质
描述物理系统的模型的结构和本质可能指明未知参数的取值范围
(2)模型方程的渐进行为
例如指数衰减模型yi=k1+k2exp(-k3*xi)
xi-->∞,yi约为k1, xi-->0,yi=k1+k2(1-k3*xi),利用接近0的x及对应y回归,结合k1,就可得到k1 k2 k3初值
(3)模型方程的变换
把非线性系统转化为线性系统,线性最小二乘结果作为非线性估计的初值
(4)直接搜索,全局算法
如果对参数不了解,可用直接搜索或者全局(多起点,遗传等算法处理)


3.4决定性指标



回归均值的总偏离 
Ne:实验点数目,
yei,yci,i次实验值与计算值

由于公式比较难显示,见附件ppt里面内容
如何使用Matlab编程进行参数拟合

4实例



4.1线性拟合函数:regress()

调用格式:b=regress(y,X)
[b,bint,r,rint,
  • 6
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值