Matlab在微分方程中的应用
2017-04-25孙瑞鹏
摘 要:Matlab是美国MathWorks公司出品的商业数学软件,是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。利用Matlab强大的图形处理功能,可以绘制函数图形,用于数据可视化,并利用豐富的数学运算函数来求解各种类型的微分方程,展示了Matlab工具在微分方程计算中的优越性。本文首先介绍了Matlab在简单一阶常微分方程中的应用,其次介绍了在含指数微分方程中的应用,之后介绍了其在解决微分方程数值解问题中的应用,并简单介绍了Rumge-Kutta法,梯形法则,同时运用了Matlab出色的绘图功能,将所求解问题可视化,清晰直观。
关键词:Matlab 微分方程 Runge-Kutta法
MatLab软件在作图和数值计算上有其它软件无法比拟的优势,例如,闫金亮[1]的文献介绍了Matlab在求解常微方程、利用Matlab来描绘常微分方程解曲线及方向场、利用Matlab描绘常微分方程奇解的几何意义等的软件用途,王亚男[2]的文献介绍了通过Matlab软件的辅助,设计程序,用欧拉公式计算微方程的近似解与解析解,用二阶-库塔公式计算微分方程的近似解与解析解。本文从实际出发,介绍了利用Matlab解决求微分方程的问题。
一、Matlab在简单一阶微分方程中的应用
Matlab能够解决简单的一阶线性微分方程的问题。其解决的原理并不复杂。在确定了自变量与因变量后,只需将一阶导变量与常变量分离,对等号两边的代数式同时积分,即可得出方程的解。
例1.:y=2x^2+x
解:设计程序如下:
syms x y
y=dsolve(‘Dy=2*x^2+x,x)
diff((y,x)-2*x^2-x)
simplify(diff(y,x)-2*x^2-x)
x=0:;
输出结果得:y=(x^2*(4*x+3))/6;
所作图像如下图:
二、Matlab在含指数微分方程中的应用
在解决含指数的微分方程中,Matlab同样有很好的作用。其解决的原理与解决一阶线性微分方程有相类似之处。首先定义自变量x,因变量y以及微分函数dsolve,对于本题,可以通过常数变易法,先解出的通解,再根据此原理得出函数的特殊解P=2x,即可对题目进行求解。
例2.
解:设计程序如下:
Syms x y
y=dsolve(‘Dy=2*x*exp(-x^2)+x*y,x)
siff(y,x)-2*x*exp(-x^2)+x*y
simplify(diff(y,x)+x*y-2*x*exp(-x^2))
所作图像如下图:
三、Matlab在微分方程初值问题中的应用
对于常微分方程的初值问题,实际上就是要求未知函数y(x)在区间[a,b]上的一系列离散点(节点)上函数值y(xk)的近似值yk(k=1,2,3....,n)的问题。(a=x0 (1) 由此方法求解方程是不合适的,但其满足二阶Runge-Kuta方法的计算公式。现给出计算公式: (2) 其中c1,c2,均为常数,为简单起见,常令c1=c2=,=1。将c1,c2以及a的值带入可根据该方法解决微分方程的初值问题数值解求解的问题。 例3.求解微分方程初值问题的数值解 ,求解范围为区间[0, 1]。 解:设计程序如下: fun=inline(x^2+y-1,x,y); [x,y]=ode23(fun,[0,1],2); plot(x,y,o-) y=C9*exp(x)-2*x-1 程序运行绘图如下图: 拓展:经典的四阶Runge-Kutta算法在求解微分方程初值问题的数值解时同样有着很强的作用。给出四阶Runge-Kutta法的四阶算法,为: (3) 对于经典的四阶,或者是n阶的Runge-Kutta法其中的k1,k2,k3,k4之前的系数满足梯形法则公式,给出梯形法则的公式: (4) 可将其等同理解为被积函数近似的看做一条直线,而被积的部分近似的看做梯形。若是题目要求得到更加精确的数值,可以将要积的区间分成更多个小的区间,再在每个区间之内个别估计;那么可以将原公式改进为: (5) 在Runge-Kutta法,微分方程的求解问题,定积分的估算问题等,都可以借助梯形法则来帮助求解问题。 四、总结 从上面三个例题中可以发现,Matlab在解决微分方程的相关问题中,确实发挥着极其重要的作用,其不仅可以解决较为复杂的微分方程的求解问题、在解决微分方程的初值问题时找到较为精确的数值解,还可以使函数可视化,帮助更好的理解题目与解题思路。因此,Matlab已成为解决复杂微分方程的问题的重要工具。 参考文献 [1]闫金亮.Matlab在常微分方程教学中的应用[J].武夷学院学报,2012,(02):95-99. [2]王亚男.MATLAB在常微分方程中简单应用[J].福建电脑,2011,(09):194+189. 作者简介:孙瑞鹏(2000.09-),男,汉族,河南省实验中学,研究方向:Matlab在微分方程的应用。