解常微分方程
我最近处理了几个在MATLAB中解微分方程的帮助请求。我研究的所有案例都归结为如何将高阶方程转化为一阶方程组。在这篇文章中,我将概述如何完成这个任务和解决问题的方程。我不将讨论ODE求解算法的细节(也许下次)。
内容
简单的系统
让我们从一个简单的线性二阶系统开始,一个运动受限于一维的质量-弹簧系统,一个水平的系统(因此没有重力)。如果为质量为弹簧常数,则系统的运动方程为:
条件,初始和其他
为了解这个方程组,我们需要知道,,,初始条件,如:(也称为位置和速度)。我们来简化一下,即没有外力。我们也设定一些初始条件,,换句话说,从弹簧未拉伸和物体运动开始。最后我得到了这个系统:
变换方程
寻求帮助,我需要建立一个方程组,使我能够使用其中的一个解决数值的颂歌在MATLAB。
为了开始这个变换,我定义一个新变量我要把它代入系统。
我可以推出
现在把ODE系统写成.
初始条件如上所示。
现在我把这两个方程重组成一个向量/矩阵方程
我现在只用,新的矢量(由位置和速度组成)。考虑到这一点,我将首先重新组织现有的方程在左边。
或者说,
试一试!
让我们试一试。设置的值米和k
m = 1;k = 10;
我可以在文件中创建ODE代码,或者我可以将方程设置为匿名函数,这就是我在这里要做的。
springmass = @ (t, z) [z (2);-k * z(1)/ m];
设定初始条件。
ic = [0;1];
解决之间.
Tspan = [0 10];
调用ODE求解器并绘制结果。
[t,y] = ode23(弹簧质量,tspan, ic);情节(t, y(: 1))、标题(的位置和时间)
和速度。
情节(t、y(:, 2))、标题(速度与时间的)
您可以看到图上最左边的点与指定的初始条件匹配。
转换方程
你是否需要重铸问题以适应特定的公式,比如解决ode ?让我们来听听他们的看法在这里.
- 类别:
- distance_learning,
- 如何
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。