帮忙用Matlab拟合下面的方程 谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/22 19:54:51
P1 = linspace(-4,4,50);
T1 = (1-P1+2*P1.^2).*exp(-.5*P1.^2)

尽量用最小二乘拟合

如果正确还有追加的100

直接用cftool就可以看到曲线拟合的界面了,输入数据后就可以选择拟合的方法了,直接可以得到系数。

正着做:给一个r和xm,通过ode45求得t,x,然后再与你的数据对比。最终选择一个合适的r和xm。就要一直变参数,我觉得比较难。至少来说r和xm的选择范围太大了。而且ode45得到的t,x与你的实验t,x肯定不是同一个t下面的数据,也不好比较。

不过基于你的方程比较简单,我们可以直接解出它的通解来:
>> xx=dsolve('Dx/x=r-r/b*x')
得到:
xx =
b/(1+exp(-r*t)*C1*b)

自己想手算的话,见附录。

===================================
===================================
以下拟合
然后再用你的17组数据,拟合出下面的r,b,c1来。
最终就可以确定你的r,xm了。这里的xm=b。
下面是通过数据来拟合
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function F=zhidao_joans321(a,t)
r=a(1);
b=a(2);
C1=a(3);

F=b./(1+exp(-r*t)*C1*b);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

你设好t,x后,比如
t=1:17;
x=sin(t);
%在Matlab下输入:

[A,res]=lsqcurvefit('zhidao_joans321',ones(1,3),t,x);
A
r=A(1)
xm=A(2)

=