大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
在此处,t,y是最终要通过ode45函数得到的结果。odefun是要求解的函数,英文span是跨度的含义,time是时间的含义。因此,顾名思义,tspan 表示时间的跨度,即时间的范围。而y0则便是要求解y的初值。即计算给定初值的函数在给定时间范围内的值。
如果还不是很清楚,那么,可以看官网给的一个简单的例子。
y’=2t
t=[0 5]
y(0)=0
对于这样的一个一阶导的函数,程序和结果如下:
但由于该方程简单,因此也可以直接将2t写入主程序中。即下图所示:
上述是求一阶导的,那么如果相求二阶导的呢。
接下来,这个例子就是二阶微分方程了。方程如下所示:
y”-(1-y^2)y’+y=0
y(0)=2,y'(0)=0
t=[0 20]
对于该方程,采用ode45求解的思路为:让y=y(1),y’=dy(1)=y(2),y”=ddy(1)=dy(2),即y的自身为y(1),y的一阶导赋值为y(2),y的二阶导赋值为y(3),从而将y的二阶导转化为y(2)的一阶导。
因为龙格库塔法是用来求一阶导的。理论内容可以参考数值分析等的书籍。通过将二阶导降阶成为一阶导,再用龙格库塔法ode45实现求解。
回到例子,则上述方程可表示为
dy(1)=y(2)
dy(2)=(1-y(1)^2)y(2)-y(1)
其求解程序和结果如下图。
那么对于求解方程组即方程中存在分段函数,又该怎么处理呢。这将在后续进行记录。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234298.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...