帮忙用Matlab拟合下面的方程

学习 时间:2026-03-30 17:07:40 阅读:4298
帮忙用Matlab拟合下面的方程 P1 = linspace(-4,4,50); T1 = (1-P1+2*P1.^2).*exp(-.5*P1.^2)尽量用最小二乘拟合如果正确还有追加的100

最佳回答

欣慰的乌龟

眯眯眼的画笔

2026-03-30 17:07:40

直接用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) 自己想手算的话,见附录。附录:xm我用b代替 (dx/dt)/x/(r-r/b*x)=1 dx/[rx(1-1/b*x)]=dt [1/x+(1/b)/(1-x/b)]dx=r*dt 积分得 ln(x)-ln(1-x/b)=r*t+C -ln[(1-x/b)/x]=r*t+C ln[1/x-1/b]=-r*t-C 两边指数得 1/x-1/b=C1*exp(-r*t) 1/x=1/b+C1*exp(-r*t) x=b/[1+b*C1*exp(-r*t)] 即 x=b/(1+exp(-r*t)*C1*b)

最新回答共有2条回答

  • 糟糕的巨人
    回复
    2026-03-30 17:07:40

    直接用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) 自己想手算的话,见附录。附录:xm我用b代替 (dx/dt)/x/(r-r/b*x)=1 dx/[rx(1-1/b*x)]=dt [1/x+(1/b)/(1-x/b)]dx=r*dt 积分得 ln(x)-ln(1-x/b)=r*t+C -ln[(1-x/b)/x]=r*t+C ln[1/x-1/b]=-r*t-C 两边指数得 1/x-1/b=C1*exp(-r*t) 1/x=1/b+C1*exp(-r*t) x=b/[1+b*C1*exp(-r*t)] 即 x=b/(1+exp(-r*t)*C1*b)

上一篇 x²+4x-1=0 公式法

下一篇 禁止放羊。(猜一中国古代作家名)