罗兰关于MATLAB的艺术

将想法转化为MATLAB

解常微分方程

我最近处理了几个在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 ?让我们来听听他们的看法在这里




MATLAB®7.10发布

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。