主题:!!请教怎么用matlab 拟合logistic方程阿!!!
noforlife
[专家分:0] 发布于 2007-11-14 22:15:00
问题同上,就是那个最普通的人口的Logistic 怎么算r 和k
回复列表 (共5个回复)
沙发
beaman [专家分:0] 发布于 2007-11-16 14:59:00
这个就是拟合问题吧,用最小二乘法拟合,先求解那个微分方程,得到一个好像是log(M)=a+bt,t 和 M已知,就可以用最小二乘求出a 和b 了!
板凳
noforlife [专家分:0] 发布于 2007-11-17 14:52:00
这样的话得出来的是个线性函数,会不会得出来的失真比较大
3 楼
沉睡的1412 [专家分:0] 发布于 2007-11-17 16:55:00
不会存在所谓的“失真”
这是将非线性最小二乘变成线性最小二乘的一种方法
将自变量与因变量同取对数再进行线性的最小二乘拟和
例如
y = exp(a * x)
同取对数 有ln(y) = a * x
令x' = x,y' = ln(y) 则(x',y')组成的是一个线性模型
然后按照线性最小二乘来计算a的值
不过 MATLAB里面有求非线性最小二乘的函数lsqcurvefit
也可以试试这个
4 楼
beaman [专家分:0] 发布于 2007-11-17 20:13:00
嗯,没错,其实那个方程还是非线性的,只是通过变形做为线性的来做,正如楼上所说的还有两个命令,
Matlab提供了两个求非线性最小二乘拟合的函数:lsqcurvefit和lsqnonlin。两个命令都要先建立M-文件fun.m,在其中定义函数f(x),但两者定义f(x)的方法是不同的,其基本原理还是最小二乘法。
5 楼
noforlife [专家分:0] 发布于 2007-11-19 10:14:00
有高人就是好
我来回复