[数学]Euler‘s Method 欧拉方法

1-思想原理

求解一阶的常微分方程ODE,欧拉想出一种数值方法,得到一种线性近似Linear approximation
他并非求解出具体的y的方程,而是根据给定的初始值\((x_0,y_0=f(x_0)\)求得下个想要求得的点\(x_n\)的函数值\(y_n=f(x_0)\),当然这样就得到了想要的点的坐标\((x_n,y_n=f(x_n)\)。
那么他是怎么做的呢?
欧拉是利用倒数的几何意义即斜率来求得下个点的坐标值
欧拉说 下个点的函数值近似等于 \[y_n = y_0 + \frac{dy}{dx}|_{x=x_0} * (x_n-x_0)\]
欧拉是借鉴了 这样的一个事实: \[\frac{y_1-y_0}{x_1-x_0}=tan\alpha\]
欧拉说如果\(h=x_1-x_0\)足够小,那么就结果值越精确

2-案例

下图是一个example,初始值为(0,2),求得在区间[0,1]上的函数值,分成等长的四段,每段长0.25,这里就体现了线性近似(看结果图)

对比图

MATLAB 代码

fun = @(x,y) (x+y);
% 欧拉近似值
re = euler_method(fun,0,2,1,0.25);
fprintf('result is %f\n',re);

% 准确值
xx = 0:0.25:1;
yy = 3*exp(xx)-xx-1;
p1=plot(xx,yy,'b');

legend('Euler','Point','Exact');

% Euler Method
% f 表示一阶常微分方程
% (x0,y0):初始值
% xn要求的函数值的自变量的值
% h 步长
function y = euler_method(f,x0,y0,xn,h)
    n = round((xn-x0)/h);
    y = y0;
    x = x0;
    xa = [];
    xa(1) =x0;
    re = [];
    re(1) = y;

    for i=1:n
        y = y + h*f(x,y);
        x = x + h;
        % 保存段点值,用于绘图
        xa(i+1)=x;
        re(i+1)=y;
    end
    p2=plot(xa,re,'r');
    legend(p2,'ds');
    hold on;%不清除画面
    p3=scatter(xa,re,'*');% 描点
    legend(p3,'ds');
end

Result:

原文地址:https://www.cnblogs.com/tailiang/p/12246792.html

时间: 2024-11-09 01:39:33

[数学]Euler‘s Method 欧拉方法的相关文章

hdu2824 The Euler function(欧拉函数个数)

转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2824 欧拉函数性质: 1:(百科):http://baike.baidu.com/link?url=r-yneKCCyS9N6bhbQCqiZX0V2OCYq9r7iHSzHTSs03H7qRvu1OfUzlOxfVEs2PmR 2:http://www.cppblog.com/doer-xee/archive/2009

HDU2824 The Euler function(欧拉函数)

题目求φ(a)+φ(a+1)+...+φ(b-1)+φ(b). 用欧拉筛选法O(n)计算出n以内的φ值,存个前缀和即可. φ(p)=p-1(p是质数),小于这个质数且与其互质的个数就是p-1: φ(p*a)=(p-1)*φ(a)(p是质数且p|a),因为欧拉函数是积性函数,φ(p*a)=φ(p)*φ(a): φ(p*a)=p*φ(a)(p是质数且p不能整除a),不知怎么理解.. 1 #include<cstdio> 2 #include<cstring> 3 using names

The Euler function(欧拉函数筛)

这题用欧拉函数会超时,要用函数筛. 解析:(转) 定义:对于正整数n,φ(n)是小于或等于n的正整数中,与n互质的数的数目. 例如:φ(8)=4,因为1,3,5,7均和8互质. 性质:1.若p是质数,φ(p)= p-1. 2.若n是质数p的k次幂,φ(n)=(p-1)*p^(k-1).因为除了p的倍数都与n互质 3.欧拉函数是积性函数,若m,n互质,φ(mn)= φ(m)φ(n). 根据这3条性质我们就可以推出一个整数的欧拉函数的公式.因为一个数总可以写成一些质数的乘积的形式. E(k)=(p1

杭电2824--The Euler function(欧拉函数)

The Euler function Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4559    Accepted Submission(s): 1902 Problem Description The Euler function phi is an important kind of function in number theo

The Euler function(欧拉函数)

The Euler function Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 39   Accepted Submission(s) : 19 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description The Euler function

Euler-Maruyama discretization(&quot;欧拉-丸山&quot;数值解法)

欧拉法的来源 在数学和计算机科学中,欧拉方法(Euler method)命名自它的发明者莱昂哈德·欧拉,是一种一阶数值方法,用以对给定初值的常微分方程(即初值问题)求解.它是一种解决常微分方程数值积分的最基本的一类显型方法(Explicit method). [编辑] 什么是欧拉法 欧拉法是以流体质点流经流场中各空间点的运动即以流场作为描述对象研究流动的方法.--流场法 它不直接追究质点的运动过程,而是以充满运动液体质点的空间--流场为对象.研究各时刻质点在流场中的变化规律.将个别流体质点运动过

HDOJ 1787 GCD Again(欧拉函数)

GCD Again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2611    Accepted Submission(s): 1090 Problem Description Do you have spent some time to think and try to solve those unsolved problem a

【游戏物理】欧拉、龙格、韦尔莱

简单介绍在游戏中模拟物理运动的三个常见方法. 欧拉方法 显式欧拉方法 在数学和计算机科学中,欧拉方法,命名自它的发明者莱昂哈德·欧拉,是一种一阶数值方法,用以对给定初值的常微分方程(即初值问题)求解.它是一种解决数值常微分方程的最基本的一类显型方法(Explicit method). 欧拉方法通过记录物体位置和速度,然后在每帧循环期间把速度累加到位置上,从而模拟物体的物理运动. 初中物理内容了,根据此刻速度和加速度,可计算出下一刻的速度和位移差. \[ v_{n+1} = v_n + a_ndt

POJ3090_Visible Lattice Points【欧拉函数】

Visible Lattice Points Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5653 Accepted: 3331 Description A lattice point (x, y) in the first quadrant (x and y are integers greater than or equal to 0), other than the origin, is visible from t