欧拉法

欧拉法
欧拉法

欧拉法的MATLAB实现

班级:123082--04 姓名:应业敏学号:20081001088

摘要:

在数学和计算机科学中,欧拉方法(Euler method)命名自它的发明者莱昂哈德·欧拉,是一种一阶数值方法,用以对给定初值的常微分方程(即初值问题)求解。它是一种解决常微分方程数值积分的最基本的一类显型方法(Explicit method)。欧拉法(euler method)是以流体质点流经流场中各空间点的运动即以流场作为描述对象研究流动的方法。它不直接追究质点的运动过程,而是以充满运动液体质点的空间——流场为对象。研究各时刻质点在流场中的变化规律。将个别流体质点运动过程置之不理,而固守于流场各空间点。通过观察在流动空间中的每一个空间点上运动要素随时间的变化,把足够多的空间点综合起来而得出的整个流体的运动情况。

基本思想:

基本思想是迭代。其中分为前进的EULER法、后退的EULER法、改进的EULER法。所谓迭代,就是逐次替代,最后求出所要求的解,并达到一定的精度。误差可以很容易的计算出来。

特点:

单步,显式,一阶求导精度,截断误差贰阶

缺点:

欧拉法简单地取切线的端点作为下一步的起点进行计算,当步数增多时,误差会因积累而越来越大。因此欧拉格式一般不用于实际计算。

改进欧拉格式:

为提高精度,需要在欧拉格式的基础上进行改进。采用区间两端的函数值的平均值作为直线方程的斜率。改进欧拉法的精度为二阶。

算法为:

微分方程的本质特征是方程中含有导数项,数值解法的第一步就是设法消除其导数值,这个过程称为离散化。实现离散化的基本途径是用向前差商来近似代替导数,这就是欧拉算法实现的依据。欧拉(Euler)算法是数值求解中最基本、最简单的方法,但其求解精度较低,一般不在工程中单独进行运算。所谓数值求解,就是求问题的解y(x)在一系列点上的值y(xi)的近似值yi。对于常微分方程:

,x∈[a,b]

y(a) = y0

可以将区间[a,b]分成n段,那么方程在第x i点有y'(x i) = f(x i,y(x i)),再用向前

差商近似代替导数则为:,在这里,h是步长,即相邻两个结点间的距离。因此可以根据xi点和yi点的数值计算出

y i+1来:

,i=0,1,2,L

这就是欧拉格式,若初值y i+ 1是已知的,则可依据上式逐步算出数值解y1,y2,L。

为简化分析,人们常在y i为准确即y i = y(x i)的前提下估计误差y(x i+ 1) ? y i + 1,这种误差称为局部截断误差。

如果一种数值方法的局部截断误差为O(h p + 1),则称它的精度是p阶的,或称之为p阶方法。欧拉格式的局部截断误差为O(h2),由此可知欧拉格式仅为一阶方法。

欧拉公式:

且(i=0,1,2,…,n-1)

局部截断误差是O(h2)

欧拉格式matlab程序为:

x=zeros(1,11);

y=zeros(1,11);

x(1)=0;

y(1)=0;

h=0.1;

for n=1:10

x(n+1)=x(n)+h;

y(n+1)=y(n)+h*feval(@myf4,x(n),y(n));

end

E=[x,y]

y1=fz(x)

实例:

用欧拉格式解方程:

10(1)(0)0

y x y y '=-??

=?,

并与准确解y(x)=e 2x

画图比较。 解:

微分方程的函数文件:

function z=@myf4(x,y) z=10*x.*(1-y);

准确解的函数文件:

function fz=fz(x) fz=1-exp(-5*(x.^2)); 在matlab 上运行后,结果为:

准确解:

y1 =

0 488 513 564 607 671 834 1372 1592 1826 2433

Euler 格式:

E =

Columns 1 through 12

0 1 2 3 4 5 6 7 8 9 10 Columns 13 through 22

0 485 503 542 580 647 805 1123 1362 1578 1890 在matlab 中图像比较为:

结果:

由上图我们可以看出,用欧拉方法求解做出来的图与准确解的图比较相差较大,即欧拉方法求解的误差较大。

微分方程数值解法

实习报告

学院:数理学院

学号:20081001088

姓名:应业敏

班级:123082--04

常微分方程作业欧拉法与改进欧拉法

P77 31.利用改进欧拉方法计算下列初值问题,并画出近似解的草图:dy + =t = t y y ≤ ≤ ,2 ;5.0 0,3 )0( )1(= ,1 ? dt 代码: %改进欧拉法 function Euler(t0,y0,inv,h) n=round(inv(2)-inv(1))/h; t(1)=t0; y(1)=y0; for i=1:n y1(i+1)=y(i)+h*fun(t(i),y(i)); t(i+1)=t(i)+h; y(i+1)=y(i)+1/2*h*(fun(t(i),y(i))+ fun(t(i+1),y1(i+1))) end plot(t,y,'*r') function y=fun(t,y); y=y+1; 调用:Euler(0,3,[0,2],0.5) 得到解析解:hold on; y=dsolve('Dy=y+1','(y(0)=3)','t'); ezplot(y,[0,2]) 图像:

dy y =t - t y ;2.0 t = ≤ )0( 0,5.0 ,4 )2(2= ≤ ? ,2 dt 代码: function Euler1(t0,y0,inv,h) n=round(inv(2)-inv(1))/h; t(1)=t0; y(1)=y0; for i=1:n y1(i+1)=y(i)+h*fun(t(i),y(i)); t(i+1)=t(i)+h; y(i+1)=y(i)+1/2*h*(fun(t(i),y(i))+ fun(t(i+1),y1(i+1))) end plot(t,y,'*r') function y=fun(t,y); y=y^2-4*t; 调用: Euler1(0,0.5,[0,2],0.2) 图像:

欧拉及改进的欧拉法求解常微分方程

生物信息技术0801 徐聪U200812594 #include #include void f1(double *y,double *x,double *yy) { y[0]=2.0; x[0]=0.0; yy[0]=2.0; for(int i=1;i<=9;i++) { x[i]=x[i-1]+0.2; y[i]=y[i-1]+0.2*(y[i-1]-x[i-1]); yy[i]=x[i]+1+exp(x[i]); printf("若x=%f,计算值是%f,真实值是%f,截断误差是%f\n ",x[i],y[i],yy[i],y[i]-yy[i]); } }; void f2(double *y,double *x,double *yy) { y[0]=1.0; x[0]=0.0; yy[0]=1.0; for(int i=1;i<=9;i++) { x[i]=x[i-1]+0.2; y[i]=y[i-1]+0.2*(2*y[i-1]+x[i-1]*x[i-1]); yy[i]=-0.5*(x[i]*x[i]+x[i]+0.5)+1.25*exp(2*x[i]); printf("若x=%f,计算值是%f,真实值是%f,截断误差是%f\n ",x[i],y[i],yy[i],y[i]-yy[i]); } }; void f3(double *y,double *x,double *yy,double *y0) { y[0]=2.0; x[0]=0.0; yy[0]=2.0; for(int i=1;i<=9;i++) { x[i]=x[i-1]+0.2; y0[i]=y[i-1]+0.2*(y[i-1]-x[i-1]); y[i]=y[i-1]+0.1*(y[i-1]-x[i-1]+y0[i-1]-x[i-1]);

欧拉公式推导

欧拉公式推导: 图4.3所示的两端铰支杆件,受轴向压力N 作用而处于中性平衡微弯状态,杆件弯曲后截面中产生了弯矩M 和剪力V ,在轴线任意点上由弯矩产生的横向变形为1y ,由剪力产生的横向变形为2y ,总变形21y y y +=。 y 图4.3 两端铰支的轴心压杆临界状态 设杆件发生弯曲屈曲时截面的临界应力小于材料比例极限p f ,即p f ≤σ(对理想材料取y p f f =)。由材料力学可得: EI M dz y d -=2 12 由剪力V 产生的轴线转角为: dz dM GA V GA dz dy ?=?==ββγ2 式中 A 、I ——杆件截面面积、惯性矩; E 、G ——材料的弹性模量、剪切模量; β—— 与截面形状有关的系数。 因为 222 22dz M d GA dz y d ?=β 所以 2222122222d y d y d y M d M dz dz dz EI GA dz β=+=-+? 由 y N M ?=得: 2222dz y d GA N y EI N dz y d ?+?-=β

01=?+??? ??-''y EI N GA N y β 令 ??? ??-=GA N EI N k β12 得常系数线性二阶齐次方程 20y k y ''+= 其通解为:sin cos y A kz B kz =+ 由边界条件:;0,0==y z 0=B ,kz A y sin =。再由0,==y l z 得: 0sin =kl A 上式成立的条件是0=A 或0sin =kl ,其中0=A 表示杆件不出现任何变形,与杆件微弯的假设不符。由0sin =kl ,得πn kl =(=n 1,2,3…),取最小值=n 1,得π=kl ,即 2 221N k N l EI GA πβ==??- ??? 由此式解出N ,即为中性平衡的临界力cr N 12222222211Ι11γππβππ?+?=?+?=l ΕΙl ΕGA l ΕΙl ΕΙ N cr (4.6) 临界状态时杆件截面的平均应力称为临界应力cr σ 12 22211γλπλπσ?+?==ΕΑΕA N cr cr (4.7) 式中 1γ——单位剪力时杆件的轴线转角,)/(1GA βγ=; l ——两端铰支杆得长度; λ——杆件的长细比,i l /=λ; i ——杆件截面对应于屈曲轴的回转半径,A I i /=。 如果忽略杆件剪切变形的影响(此影响很小)则式(4.6)、(4.7)变为: 22cr E πσλ = (4.8)

用Euler法、改进的Euler法及四阶的龙格库塔法求解初值问题

微分方程数值解课程设计题目 1(30分)分别用Euler 法、改进的Euler 法及四阶的龙格库塔 法求解初值问题:????? =- =1 )0(2'u u t u u 1 0≤> Euler('fun',0,1,0.1,10) T = Columns 1 through 10 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 1.1000 1.1918 1.2774 1.3582 1.4351 1.5090 1.5803 1.6498 1.7178 Column 11 1.0000 1.7848 ②.当h=0.2时 >> Euler('fun',0,1,0.2,5) T = 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.0000 1.2000 1.3733 1.5315 1.6811 1.8269 (3).改进的Euler 法: M 文件:Euler_modify.m function E=Euler_modify(fun,x0,y0,h,N) x=zeros(1,N+1);y=zeros(1,N+1);

欧拉公式的证明(整理)Word版

欧拉公式的证明 著名的欧拉公式e^(iθ)=cosθ+isinθ是人们公认的优美公式。原因是指数函数和三角函数在实数域中几乎没有什么联系,而在复数域中却发现了他们可以相互转化,并被一个非常简单的关系式联系在一起。特别是当θ=π时,欧拉公式便写成了e^(iπ)+1=0,就这个等式将数中最富有特色的五个数0,1,i , e , π ,绝妙地联系在一起 方法一:用幂级数展开形式证明,但这只是形式证明(严格的说,在实函数域带着i只是形式上的) 再抄一遍:设z = x+iy 这样 e^z = e^(x+iy)=e^x*e^(iy),就是e^z/e^x = e^(iy) 用牛顿幂级数展开式 e^x = 1+x+x^2/2!+x^3/3!+.....+x^n/n!+...... 把 e^(iy) 展开,就得到 e^z/e^x = e^(iy) =1+iy-y^2/2!-iy^3/3!+y^4/4!+iy^5/5!-y^6/6!-..... =(1-y^2/2!+y^4/4!-y^6/6!+.....) +i(y-y^3/3!+y^5/5!-....) 由于 cosy = 1-y^2/2!+y^4/4!-y^6/6!+....., siny = y-y^3/3!+y^5/5!-.... 所以 e^(x+iy)=e^x*e^(iy)=e^x*(cosy+isiny) 即 e^(iy) = (cosy+isiny) 方法二:见复变函数第2章,在整个负数域内重新定义了sinz cosz而后根据关系推导出了欧拉公式。着个才是根基。由来缘于此。 方法一是不严格的。 再请看这2个积分 ∫sqrt(x^2-1)dx=x*sqrt(x^2-1)/2-ln(2*sqrt(x^2-1)+2x)/2 ∫sqrt(1-x^2)dx=arcsin(x)/2+x*sqrt(1-x^2)/2; 上式左边相当于下式左边乘以i 于是上式右边相当于下式右边乘以i 然后化简就得到欧拉公式 这个证明方法不太严密 但很有启发性 历史上先是有人用上述方法得到了对数函数和反三角函数的关系 然后被欧拉看到了,才得到了欧拉公式 设a t θ ?R,ρ?R+,a^(it)?z有: a^(it)=ρ(cosθ+isinθ) 1 因共轭解适合方程,用-i替换i有: a^(-it)=ρ(cosθ-isinθ) 2

实验8欧拉法_改进欧拉法_线性多步法

西华数学与计算机学院上机实践报告 课程名称:计算方法A 年级:2010级 上机实践成绩: 指导教师:严常龙 姓名:李国强 上机实践名称:解常微分方程初值问题 学号:362011********* 上机实践日期:2013.12.25 上机实践编号:8 上机实践时间:14:00 一、目的 1.通过本实验加深对欧拉法、改进欧拉法、线性多步法的构造过程的理解; 2.能对上述四种方法提出正确的算法描述编程实现,观察计算结果的改善情况。 二、内容与设计思想 自选常微分方程的初值问题,分别用欧拉法、改进欧拉法求解。 分别用以上两种方法求解常微分方程初值问题: 2 '()1,([0.0,1.4],0.1)(0)0.0 y x y h y ?=+=?=?求解区间取步长 三、使用环境 操作系统:Win 8 软件平台:Visual C++ 6.0 四、核心代码及调试过程 #include #include #define f(y) (y*y+1) #define m 0.0//初值为0 #define h 0.1//步长为0.1 #define n 14//迭代次数为14 #define a 0.0//定义区间长度 #define d 1.4 void gjol();//改进欧拉法 void ol();//欧拉法 main() { ol(); printf("\n"); gjol(); } void gjol() {

int i; float y[n+1]; y[0]=m;//赋初值 printf("改进欧拉法\n"); for(i=0;i

欧拉公式的证明

欧拉公式的证明 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

欧拉公式的证明 着名的欧拉公式e^(iθ)=cosθ+isinθ是人们公认的优美公式。原因是指数函数和三角函数在实数域中几乎没有什么联系,而在复数域中却发现了他们可以相互转化,并被一个非常简单的关系式联系在一起。特别是当θ=π时,欧拉公式便写成了e^(iπ)+1=0,就这个等式将数中最富有特色的五个数0,1,i , e , π ,绝妙地联系在一起 方法一:用幂级数展开形式证明,但这只是形式证明(严格的说,在实函数域带着i只是形式上的) 再抄一遍:??? 设z = x+iy 这样 e^z = e^(x+iy)=e^x*e^(iy),就是 e^z/e^x = e^(iy) 用牛顿幂级数展开式 e^x = 1+x+x^2/2!+x^3/3!+.....+x^n/n!+...... 把 e^(iy) 展开,就得到 e^z/e^x = e^(iy) =1+iy-y^2/2!-iy^3/3!+y^4/4!+iy^5/5!-y^6/6!-..... =(1-y^2/2!+y^4/4!-y^6/6!+.....) +i(y-y^3/3!+y^5/5!-....) 由于 cosy = 1-y^2/2!+y^4/4!-y^6/6!+.....,

siny = y-y^3/3!+y^5/5!-.... 所以 e^(x+iy)=e^x*e^(iy)=e^x*(cosy+isiny) 即 e^(iy) = (cosy+isiny) 方法二:见复变函数第2章,在整个负数域内重新定义了sinz cosz而后根据关系推导出了欧拉公式。着个才是根基。由来缘于此。 方法一是不严格的。 再请看这2个积分 ∫sqrt(x^2-1)dx=x*sqrt(x^2-1)/2-ln(2*sqrt(x^2-1)+2x)/2 ∫sqrt(1-x^2)dx=arcsin(x)/2+x*sqrt(1-x^2)/2; 上式左边相当于下式左边乘以i 于是上式右边相当于下式右边乘以i 然后化简就得到欧拉公式 这个证明方法不太严密 但很有启发性 历史上先是有人用上述方法得到了对数函数和反三角函数的关系 然后被欧拉看到了,才得到了欧拉公式 设a t θ ?R,ρ?R+,a^(it)?z有:

Euler法和改进的Euler法实验报告

用Euler法和改进的Euler法求u’=-5u(0≤t≤1),u(0)=1的数值解,步长h=0.1,0.05,并比较两个算法的精度。 解: 1)当步长h=0.1时 编写程序如下所示 clf clear clc %直接求解微分方程 y=dsolve('Dy=-5*y','y(0)=1','t') %Euler法 h=0.1; t=0:h:1; n=length(t); u=zeros(1,n); u(1)=1; zbu(1,1)=t(1); zbu(2,1)=u(1); for i=2:n f=-5*u(i-1); u(i)=u(i-1)+h*f; zbu(1,i)=t(i); zbu(2,i)=u(i); end zbu %改进的Euler法 v=zeros(1,n); v0=zeros(1,n); v(1)=1; zbv(1,1)=t(1); zbv(2,1)=v(1); for i=2:n f=-5*v(i-1); v0(i)=v(i-1)+h*f; v(i)=v(i-1)+h/2*(f-5*v0(i)); zbv(1,i)=t(i); zbv(2,i)=v(i); end zbv plot(t,u,'r*','markersize',10) hold on, plot(t,v,'r.','markersize',20)

hold on, ezplot(y,[0,1]) hold on, title('Euler法和改进的Euler法比较(h=0.1)), grid on legend('Euler法','?改进的Euler法','解析解') %解真值 h=0.1; t=0:h:1; n=length(t); for i=1:n y(i)=1/exp(5*t(i)); %通过第一部分程序直接解得的解析解 zby(1,i)=t(i); zby(2,i)=y(i); end zby 我们可以得到计算后的结果图像如图一所示 图1 Euler法和改进的Euler法比较(h=0.1) 同时,我们得到Euler法,改进的Euler法和解析解的在各点处数值分别如下所示: t坐标0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 改进欧拉 1.0000 0.6250 0.3906 0.2441 0.1526 0.0954 0.0596 0.0373 0.0233 0.0146 0.0091

欧拉公式的证明

欧拉公式的证明(是我摘录的) 2008/10/23 16:49 看到了q239urju空间里关于欧拉公式的证明。本着为人民服务的思想,我在此做一些补充: 方法一:用幂级数展开形式证明,但这只是形式证明(严格的说,在实函数域带着i只是形式上的)(就是q239urju空间里的那个) 再抄一遍:设z = x+iy 这样 e^z = e^(x+iy)=e^x*e^(iy),就是e^z/e^x = e^(iy) 用牛顿幂级数展开式 e^x = 1+x+x^2/2!+x^3/3!+.....+x^n/n!+...... 把 e^(iy) 展开,就得到 e^z/e^x = e^(iy) =1+iy-y^2/2!-iy^3/3!+y^4/4!+iy^5/5!-y^6/6!-..... =(1-y^2/2!+y^4/4!-y^6/6!+.....) +i(y-y^3/3!+y^5/5!-....) 由于 cosy = 1-y^2/2!+y^4/4!-y^6/6!+....., siny = y-y^3/3!+y^5/5!-.... 所以 e^(x+iy)=e^x*e^(iy)=e^x*(cosy+isiny) 即 e^(iy) = (cosy+isiny) 方法二:见复变函数第2章,在整个负数域内重新定义了sinz cosz而后根据关系推导出了欧拉公式。着个才是根基。由来缘于此。 方法一是不严格的。

a^(it)=ρ(cosθ+isinθ) 1 因共轭解适合方程,用-i替换i有: a^(-it)=ρ(cosθ-isinθ) 2 由1,2得ρ=1,点P[a^(it)]在单位圆上,a^(it)可表达为: a^(it)=cosθ+isinθ 3 设t=u(θ),对3微商有: [a^(it)]*(lna)*u'(θ)*i=-sinθ+icosθ整理有: [a^(it)]*(lna)*u'(θ)*i=(cosθ+isinθ)(cosπ/2+isinπ/2)约去a^(it)有: u'(θ)=logae 4 4取积分有: T=(logae)*θ+Ψ 5 θ→0时,t=limt=Ψ,带入3有: a^(iΨ)=1 即: Ψ=0 6 6代入5有: T=(logae)*θ 7 7代入3有: [a^(logae)]^(iθ)=cosθ+isinθ化简得欧拉公式: e^(iθ)=cosθ+isinθ (后两者才是真正让我震惊的!!!!)

用改进的欧拉方法和四阶龙格-库塔方法解初值问题

用改进的欧拉方法和四阶龙格-库塔方法解初值问题 一、题目: 取步长2.0=h ,分别用改进的欧拉方法和四阶龙格—库塔方法解初值问题 ? ??=≤≤+=.1)0(;10,'y x y x y 并比较结果。 二、基本思想: 1.改进的欧拉方法 改进的欧拉方法用梯形公式计算()()()()+1+1-=,.n n x n n x y x y x f x y x dx ?中的积分,并以 n y 和+1n y 分别表示()n y x 和()+1n y x 的近似值,就得到 ()()()+1+1+1=+,+,.2 n n n n n n h y y f x y f x y (梯形公式) 梯形公式也是一个一步法公式。由于公式右端也含有未知的+1n y ,故被称作是隐式的。隐式格式实际上是关于+1n y 的一个函数方程。为了避免解方程,可以采用欧拉方法计算初始值,再由梯形公式计算。这样建立起来的计算格式称为改进的欧拉格式: ()()()()+1+1+1=+,,=+,+,.2 p n n n n n n n n n y y hf x y h y y f x y f x y ????? 梯形公式也可以采用迭代法求解。如果仍然采用欧拉方法计算迭代初值,那么计算格式就是 []()[]()[]()() 0+1+1+1+1+1=+,,=+,+,.2n n n n k k n n n n n n y y hf x y h y y f x y f x y ????? 由于已假定(),f x y 满足里普希兹条件,所以有 [][][]()[]() [][]+1-1-1+1+1+1,+1+1+1+1+1-=-,-.22 k k k k k k n n n n n n n n h hL y y f x y f x y y y ≤ 从而,迭代的收敛条件是0<<1.2hL 2.四阶龙格-库塔方法 龙格—库塔方法不是用求导数的办法,而是用计算不同点上()y x f ,的函数值,然后对这些函数值作线性拟合,构造近似公式。组合的原则是使得近似公式与泰勒展开式有尽可能多的项吻合,以达到较高的精度。 改进的欧拉格式

第8章 常微分方程数值解法 本章主要内容: 1.欧拉法、改进欧拉法 2

第8章 常微分方程数值解法 本章主要内容: 1.欧拉法、改进欧拉法. 2.龙格-库塔法。 3.单步法的收敛性与稳定性。 重点、难点 一、微分方程的数值解法 在工程技术或自然科学中,我们会遇到的许多微分方程的问题,而我们只能对其中具有较简单形式的微分方程才能够求出它们的精确解。对于大量的微分方程问题我们需要考虑求它们的满足一定精度要求的近似解的方法,称为微分方程的数值解法。本章我们主要 讨论常微分方程初值问题?????==00 )() ,(y x y y x f dx dy 的数值解法。 数值解法的基本思想是:在常微分方程初值问题解的存在区间[a,b]内,取n+1个节点a=x 0<x 1<…<x N =b (其中差h n = x n –x n-1称为步长,一般取h 为常数,即等步长),在这些节点上把常微分方程的初值问题离散化为差分方程的相应问题,再求出这些点的上的差分方程值作为相应的微分方程的近似值(满足精度要求)。 二、欧拉法与改进欧拉法 欧拉法与改进欧拉法是用数值积分方法对微分方程进行离散化的一种方法。 将常微分方程),(y x f y ='变为() *+=?++1 1))(,()()(n x n x n n dt t y t f x y x y 1.欧拉法(欧拉折线法) 欧拉法是求解常微分方程初值问题的一种最简单的数值解法。 欧拉法的基本思想:用左矩阵公式计算(*)式右端积分,则得欧拉法的计算公式为:N a b h N n y x hf y y n n n n -= -=+=+)1,...,1,0(),(1 欧拉法局部截断误差 11121 )(2 ++++≤≤''=n n n n n x x y h R ξξ或简记为O (h 2)。

改进欧拉(c语言程序)

1)改进欧拉法求解常微分方程的初值问题 #include float func(float x,float y) { return(y-x); } float euler(float x0,float xn,float y0,int N) { float x,y,yp,yc,h; int i; x=x0; y=y0; h=(xn-x0)/(float)N; for(i=1;i<=N;i++) { yp=y+h*func(x,y); x=x0+i*h; yc=y+h*func(x,yp); y=(yp+yc)/2.0; } return(y); } main() { float x0,xn,y0,e; int n; printf("\ninput n:\n "); scanf("%d",&n); printf("input x0,xn:\n "); scanf("%f,%f",&x0,&xn); printf("input y0:\n "); scanf("%f",&y0); e=euler(x0,xn,y0,n); printf("y(%f)=%6.4f",y0,e); } input n: 20 input x0,xn: 1,6 input y0: 2 y(2.000000)=7.0000Press any key to continue (2)四阶龙格—库塔法

#include float func(float x,float y) { return(x-y); } float runge_kutta(float x0,float xn,float y0,int N) { float x,y,y1,y2,h,xh; float d1,d2,d3,d4; int i; x=x0; y=y0; h=(xn-x0)/(float)N; for(i=1;i<=N;i++) { xh=x+h/2; d1=func(x,y); d2=func(xh,y+h*d1/2.0); d3=func(xh,y+h*d2/2.0); d4=func(xh,y+h*d3); y=y+h*(d1+2*d2+2*d3+d4)/6.0; x=x0+i*h; } return(y); } main() { float x0,xn,y0,e; int N; printf("\ninput n:\n "); scanf("%d",&N); printf("input x0,xn:\n "); scanf("%f,%f",&x0,&xn); printf("input y0:\n "); scanf("%f",&y0); e=runge_kutta(x0,xn,y0,N); printf("y(%f)=%8.6f",y0,e); } input n: 10 input x0,xn: 1,2 input y0: 5 y(5.000000)=2.833863Press any key to continue

常微分方程作业欧拉法与改进欧拉法

常微分方程作业欧拉法与改进欧 拉法 P77 31.利用改进欧拉方法计算下列初值问题,并画出近似解的草图: (1) 3 =y 1,y(0) =3,0汀岂2, :t=0.5; dt 代码: %改进欧拉法 fun cti on Euler(t0,y0,i nv,h) n=rou nd(i nv(2)-in v(1))/h; t(1)=t0; y(1)=y0; for i=1: n y1(i+1)=y(i)+h*fun(t(i),y(i)); t(i+1)=t(i)+h;

y(i+1)=y (i)+1/2*h*(fu n( t(i),y(i))+ fun( t(i+1),y1(i+1))) end plot(t,y,'*r') fun cti on y=fun (t,y); y=y+1; 调用:Euler(0,3,[0,2],0.5) 得到解析解:hold on; y=dsolve('Dy=y+1','(y(0)=3)', 't'); ezplot(y,[0,2])

图像: (2)女=y2—4t,y(0) =0.5,0 叭乞2, :t =0.2; dt 代码: function Euler1(t0,y0,inv,h) n=rou nd(i nv(2)-in v(1))/h; t(1)=t0; y(1)=y0; for i=1: n y1(i+1)=y(i)+h*fu n(t(i),y(i)); t(i+l)=t(i)+h; y(i+1)=y (i)+1/2*h*(fu n( t(i),y(i))+ fun( t(i+1),y1(i+1)))

end plot(t,y,'*r') fun cti on y=fun (t,y); y=y A2-4*t; 调用: Euler1(0,0.5,[0,2],0.2) 图像:

改进Euler方法

第九章 解常微分方程初值问题 4. 改进Euler 方法 我们先用Euler 公式求的一个初步的近似值,再用梯形公式将它校正一次,即按(5)迭代一次得y 1+n ,这个结果称为校正值,这样建立的校正系统通常成为改进Euler 公式. y 1+n = y n +h /2(f (n n y x ,) + f (x n +1, n y + h* f (n n y x ,))) (6) 即迭代公式为: ? ???? +=+=+),,(*),,(*1p n n c n n n p y x f h y y y x f h y y (7)

进过计算得出改进Euler 法比Euler 法 明显改善了精度. 上机实验⑷ 上机题目:贬值求一阶常微分方程的初值问题 实验目的:掌握各种Euler 方法和梯形法。 进过计算结果来分析四种方法的优缺点,掌握规律。 分析结果。 实验要求:用不同的方法来解同一个例子。 ① 上机前充分准备,复习有关内容,写出计算步骤,查对程 序。②改进Euler 法在Matlab 环境中运算,并分析出最好的方法,再给出它的流程图。③实验结束后写出完整的实验报告。 算法说明:①经过所给出的方程组和初值初步改变方程组。 ②由以上四种方法的计算公式来逐步计算y 的每个值。 ③最后为了方便比较列为表最适合。 上机例题:例1.后退Euler 方法解初值问题,h =0.1 ? ??=??='1y(0)1x 0 2x/y, -y y Matlab 程序: function[x,y]=gaijing(f,x0,y0,a,b,n) h=(b-a)/n; %定义并计算步长 for k=1:n+1 x(k)=a+(k-1)*h; %计算x(k) end y(1)=y0; for i=1:n yp=y(i)+h*subs(subs(f,x(i)),y(i)); %由改进Euler 的公式计算. yc=y(i)+h*subs(subs(f,x(i+1)),yp); y(i+1)=(1/2)*(yp+yc); end disp(sprintf(' i x(i) y(i)')); %为了方便以规定格式先输出 i,x(i),y(i). for i=1:n disp(sprintf(' %d %f %f',i,x(i+1),y(i+1))); %为了方便观察结果在先输出的 格式下输出结果 end s=y(i); 运行结果: [x,y]=gaijing('y-2*x/y',0,1,0,1,10) i x(i) y(i) 1 0.100000 1.095909

欧拉法,改进欧拉法,斐波那契法基础原理及经过流程图

1欧拉法求微分方程 方法说明 欧拉(Euler)法是解常微分方程初值问题 (4.1) 最简单的数值方法,其具体做法是,将区间[a,b]进行N等分: ,步长.并将式(4.1)写成等价的积分形式 (4.2) 再对式(4.2)右端积分用矩形公式计算,则有 , (4.3) 在式(4.3)右端取,舍去余项。则得 , 作为的近似值。 在式(4.3)右端取,舍去余项,则得

y2=y1+?f(x1,y1) 作为的近似值. 一般地,在式(4.3)右端取舍去余项,则得 (4.4) 作为的近似值.式(4.4)为欧拉法计算公式. 我们知道微分方程的解是平面上的一族积分曲线,这族曲线中过点的积分曲线就是初值问题式(4.1)的解. 欧拉法的几何意义是,过点引斜率为的积分曲线的切线,此切线与直线的交点为,再过点引以为斜率的切线与直线的交点为,依此类推,从出发,作以为斜率的切线,此切线与直线交点为.于是便得到过点的一条折线,见图4.1.过的积分曲线则用此折线来代替.因此,这种方法亦称折线法. 图4.1

例:用欧拉法求微分方程[ ]2',(0)1,0.1,0,1x y y y h y 区间为=-== 欧拉法流程图如下: 欧拉法程序如下: clear; clc; x1=0; x2=1; h=0.1; x0=0; y0=1; N=(x2-x1)/h;%要计算的次数 x(1)=x0; y(1)=y0; for n=1:N x(n+1)=x(n)+h;

y(n+1)=y(n)+h*(y(n)-2*x(n)/y(n)); end X=x Y=y 2改进欧拉法求微分方程 方法说明 由于欧拉法采用矩形公式计算积分产生较大截断误差.改进欧拉法(又称改进折线法)是采取梯形公式来计算式(4.3)右端积分,则有 (5.1) 在式(5.1)右端取,舍去余项,则得 将作为的近似值. 在式(5.1)右端再取,舍去余项,则得 将作为的近似值. 一般地,在式(5.1)右端取,舍去余项.则得 (5.2)

欧拉公式的证明方法和应用

欧拉公式 θθθ sin cos i e i +=的证明方法和应用 摘要:在复数域内用几种不同的方法证明欧拉公式θθθ sin cos i e i +=,举例说明欧拉公式在数学中的几类应用,通过总结多种方法看问题的思想来解决问题,通过几种不同种类的问题的解决方案让读者更加明白欧拉公式在学习中的多方面思想和数学中的重要性。 关键词:欧拉公式、微分中值定理、证明、应用、三角函数 1.欧拉公式意义简说 在我们所学过的指数函数和三角函数在实数域中几乎没有什么联系,在复数域中却可以相互转换,被θθθ sin cos i e i +=这简单的关系联系在一起,这个一直盘踞在许多研究家心里的欧拉公式,有着很多很多的疑问,特别是当πθ=时,有1-=e i π ,即01=+e i π ,这个等式将数学中的最富有特色的五个数0、1、i 、e 、π联系在一起,0,1是实数中特殊的数字,i 是一个很重要的虚数单位,e 是无理数它取自瑞士数学家欧拉(Euler,1707-1783)的英文开头[5],π是圆周率在公园前就被定义为“周长与直径的比”。它们在数学中各自都有发展的方面。因此e i π +1=0公式充分揭示了数学的统一性、简洁性和奇异性。了解这些内容对于学习高等数学,对于我们在研究较深的数学问题上有很大帮助。 2.欧拉公式的证明简述 在这里,我把几种证明欧拉公式的方法总结在一起,对学者学习欧拉公式提供多方面的题材,并作出知识的一种综合理解。 幂级数展开式的证明法 引用三角函数和指数函数“幂级数展开式”证明欧拉公式θθθ sin cos i e i +=, 复指数定义法 用复指数定义)sin (cos y i y e e e x iy x z +==+,证明欧拉公θθθ sin cos i e i += 类比法求导法 通过实函数的性质来对复函数进行求导运算(附件①),通过构造 x i x x f e ix sin cos )(+= ,0)(='x f 用lagrange 微分中值定理推论[3],从而证明1)(=x f , 使得x i x e ix sin cos += 分离变量积分法 假设x i x z sin cos +=,求导得 iz dx dz =,通过分离变量得,idx z dz =,然后两边取积分

欧拉公式的证明和应用

数学文化课程报告 欧拉公式的证明与应用 一.序言------------------------------------------------------------------------2 二.欧拉公式的证明--------------------------------------3 1.1 极限法 --------------------------------------3 1.2 指数函数定义法-------------------------------4 1.3 分离变量积分法-------------------------------4 1.4 复数幂级数展开法-----------------------------4 1.5 变上限积分法---------------------------------5

1.6 类比求导法-----------------------------------7 三.欧拉公式的应用 2.1 求高阶导数-----------------------------------7 2.2积分计算------------------------------------8 2.3高阶线性齐次微分方程的通解------------------9 2.4求函数级数展开式----------------------------9 2.5三角级数求和函数----------------------------10 2.6傅里叶级数的复数形式-------------------------10 四.结语------------------------------------------------11 参考文献-----------------------------------------------11 一.序言 欧拉是十八世纪最杰出的最多产的数学家之一[1],留下了数不胜数的以其名字命名的公式。 本文关注的欧拉公式x i x e ix sin cos +=,在复数域中它把指数函数联系在一起。特别当π=x 时,欧拉公式便写成了 01=+πi e ,这个等式将最富有特色的五个数π,,,,10e i 绝妙的联系在一起,“1是实数的基本单位,i 是虚数的基本单位,0是唯一的中性数,他们都具有独特的地位,

欧拉公式的证明方法和应用

欧拉公式的证明方法和 应用 文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)

欧拉公式 θ θθ sin cos i e i +=的证明方法和应用 摘要:在复数域内用几种不同的方法证明欧拉公式θθθ sin cos i e i +=,举例说明欧拉公式在数学中的几类应用,通过总结多种方法看问题的思想来解决问题,通过几种不同种类的问题的解决方案让读者更加明白欧拉公式在学习中的多方面思想和数学中的重要性。 关键词:欧拉公式、微分中值定理、证明、应用、三角函数 1.欧拉公式意义简说 在我们所学过的指数函数和三角函数在实数域中几乎没有什么联系,在复数域中却可以相互转换,被θθθ sin cos i e i +=这简单的关系联系在一起,这个一直盘踞在许多研究家心里的欧拉公式,有着很多很多的疑问,特别是当πθ=时,有 1-=e i π ,即01=+e i π ,这个等式将数学中的最富有特色的五个数0、1、i 、e 、 π联系在一起,0,1是实数中特殊的数字,i 是一个很重要的虚数单位,e 是无 理数它取自瑞士数学家欧拉(Euler,1707-1783)的英文开头[5],π是圆周率在公园前就被定义为“周长与直径的比”。它们在数学中各自都有发展的方面。因此e i π +1=0公式充分揭示了数学的统一性、简洁性和奇异性。了解这些内容对于学习高等数学,对于我们在研究较深的数学问题上有很大帮助。 2.欧拉公式的证明简述 在这里,我把几种证明欧拉公式的方法总结在一起,对学者学习欧拉公式提供多方面的题材,并作出知识的一种综合理解。 幂级数展开式的证明法 引用三角函数和指数函数“幂级数展开式”证明欧拉公式θθθ sin cos i e i +=,

方程的改进欧拉公式

2013-2014(1)专业课程实践论文题目:方程的改进欧拉公式

一、算法理论 按照?? ? ??=++=+=+++++ ,2,1,0)],,(),([2)(1) (11)1(,1)0(k y x f y x f h y y y x hf y y n k n n n n n k n n n n 计算?????=≤≤=0 )(),,(y a y b x a y x f dx dy 的数值解时候,如果每次只迭代一次,相当于将欧 拉公式与梯形格式结合使用:先用欧拉公式求出1+n y ,称为预测值,然后用梯形格式校正求得近似值1+n y ,即 预测: ),(1n n n n y x hf y y +=+; 校正: )],(),([2 111+++++=n n n n n n y x f y x f h y y 将上式称为由欧拉公式和梯形格式得到的预测—校正系统,也叫改进的欧拉公式。它是显式的单步法。 为了便于编制程序上机,上式常改写成 ),(n n n p y x hf y y += ),(p n n q y h x hf y y ++= )(2 1 1q p n y y y +=+ 改进的欧拉方法算法如下: (1)输入),,(,,y x f b a 区间等分数N ,初始值0y 。 (2)输出)(x y 在x 的N 个点处的近似值y 。 (3)置0,,0,y y a x n N a b h ===-= 。 (4)计算),(),,(p q p y h x hf y y y x hf y y ++=+=,置, ),(2 1 x h x y y y q p ?+?+输出),(y x 。

欧拉法与改进欧拉法

一、目的 1.通过本实验加深对欧拉法、改进欧拉法、龙格-库塔法、线性多步法的构造过程的理解; 2.能对上述三种方法提出正确的算法描述编程实现,观察计算结果的改善情况。 二、内容与设计思想 自选常微分方程的初值问题,分别用欧拉法、改进欧拉法求解。 分别用以上两种方法求解常微分方程初值问题: 2 '()1,([0.0,1.4],0.1)(0)0.0 y x y h y ?=+=?=?求解区间取步长 三、使用环境 操作系统:windons XP 软件平台:VC 6.0 四、核心代码及调试过程 #include #include #include double f(double x,double y) { return (1+y*y); } int main() { int i; double x,y,y0=1,dx=0.1; double xx[11]; double euler[11],euler_2[11]; double temp; double f(double x,double y); for (i=0;i<11;i++) xx[i]=i*dx; euler[0]=y0; for (i=1,x=0;i<11;i++,x+=dx) euler[i]=euler[i-1]+dx*f(x,euler[i-1]); euler_2[0]=y0; for (i=1,x=0;i<11;i++,x+=dx) { printf("x=%lf\teluer=%lf\teuler_2=%lf\taccu=%lf\n",x,euler[i],euler_2[i],pow(1+x*x,1.0/3));

相关文档
最新文档