飞码网-免费源码博客分享网站

点击这里给我发消息

利用matlab建立欧拉法(Euler’s Method)的理论方法与步骤

飞码网-免费源码博客分享网站 爱上飞码网—https://www.codefrees.com— 飞码网-matlab-python-C++ 爱上飞码网—https://www.codefrees.com— 飞码网-免费源码博客分享网站

简介和历史

莱昂哈德-欧拉,是18世纪最多产的数学家之一,他发明了欧拉法。对于不知道的人来说,他是一位非常杰出的数学家,他对世界数学的影响是人们无法忽视的。

"读欧拉,读欧拉,他是我们所有人的大师"。
                                                            皮埃尔-西蒙-拉普拉斯

上面这句话正确地描述了欧拉在数学领域的工作有多么伟大的重要性。他一生写了大约500本书籍和论文。欧拉的方法并不只是以他命名的一个概念。以他名字命名的概念还有很多,欧拉常数、欧拉三角线、欧拉运动方程、欧拉图形等等。他的工作领域包括天文学、对数、微积分、月球运动等多个领域。他在数学界的影响如此之高,也就不足为奇了。他的概念使得数学应用在今天人人都能理解。欧拉法就是这样的一个概念,我们将在本篇博客中用MATLAB来实现!

快速了解欧拉方法

Euler's方法是一种用数值方法解决一阶初值问题(IVP)的技术。Euler's法的标准方程形式给出为

y' = f(x,y)

其中y(x0)=y0是初始值。我们需要找到y在'n'点的值,即y(xn)。

现在,我们只知道一个点(x0,y0)。下面的蓝色图形是 "Exact"(图中的解决方案曲线),红色/切线是欧拉法。我们的目的是沿着这个蓝色图形找到点的集合。让我们来看看找到解决方案的步骤。

我们用切线(红线)作为我们唯一已知点(x0,y0)的近似值。
我们在这条红线上向前移动一段短距离,这段距离接近我们的真解(x1,y1)。这个短距离就是步长,用'h'表示。
为了获得更好的近似值,请将h的值尽可能的小。
现在我们用点(x1,y1)以类似的方式绘制点(x2,y2)。

重复上述步骤,直到到达最后一点(xn,yn)。


Euler's Approximation graph
图片1:欧拉的近似值

我们将用这种方法来求一个基本RC电路的微分方程的解。让我们看看如何解决
 


例子

我们要对下面给出的电路中的电容上的电荷进行近似计算,并利用MATLAB绘制出图形。然后比较一下Exact和Euler的图形。

RC电路
RC circuit
图片2:RC电路

给定RC电路的微分方程

在电路中,R代表电阻,单位是欧姆,C是电容,单位是法拉,i(t)是通过电阻的电流,单位是安培,电容上有压降Q/C。Q(t)是在时间t时电容器上的电荷。当开关在时间t=0时闭合,应用基尔霍夫定律,我们得到公式。

E(t)=IR+Q/C  (1)

通过几步数学运算,我们就可以得到如下欧拉法形式的方程。

dQ/(dt )=(E(t))/R-Q/RC (2)

我们要用式(2)来编写代码,并在MATLAB中绘制出近似图形
 

给定参数

E = 200 V. R=1500Ω。C = 0.0025F。
初始条件:在t=0时,Q=0。t=0时,Q=0
找出t=1时的Q。

MATLAB代码的步骤

1.在MATLAB中定义方程2
2.dy = @(t,y)E0/R - y/(R*C)。
3.设置初始和最终时间值a=0,b=1,y0=0。
4.步数N=10
5.因此,步长h=(b-a)/N  步长h=(b-a)/N。
6.运行for循环,直到N个步骤
7.f(x+h)=f(x)+f' (x)*h(以h为增量的t)
8.绘制(t,y)--Q值与时间t的关系。
9.对真值重复同样的步骤,并列出如下方程。这是通过数学分析的一阶微分。
10.dy = E0 * C * (1 - exp(-t/(R*C)))。

 用下图验证一下图示!


MATLAB模拟结果
MATLAB simulation result
图3.MATLAB仿真结果 MATLAB仿真结果

您也可以绘制一个表格来显示N个步数的Q在时间't'的值。要做到这一点,你可以使用MATLAB中的函数表。 我们在下面展示了这两种方法的数值!


精确的欧拉值

Steps Time Charge at Capacitor – Exact Charge at Capacitor - Euler
1 0 0 0
2 0.1 0.013157 0.013333
3 0.2 0.025968 0.026311
4 0.3 0.038442 0.038943
5 0.4 0.050587 0.051238
6 0.5 0.062413 0.063205
7 0.6 0.073928 0.074853
8 0.7 0.08514 0.08619
9 0.8 0.096057 0.097225
10 0.9 0.10669 0.10797
11 1 0.11704 0.11842

结论

上面的图和表显示了我们可以准确地计算上述RC电路中电容器处的电荷。因此,我们可以放心地使用欧拉法来求解一阶微分方程,即使是在我们不知道确切解的问题上。
 
飞码网-免费源码博客分享网站 爱上飞码网—https://www.codefrees.com— 飞码网-matlab-python-C++ 爱上飞码网—https://www.codefrees.com— 飞码网-免费源码博客分享网站
赞 ()
内容页底部广告位3
留言与评论(共有 0 条评论)
   
验证码: