从系列:在MATLAB中求解ODEs
克利夫莫勒,数学工程
ODE1实现了Euler方法。它介绍了ODEs的数值方法和ODE求解器的MATLAB套件。以指数增长和复利为例。
你好。我是克里夫·莫勒尔,创始人之一兼首席数学家在The MathWorks公司。这一系列的影片即将在MATLAB求解常微分方程。我们可以通过回顾导数的定义开始。在一个点处的函数的导数是切线于该函数在该点的曲线的斜率。
我们的数值近似将依赖于图的割线斜率。这是一条穿过两点的线,中间有一段距离h。我们在继续的时候,会有很多关于步长h的讨论。重要的是要认识到,当h为0时,割线的斜率接近切线的斜率。
该蠕动等号手段近似等于。T0是我们正在寻找的近似点。在t0的导数的值是大约等于割线的斜率。割线的斜率是在超过在t值的变化的y值的变化。在y值的变化是y的两个值之间的差。在t值的变化是步长小时。
如果我们重写这一点,我们在点T0得到y的值加h为约等于y的值在t0加上H与Ÿ黄金的价值在t0。这是我们的第一个数值方法,欧拉法的基础。
欧拉是18世纪瑞士数学家,也许他那个时代最有影响的数学家。他做了一个广泛的数学,物理和天文学领域的重要贡献。他发明的功能的概念,例如。
这个微分方程是由两个变量t和y的函数f给出的,一般来说,任务是找到一个导数等于f的函数y。现在,有很多函数y的导数等于f。所以,如果有一个初始条件,一个点t零,或t0,和一个值y0,初始条件是y在t0应该等于y0。
这里有一些例子。复利率问题就是利率乘以y,这里t和y的函数实际上并不依赖于t,它在y中是线性的,初始条件是在时间0。有一个指定的y值,比如100美元。这就是复利问题。
这里的逻辑方程。这里非线性方程,F T和y再次不取决于吨。这是一个常数乘以y减去另一个常量乘以y平方。这就是逻辑方程。再次,该值在0假设的Y 0等于1规定。
这里还有一个非线性方程。的T F和Y为t的平方加y平方。这是不可能找到一个解析解这个方程。我们将使用这些数值方法找到了一些解决这个方程。初始条件,Y在0是等于0。这是T和y的函数的一个例子。
欧拉的方法实际上是不实际的数值计算方法,在一般。我们只是用它来让我们开始考虑基本数值方法的思路。欧拉方法涉及点吨子n中的序列,是由固定步长h分离。然后Y副n是近似在t子n中的溶液的值。
近似来自割线,Y和以步长小时的值的差的比率的斜率。微分方程表示,该比率应该是函数在t子N的值。如果我们重新排列这个等式,我们得到欧拉法,即YN加1 YN加H与F。对于d子n和Y副n时功能。这是欧拉法。
我们现在准备好了第一个MATLAB程序ODE1。它之所以被称为ODE1,是因为它是我们的第一个程序,也是因为它每一步计算定义微分方程的函数f。有五个输入参数。第一个是f,一个定义微分方程的函数。这就是所谓的匿名函数。我一会儿再谈。
其他四个是标量数值。前三个定义了集成的间隔。我们从0开始,按h到t的步骤。第五个输入参数是y0,初始值。输出是一个向量。向量yout是解在区间点上的值。
我们通过把Y0,初始值,为y,然后把Y考虑输出向量开始。函数的主体是一个for循环。吨从t0变为在H高达步骤的T最终一步短,然后通过代码的主体中的最后通道需要吨到T最终。
我们评估在t和y的函数f。这给了我们一个斜率S。s是斜率。下面是欧拉的一步。以y的当前值。添加H与斜率。这给了我们y的新值。然后,y被追加到YOUT。此MATLAB结构与方括号需要向量y,增加了另一个值到它,使它的一个元件更长的时间,并提出在YOUT结果返回。这是整个代码。 This is it. This is ODE1 that implements Euler's method.
任何MATLAB ODE解算器的第一个参数都是指定微分方程的函数名。这称为函数句柄。获取函数句柄的最简单方法是使用使用与号或at符号创建的匿名函数。所有的微分方程都包含两个变量t和y的匿名函数,所以在括号t逗号y闭括号处有f等于。接下来是任何涉及t或y的表达式,其中许多并不依赖于t。
因此,这里的定义我们的利益问题的匿名函数。我们可以只评估这就像任何普通的功能。当y等于1,1 f是0.06。下面是取决于两者是叔和y的函数的例子。该功能可以包括具有值的常量。所以在这里我们可以定义两个常量。然后我们可以使用这些两个常量定义的逻辑方程,f表示乘以y减去B乘以ÿ平方。再次,这是实际上不依赖于T时的自主式。
让我们看看如何欧拉法和ODE1工作在这个简单的例子中,Y黄金等于2Y为0的初始条件y上介于0和3。我们定义匿名函数的间隔t等于10,T f和y等于2Y。初始条件是T0等于0。我们将采取1.进入的步长T最终等于3,起始于Y0等于10.下面是我们对ODE1通话。
我们有一个动画显示这些步骤。从t0等于0,y0等于10开始。这是我们的第一点。我们评估那里的功能。我们得到20的斜率。是2乘以10。我们在第一步上做一个长度为1的欧拉步。我们到了第二个,0.30。评估那里的功能。2乘30等于60。那是我们的斜坡。
走第二步去Y2。Y2是90.评估函数存在。获得2次90 180。这给了我们斜率。以跨越与斜坡间隔的台阶,让我们到第三点。第三点是270而这也是整合的结束。所以,这三个欧拉数步t0到T最终得到的。
欧拉方法实际上和计算复利是一样的。所以让我们做一个复利问题。定义利率。使用该利率定义我们的匿名函数。从时间0开始。一个月一步走。去10年。从100美元开始。这是我们用ODE1计算复利的结果。一共121个号码。
MATLAB实际上有一个查看美元和美分的格式。所以在这里他们是美元和美分。从100美元开始,每个月复利,我们只得到超过180美元。我来策划一下。所以我想要一个月的时间向量。
实际上我想将它用简单的利益进行比较。因此,这里是你如何计算单利,每月$ 0.50。然后现在我们绘制这两个。因此,直线是单利,获得高达$ 160而蓝线是复利。有一个轻微向上弯曲,让我们上至$ 180美元。有一个点,每月在这里,为大家展示欧拉的方法,其中,正如我所说的,是同样的事情,计算复利的结果。
最后,这里有一个练习。找到产生线性增长的微分方程。使用ODE1重新运行这个例子两次,一次计算复利,一次计算单利。
也可以从以下列表中选择网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。
本网站使用Cookies来改善您的用户体验,个性化的内容和广告,并分析网站流量。通过继续使用本网站,您同意我们使用Cookie。请参阅我们的隐私政策了解更多有关cookies和如何更改设置的信息。