Euler 方法实验报告
常微分方程数值解实验报告
![常微分方程数值解实验报告](https://img.taocdn.com/s3/m/182e56a316fc700abb68fcb3.png)
常微分方程数值解实验报告学院:数学与信息科学专业:信息与计算科学姓名:郑思义学号:201216524课程:常微分方程数值解实验一:常微分方程的数值解法1、分别用Euler 法、改进的Euler 法(预报校正格式)和S —K 法求解初值问题。
(h=0.1)并与真解作比较。
⎩⎨⎧=++-=10(1y')y x y 1.1实验代码:%欧拉法function [x,y]=naeuler(dyfun,xspan,y0,h)%dyfun 是常微分方程,xspan 是x 的取值范围,y0是初值,h 是步长 x=xspan(1):h:xspan(2); y(1)=y0;for n=1:length(x)-1y(n+1)=y(n)+h*feval(dyfun,x(n),y(n)); end%改进的欧拉法function [x,m,y]=naeuler2(dyfun,xspan,y0,h)%dyfun 是常微分方程,xspan 是x 的取值范围,y0是初值,h 是步长。
%返回值x 为x 取值,m 为预报解,y 为校正解 x=xspan(1):h:xspan(2); y(1)=y0;m=zeros(length(x)-1,1); for n=1:length(x)-1 k1=feval(dyfun,x(n),y(n)); y(n+1)=y(n)+h*k1; m(n)=y(n+1);k2=feval(dyfun,x(n+1),y(n+1)); y(n+1)=y(n)+h*(k1+k2)/2; end%四阶S —K 法function [x,y]=rk(dyfun,xspan,y0,h)%dyfun 是常微分方程,xspan 是x 的取值范围,y0是初值,h 是步长。
x=xspan(1):h:xspan(2); y(1)=y0;for n=1:length(x)-1 k1=feval(dyfun,x(n),y(n));k2=feval(dyfun,x(n)+h/2,y(n)+(h*k1)/2); k3=feval(dyfun,x(n)+h/2,y(n)+(h*k2)/2); k4=feval(dyfun,x(n)+h,y(n)+h*k3);y(n+1)=y(n)+(h/6)*(k1+2*k2+2*k3+k4);end%主程序x=[0:0.1:1];y=exp(-x)+x;dyfun=inline('-y+x+1');[x1,y1]=naeuler(dyfun,[0,1],1,0.1);[x2,m,y2]=naeuler2(dyfun,[0,1],1,0.1);[x3,y3]=rk(dyfun,[0,1],1,0.1);plot(x,y,'r',x1,y1,'+',x2,y2,'*',x3,y3,'o');xlabel('x');ylabel('y');legend('y为真解','y1为欧拉解','y2为改进欧拉解','y3为S—K解','Location','NorthWest');1.2实验结果:x 真解y 欧拉解y1 预报值m 校正值y2 S—K解y30.0 1.0000 1.0000 1.0000 1.00000.1 1.0048 1.0000 1.0000 1.0050 1.00480.2 1.0187 1.0100 1.0145 1.0190 1.01870.3 1.0408 1.0290 1.0371 1.0412 1.04080.4 1.0703 1.0561 1.0671 1.0708 1.07030.5 1.1065 1.0905 1.1037 1.1071 1.10650.6 1.1488 1.1314 1.1464 1.1494 1.14880.7 1.1966 1.1783 1.1945 1.1972 1.19660.8 1.2493 1.2305 1.2475 1.2500 1.24930.9 1.3066 1.2874 1.3050 1.3072 1.30661.0 1.3679 1.3487 1.3665 1.3685 1.36792、选取一种理论上收敛但是不稳定的算法对问题1进行计算,并与真解作比较。
欧拉法(euler)求解常微分方程的matlab程序及案例
![欧拉法(euler)求解常微分方程的matlab程序及案例](https://img.taocdn.com/s3/m/020a1f37e97101f69e3143323968011ca300f7d1.png)
欧拉法(euler)求解常微分方程的matlab程序及案例欧拉方法是最初用于求解常微分方程的数值方法之一,它是一种显式的一步法,具有易于实施的优点,特别适合初学者使用。
本文将介绍欧拉法的原理和使用MATLAB求解常微分方程的具体方法,同时给出一个简单的实例进行说明。
一、欧拉法原理考虑一个一阶常微分方程y'=f(t,y),欧拉法的基本思想是将时间步长Δt均分成n个小步长,从y(t0)开始依次计算每个时刻的值,得到一列估计值y1, y2, …, yn。
欧拉法的计算公式为:(1)y1=y(t0+Δt)=y(t0)+Δtf(t0, y0)(2)y2=y(t0+2Δt)=y(t0+Δt)+Δtf(t0+Δt, y1)(3)yn=y(t0+nΔt)=y(t0+(n-1)Δt)+Δtf(t0+(n-1)Δt, yn-1)可以看出,欧拉法的核心在于利用已知的t和y计算f(t,y),从而获得y的逼近值。
但是需要注意的是,步长Δt越小,计算所需的时间和内存就越多,而精度却并不一定提高。
因此在实际应用中需要结合具体问题选择合适的步长。
二、MATLAB求解常微分方程的具体方法(1)定义常微分方程我们以一个简单的例子开始,考虑求解y'=1-y,y(0)=0.5在[0,1]区间内的积分。
首先定义匿名函数dydt,将其传到ode45中求解:dydt=@(t,y)1-y;[t,y]=ode45(dydt,[0 1],0.5);plot(t,y,'-o')运行以上代码可以得到结果,其中plot函数用于绘制图像。
但是,由于求解过程中计算机执行到ode45函数时可能需要很长时间,因此需要更快捷的方法。
(2)利用欧拉法求解方程欧拉法求解方程首先需要定义步长Δt,这里设Δt为0.1。
定义起始值y=[0.5]、时间向量t=0:Δt:1,然后计算列向量y的估计值:t=0:0.1:1;y=zeros(size(t));y(1)=0.5;for n=1:length(t)-1y(n+1)=y(n)+0.1*(1-y(n));endplot(t,y,'-o')以上代码的执行结果与前面的ode45方法相同,但是速度更快。
Euler法解常微分方程初值问题机实验报告2
![Euler法解常微分方程初值问题机实验报告2](https://img.taocdn.com/s3/m/e72e308be53a580216fcfe3b.png)
中国矿业大学(北京)理学院数值分析实验报告实验名称 Euler 法解常微分方程初值问题实验时间 5.22组长签名班级 信息与计算科学(1)班学号11107200110 成绩组员签名 111072001011110720010211107200103 1110720011911107200120一、实验目的,内容 二、相关背景知识介绍 三、代码四、数值结果 五、计算结果的分析 六、计算中出现的问题,解决方法及体会 一、实验目的,内容1.运用欧拉方法求常微分方程近似解,并与实际的结果进行比较;2.将欧拉方法转换成matlab 语言,上机得出其近似解。
内容: 对初值问题⎪⎩⎪⎨⎧-=≤≤--='1)1(21,122y x y xy x y , 使用显式Euler 公式求近似解,并与准确解xx y 1)(-=比较精度;步长h 自己选定。
二、相关背景知识介绍它具有给定的起点并且满足一个给定的微分方程。
这里,所谓“微分方程”可以看作能够通过曲线上任意点的位置而计算出这一点的切线斜率的公式。
思路是,一开始只知道曲线的起点(假设为),曲线其他部份是未知的,不过通过微分方程,的斜率可以被计算出来,也就得到了切线。
顺着切线向前走一小步到点。
如果我们假设是曲线上的一点(实际上通常不是),那么同样的道理就可以确定下一条切线,依此类推。
在经过几步之后,一条折线就被计算出来了。
大部分的情况下,这条折线与原先的未知曲线偏离不远,并且任意小的误差都可以通过减少步长来得到。
欧拉均差近似方程迭代公式:'1()()()(,())n n n n n y x y x y x f x y x h+-≈=迭代步骤: 1000(,)y y hf x y =+2111(,)y y hf x y =+三、代码(Matlab )%显式Euler 方法求微分方程数值解clear clch=0.02; x=1:h:2;n=length(x); y(1)=-1for i=1:n-1y(i+1)=y(i)+h*(x(i)^(-2)-y(i)*x(i)^(-1)-y(i)^2) end y f =Inline function: f(x,y) = y-x^2+1 y =-1.0000 -1.0040 -1.0257 -1.0865 -1.2128 -1.4364 -1.7964 -2.3404 -3.1265 -4.2255 -5.7239yyy =0.5000 0.8293 1.2141 1.6489 2.1272 2.6409 3.1799 3.7324 4.2835 4.8152 5.3055四、数值结果及分析y =-1.0000 -1.0040 -1.0257 -1.0865 -1.2128 -1.4364 -1.7964 -2.3404 -3.1265 -4.2255 -5.7239yyy =0.5000 0.8293 1.2141 1.6489 2.1272 2.6409 3.1799 3.7324 4.2835 4.8152 5.3055方程式h=0.02221y x y x y --='5.30551)1(-=y-5.7239绝对误差相对误差 h=0.20.00300.00030578误差的大小与,证明欧拉方法得到的曲线拟合的越好。
euler 采样方法
![euler 采样方法](https://img.taocdn.com/s3/m/0fc50d5df4335a8102d276a20029bd64793e6274.png)
euler 采样方法(原创实用版3篇)目录(篇1)1.Euler 采样方法的概述2.Euler 采样方法的原理3.Euler 采样方法的优缺点4.Euler 采样方法的应用实例5.Euler 采样方法的局限性和改进方向正文(篇1)一、Euler 采样方法的概述Euler 采样方法是一种在离散系统中广泛应用的时间步进方法,由数学家 Euler 首次提出,主要用于求解常微分方程的初值问题。
该方法通过对方程的解在每个时间步长上进行局部线性近似,从而获得离散系统中各个时刻的解。
二、Euler 采样方法的原理Euler 采样方法的基本思想是,将连续时间系统中的状态变量在每个时间步长上进行线性插值。
具体来说,设在某一特定时间步长 k,系统的状态变量为 x_k,对其进行局部线性近似,可得:x_{k+1} = x_k + h*f(x_k)其中,h 为时间步长,f(x_k) 为系统状态变量 x_k 的瞬时变化率,即系统的运动方程。
通过不断迭代上述公式,我们可以得到离散系统中各个时刻的状态变量。
三、Euler 采样方法的优缺点1.优点:Euler 采样方法简单易懂,实现起来较为方便,且具有一定的数值稳定性。
对于一些简单的系统,该方法可以得到较好的结果。
2.缺点:Euler 采样方法的数值稳定性较差,特别是在处理非线性系统或高阶系统时,可能会出现较大的误差。
此外,该方法对于系统的初始条件较为敏感,初始条件的微小变化可能导致结果的显著差异。
四、Euler 采样方法的应用实例Euler 采样方法在物理、工程和生物学等领域的数值模拟中都有广泛应用。
例如,在求解牛顿运动定律、电磁场方程、生态系统模型等方面,Euler 采样方法都可以发挥重要作用。
五、Euler 采样方法的局限性和改进方向虽然 Euler 采样方法在许多情况下可以得到合理的结果,但其数值稳定性和精度仍然有待提高。
为了克服这些问题,研究者们提出了许多改进的 Euler 方法,如改进的欧拉方法(Euler with improvement)、四阶龙格库塔法(4th order Runge-Kutta method)等。
matlab 数学实验 实验报告 欧拉公式 ROSSLER微分方程
![matlab 数学实验 实验报告 欧拉公式 ROSSLER微分方程](https://img.taocdn.com/s3/m/8e8bd60879563c1ec5da7137.png)
数学实验—实验报告一、实验项目: 二、实验目的和要求1、本章将对人口变化、动物种群变迁、网络系统的可靠性分析,介绍微分方程(组)的模型建立、数值解和图形解等方法,并用MATLAB 几何直观地展示各种求解方法的求解结果。
2、利用欧拉公式求解方程三、实验题目问题一:求微分方程的解析解,并画出它们的图形, y ’=y +2x , y (0)=1, 0<x <1;问题二:用向前欧拉公式和改进的欧拉公式求方程y ’=y -2x /y , y (0)=1的数值解(0≤x ≤1 , h =0.1) 要求编写程序。
问题三:Rossler 微分方程组当固定参数b=2, c=4时,试讨论随参数a 由小到大变化(如a ∈(0,0.65])而方程解的变化情况,并且画出空间曲线图形,观察空间曲线是否形成混沌状?问题四:水的流出时间一横截面积为常数A ,高为H 的水池内盛满水,由池底一横截面积为B 的小孔放水。
设水从小孔流出的速度为v=(2gh)0.5,求在任意时刻的水面高度和将水放空所需的时间。
时间t →高度h 。
问题五:考虑相互竞争模型两种相似的群体之间为了争夺有限的同一种事物来源和生存空间而进行生死存亡竞争时,往往是竞争力较弱的种群灭亡,而竞争力较强的种群达到环境容许的最大数量假设有甲、乙两个生物种群,当它们各自生存于一个自然环境中,均服从Logistics 规律。
三、实验过程问题一:用matlab 编写代码: x=[0,1]y=dsolve('Dy=y+2*x')y=dsolve('Dy=y+2*x', 'y(0)=1', 'x')ezplot(x,y)输出:y =-2*x+exp(t)*C1 (通解)y =-2*x-2+3*exp(x) 画图:x=0:0.01:1;y =-2*x-2+3*exp(x);plot(x,y)'''()x y z y x ayz b z x c =--⎧⎪=+⎨⎪=+-⎩0.10.20.30.40.50.60.70.80.91问题二: 1、分析:解:(1)解析解法得到其精确解:(2) 向前欧拉法:1(2/)n n n n n y y h y x y +=+- (1)2/n n nh y h x y =+- 迭代公式为 n+1y 1.10.2/n n n y x y =-,其中0y =y(0)=1(3)改进欧拉法:n+1nn n n n+1n +1n n n n n n n n n n n nn2n nnnn y =y +(h /2)*[(y -2x /y )+(y -2x /y )]=y +(h /2)*[(y -2x/y )+(y +h -2(x+h )/(yh ))] =y+(h /2)*[2y2x /y2(x +h )/(y+h )]=(1+h )y /2x/y(x +h )/(y+h )h h h h +--+-- 迭代公式为 n+1y 1.10.1/0.1()/()0.005n n n n n y x y x h y h =--+++,其中0y =y(0)=12、Matlab 编码x1(1)=0;y1(1)=1;y2(1)=1;h=0.1; for k=1:10 x1(k+1)=x1(k)+h;y1(k+1)=(1-h)*y1(k)+2*h*x1(k)/y1(k);y2(k+1)=(1+h)*y2(k)+(h*h)/2-h*x1(k)/y2(k)-h*(x1(k)+h)/(y2(k)+h); end x=0:0.1:1; y=(2*x+1).^(1/2);x1=x1(1:11),y=y(1:11),y1=y1(1:11),y2=y2(1:11), plot(x,y,x1,y1,'k:',x1,y2,'r--')显示图像及结果:x1 = 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000y = 1.0000 1.0954 1.1832 1.2649 1.3416 1.4142 1.4832 1.5492 1.6125 1.6733 1.7321y1 = 1.0000 0.9000 0.8322 0.7971 0.7926 0.8143 0.8557 0.9103 0.9731 1.0402 1.1092y2 = 1.0000 1.0959 1.1847 1.2679 1.3468 1.4222 1.4948 1.5653 1.6340 1.7016 1.768300.10.20.30.40.50.60.70.80.910.811.21.41.61.82图中,蓝色曲线是精确解,红色曲线是向前欧拉法曲线,黑色曲线是改进后欧拉法曲线问题三1、matlab 编程function r=rossler(t,x) global a; global b; global c;r=[-x(2)-x(3);x(1)+a*x(2);b+x(3)*(x(1)-c)];global a; global b; global c; b=2; c=4; t0=[0,200]; for a=0:0.02:0.65[t,x]=ode45('rossler',t0,[0,0,0]); subplot(1,2,1);plot(t,x(:,1),'r',t,x(:,2),'g',t,x(:,3),'b');title('x(ºìÉ«),y(ÂÌÉ«),z(ÀºÉ«)Ëæt±ä»¯Çé¿ö');xlabel('t'); subplot(1,2,2);plot3(x(:,1),x(:,2),x(:,3))title('Ïàͼ');xlabel('x');ylabel('y');zlabel('z'); pause end当a=0时,图像如下50100150200-1-0.8-0.6-0.4-0.200.20.40.6x(红色),y(绿色),z(篮色)随t 变化情况t-0.5相图z当a=0时,(x,y,z)收敛于(0,0.5,0.5)当a=0.12时,图像如下50100150200-1.2-1-0.8-0.6-0.4-0.200.20.40.6x(红色),y(绿色),z(篮色)随t 变化情况t-0.5相图z当a=0.28时,(x,y ,z)仍然收敛,但是收敛速度大大降低。
数值分析第七章实验报告7
![数值分析第七章实验报告7](https://img.taocdn.com/s3/m/28430860783e0912a2162a6b.png)
贵州师范大学数学与计算机科学学院学生实验报告课程名称: 数值分析 班级: 实验日期: 2011年12月14日 学号: 姓名: 指导教师: 实验成绩: 一、实验名称实验六: 常微分方程初值问题数值解法 二、实验目的及要求1. 让学生掌握用Euler 法, Runge-Kutta 法求解常微分方程初值问题.2. 培养Matlab 编程与上机调试能力.三、实验环境每人一台计算机,要求安装Windows XP 操作系统,Microsoft office2003、MATLAB6.5(或7.0). 四、实验内容1. 取步长h=0.1,0.05,0.01,,用Euler 法及经典4阶Runge-Kutta 法求解初值问题⎩⎨⎧=≤≤++-=1)0()10(2222'y t t t y y 要求:1) 画出准确解(准确解22t e y t +=-)的曲线,近似解折线;2) 把节点0.1和0.5上的精确解与近似解比较,观察误差变化情况.2. 用 Euler 法,隐式Euler 法和经典4阶R-K 法取不同步长解初值问题⎪⎩⎪⎨⎧=∈-=21)0(],1,0[,50'y x y y 并画出曲线观察稳定性. 注:题1必须写实验报告五、算法描述及实验步骤 Euler 法:输入 000),(,,,),,(y a x x h b a y x f = 输出 Euler 解y 步1 ),,2,1(;m n h n a x ha b m n =⨯+=-⇐步2 对1,,2,1,0-=m n 执行),(1n n n n y x f h y y ⨯+⇐+步3 输出T m y y y y ),,,(21 = 经典4阶R-K 法:输入 000),(,,,),,(y a x x h b a y x f = 输出 4阶R-K 解y 步1 ),,2,1(;m n h n a x ha b m n =⨯+=-⇐步2 对1,,2,1,0-=m n 执行),(1n n y x f K ⇐,)5.0,(15.02hK y x f K n n +⇐+, )5.0,(25.03hK y x f K n n +⇐+,),(314hK y x f K n n +⇐+)22(643211K K K K h y y n n ++++⇐+步3 输出T m y y y y ),,,(21 = 六、调试过程及实验结果 分别取h=0.1,h=0.01 步长h=0.1>> a=0;b=1;h=0.1;y0=1; >> Y1=RK('fun',a,b,y0,h); >> y1=[1,Y1];>> Y2=Euler('fun',a,b,y0,h); >> y2=[1,Y2]; >> t=[0:0.1:1]; >> plot(t,y1,'dk-') >> hold on>> plot(t,y2,'.r--') >> t=0:0.01:1; >> y=exp(-2.*t)+t.^2; >> hold on >> plot(t,y,':')>> legend('y1','y2','y',2)>> title('准确解曲线与近似解折线')>> text(0.15,0.775,'\leftarrowy1=R-K 法') >> text(0.7,0.67,'\leftarrowy2=Euler 法') >> text(0.48,0.78,'y=准确解曲线\rightarrow')>> y=exp(-2.*t)+t.^2; >> t=0.1;>> y;>> Y1(1);>> Y2(2);>> e1=y-Y1(1)>> y=exp(-2.*t)+t.^2; >> t=0.5;>> y;>> Y1(5);>> Y2(5);>> e1=y-Y1(5)e1 =-1.1609e-005>> e2=y-Y2(5)e2 =0.0738e1 =-4.2469e-006>> e2=y-Y2(1)e2 =0.0287步长h=0.01>> a=0;b=1;h=0.01;y0=1;>> Y1=RK('fun',a,b,y0,h); >> y1=[1,Y1];>> Y2=Euler('fun',a,b,y0,h); >> y2=[1,Y2];>> y=exp(-2.*t)+t.^2;>> t=0:0.01:1;>> plot(t,y1,'k-')>> hold on>> plot(t,y2,'r--')>> hold on>> plot(t,y,':')>> t=0.1;>> y=exp(-2.*t)+t.^2;>> y;>> Y1(10);>> Y2(10);>> e1=y-Y1(10)e1 =-3.7457e-010>> e2=y-Y2(10)e2 =0.0026>> t=0.5;>> y=exp(-2.*t)+t.^2;>> y;>> Y1(50);>> Y2(50);>> e1=y-Y1(50)e1 =-1.0308e-009>> e2=y-Y2(50)e2 =0.0069七、总结用1阶的Euler法解初值问题时,若步长过大的话,误差将会较大,其解不可靠,只有控制步长尽量小,在一定误差范围内才可用,大的话精度不高。
微分方程数值解法实验报告
![微分方程数值解法实验报告](https://img.taocdn.com/s3/m/d58787e3b1717fd5360cba1aa8114431b90d8eed.png)
微分方程数值解法实验报告2篇微分方程数值解法实验报告(一)在实际科学与工程问题中,我们经常会遇到微分方程的求解。
然而,许多微分方程往往没有解析解,这就需要我们利用数值方法来获得近似解。
本篇实验报告将介绍两种常见的微分方程数值解法:欧拉方法和改进的欧拉方法。
一、欧拉方法欧拉方法是最简单的微分方程数值解法之一。
其基本原理为离散化微分方程,将微分方程中的导数用差商代替。
设要求解的微分方程为dy/dx = f(x, y),步长为h,则可用以下公式进行递推计算:y_{n+1} = y_n +hf(x_n, y_n)二、算法实现为了对欧拉方法进行数值实验,我们以一阶线性常微分方程为例:dy/dx = x - y, y(0) = 1步骤如下:(1)选择合适的步长h和求解区间[a, b],这里我们取h=0.1,[a, b] = [0, 1];(2)初始化y_0 = 1;(3)利用欧拉方法递推计算y_{n+1} = y_n + 0.1(x_n - y_n);(4)重复步骤(3),直到x_n = 1。
三、实验结果与讨论我们通过上述步骤得到了在[0, 1]上的近似解y(x)。
下图展示了欧拉方法求解的结果。
从图中可以看出,欧拉方法得到的近似解与精确解有一定的偏差。
这是因为欧拉方法只是通过递推计算得到的近似解,并没有考虑到更高阶的误差。
所以在需要高精度解时,欧拉方法并不理想。
四、改进的欧拉方法针对欧拉方法的不足,我们可以考虑使用改进的欧拉方法(也称为改进的欧拉-柯西方法)。
它是通过利用前后两个步长欧拉方法得到的结果作为差商的中间项,从而提高了求解精度。
一阶线性常微分方程的改进欧拉方法可以表示为:y_{n+1} = y_n + h(f(x_n, y_n) + f(x_{n+1}, y_n + hf(x_n,y_n)))/2五、算法实现与结果展示将改进的欧拉方法应用于前述的一阶线性常微分方程,我们同样选择h=0.1,[a, b] = [0, 1]。
Euler 方法
![Euler 方法](https://img.taocdn.com/s3/m/173e38671711cc7931b71643.png)
| y( x ) y( xm ) | dx
Kh / 2 L
| y( xm ( x xm )) | ( x xm ) dx
( K LM )h2 / 2
其中: 0 1, M max | y( x ) | max | f ( x, y( x )) | 。
(*)
<< 第10页/共26页 >>
注意:对于Euler方法
h2 将 R M1代入()式得: 若 0 y0 y x0 0, 2
m 1
hM 1 L( b a ) e 1 2L
这里M 1 =( K LM ), 可记为 m O h ,
说明Euler方法的整体截断误差与h同阶。
欧拉方法的几何意义:
y X
y x2
yn
y0
y x1
y1
y2
x0
x1
x2
X
h步长
Euler方法的几何意义
<< 第4页/共26页 >>
xn
二、误差分析
Rm 称为局部截断误差,它表示当 ym y( xm )为
精确值时, 计算时 y( xm h) 的误差。
m y( xm ) ym , 记:
<< 第8页/共26页 >>
从而有:
| m 1 || m | hL | m | R,
对任一 m 0,1,
, N 1, 有:
| m | (1 hL) | m 1 | R
(1 hL)2 | m 2 | (1 hL) R R
(1 hL)m | 0 | R (1 hL) j
实验报告七常微分方程初值问题的数值解法
![实验报告七常微分方程初值问题的数值解法](https://img.taocdn.com/s3/m/4b2d607432687e21af45b307e87101f69e31fbc7.png)
浙江大学城市学院实验报告课程名称数值计算方法实验项目名称常微分方程初值问题的数值解法 实验成绩指导老师签名日期2015/12/16 一.实验目的和要求1. 用Matlab 软件掌握求微分方程数值解的欧拉方法和龙格-库塔方法; 2. 通过实例学习用微分方程模型解决简化的实际问题;二.实验内容和原理编程题2-1要求写出Matlab 源程序m 文件,并有适当的注释语句;分析应用题2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab 源程序和运行结果和结果的解释、算法的分析写在实验报告上; 2-1 编程编写用向前欧拉公式和改进欧拉公式求微分方程数值解的Matlab 程序,问题如下:在区间[],a b 内(1)N +个等距点处,逼近下列初值问题的解,并对程序的每一句添上注释语句; Euler 法y=eulera,b,n,y0,f,f1,b1改进Euler 法y=eulerproa,b,n,y0,f,f1,b1 2-2 分析应用题假设等分区间数100n =,用欧拉法和改进欧拉法在区间[0,10]t ∈内求解初值问题()()20(0)10y t y t y '=-⎧⎨=⎩并作出解的曲线图形,同时将方程的解析解也画在同一张图上,并作比较,分析这两种方法的精度; 2-3 分析应用题用以下三种不同的方法求下述微分方程的数值解,取10h = 画出解的图形,与精确值比较并进行分析; 1欧拉法; 2改进欧拉法; 3龙格-库塔方法;2-4 分析应用题考虑一个涉及到社会上与众不同的人的繁衍问题模型;假设在时刻t 单位为年,社会上有人口()x t 人,又假设所有与众不同的人与别的与众不同的人结婚后所生后代也是与众不同的人;而固定比例为r 的所有其他的后代也是与众不同的人;如果对所有人来说出生率假定为常数b ,又如果普通的人和与众不同的人的婚配是任意的,则此问题可以用微分方程表示为:其中变量()()()i p t x t x t =表示在时刻t 社会上与众不同的人的比例,()i x t 表示在时刻t 人口中与众不同的人的数量;1假定(0)0.01,0.02p b ==和0.1r =,当步长为1h =年时,求从0t =到50t =解()p t 的近似值,并作出近似解的曲线图形;2精确求出微分方程的解()p t ,并将你当50t =时在分题b 中得到的结果与此时的精确值进行比较; MATLAB 相关函数求微分方程的解析解及其数值的代入dsolve‘egn1’,‘egn2’,‘x ’ subsexpr,{x,y,…},{x1,y1,…}其中‘egn i ’表示第i 个方程,‘x ’表示微分方程中的自变量,默认时自变量为t ; subs 命令中的expr 、x 、y 为符合型表达式,x 、y 分别用数值x1、x2代入; >>symsxyz>>subs'x+y+z',{x,y,z},{1,2,3} ans= 6>>symsx>>subs'x^2',x,2 ans= 4>>s=dsolve‘12Dy y ∧=+’,‘(0)1y =’,‘x ’ ans= >>symsx >>subss,x,2 ans=右端函数(,)f x y 的自动生成f=inline ‘expr ’,’var1’,‘var2’,……其中’expr ’表示函数的表达式,’var1’,‘var2’表示函数表达式中的变量,运行该函数,生成一个新的函数表达式为fvar1,var2,……; >>f=inline'x+3y','x','y' f=Inlinefunction: fx,y=x+3y >>f2,3 ans= 114,5阶龙格-库塔方法求解微分方程数值解t,x=ode45f,ts,x0,options其中f 是由待解方程写成的m 文件名;x0为函数的初值;t,x 分别为输出的自变量和函数值列向量,t的步长是程序根据误差限自动选定的;若ts=t0,t1,t2,…,tf,则输出在自变量指定值,等步长时用ts=t0:k:tf,输出在等分点;options 用于设定误差限可以缺省,缺省时设定为相对误差310-,绝对误差610-,程序为:options=odeset ‘reltol ’,rt,’abstol ’,at,这里rt,at 分别为设定的相对误差和绝对误差;常用选项见下表;选项名 功能 可选值 省缺值 AbsTol 设定绝对误差正数 RelTol 设定相对误差 正数InitialStep 设定初始步长 正数 自动 MaxStep设定步长上界正数MaxOrder 设定ode15s 的最高阶数 1,2,3,4,5 5 Stats 显示计算成本统计 on,off off BDF 设定ode15s 是否用反向差分on,offoff例:在命令窗口执行>>odefun =inline ‘2*y t y -’,‘t ’,‘y ’;>>[],45(,[0,4],1)t y ode odefun =;ans=>>t y ‘o-’,%解函数图形表示>>45(,[0,4],1)ode odefun %不用输出变量,则直接输出图形 >>[],45(,0:4,1)t y ode odefun =;[],t yans=三.操作方法与实验步骤包括实验数据记录和处理2-1编程编写用向前欧拉公式和改进欧拉公式求微分方程数值解的Matlab 程序,问题如下:在区间[],a b 内(1)N +个等距点处,逼近下列初值问题的解,并对程序的每一句添上注释语句; Euler 法y=eulera,b,n,y0,f,f1,b1改进Euler 法y=eulerproa,b,n,y0,f,f1,b1Euler 法y=eulera,b,n,y0,f,f1,b1 y=zeros1,n+1; y1=y0; h=b-a/n; x=a:h:b; fori=1:n; yi+1=yi+hfxi,yi; end plotx,y holdon%求微分方程的精确解 x1=linspacea,b,100; '精确解为' s=dsolvef1,b1,'x' symsxy1=zeros1,100; for i=1:100y1i=subss,x,x1i; endplotx1,y1,'r'title'红色代表精确解'改进Euler 法y=eulerproa,b,n,y0,f,f1,b1 %求微分方程的数值解 y=zeros1,n+1; y1=y0; h=b-a/n; x=a:h:b; fori=1:n; T1=fxi,yi; T2=fxi+1,yi+hT1; yi+1=yi+h/2T1+T2; end plotx,y holdon%求微分方程的精确解 x1=linspacea,b,100; '精确解为' s=dsolvef1,b1,'x' symsxy1=zeros1,100; fori=1:100 y1i=subss,x,x1i; endplotx1,y1,'r'title'红色代表精确解' 2-2分析应用题假设等分区间数100n =,用欧拉法和改进欧拉法在区间[0,10]t ∈内求解初值问题()()20(0)10y t y t y '=-⎧⎨=⎩并作出解的曲线图形,同时将方程的解析解也画在同一张图上,并作比较,分析这两种方法的精度;1向前欧拉法>>euler0,10,100,10,inline'y-20','x','y','Dy=y-20','y0=10' ans= 精确解为 s= 20-10expx ans= +005Columns1through8(2)改进欧拉法>>eulerpro0,10,100,10,inline'y-20','x','y','Dy=y-20','y0=10' ans= 精确解为 s= 20-10expx ans= +005Columns1through8改进欧拉法的精度比向前欧拉法更高; 2-3分析应用题用以下三种不同的方法求下述微分方程的数值解,取10h = 画出解的图形,与精确值比较并进行分析; 1欧拉法; 2改进欧拉法;2-4分析应用题考虑一个涉及到社会上与众不同的人的繁衍问题模型;假设在时刻t 单位为年,社会上有人口()x t 人,又假设所有与众不同的人与别的与众不同的人结婚后所生后代也是与众不同的人;而固定比例为r 的所有其他的后代也是与众不同的人;如果对所有人来说出生率假定为常数b ,又如果普通的人和与众不同的人的婚配是任意的,则此问题可以用微分方程表示为:其中变量()()()i p t x t x t =表示在时刻t 社会上与众不同的人的比例,()i x t 表示在时刻t 人口中与众不同的人的数量;1假定(0)0.01,0.02p b ==和0.1r =,当步长为1h =年时,求从0t =到50t =解()p t 的近似值,并作出近似解的曲线图形;2精确求出微分方程的解()p t ,并将你当50t =时在分题b 中得到的结果与此时的精确值进行比较;1>>euler0,50,50,,inline'','t','p','Dp=','p0= 1' ans= 精确解为 s=1-99/100expx/500 ans=Columns1through82>>dsolve'Dp=','p0=','t' ans=1-99/100expt/500 >>1-99/100exp ans=与欧拉法求得的精确值差0,0001四.实验结果与分析。
Euler法和改进的Euler法实验报告
![Euler法和改进的Euler法实验报告](https://img.taocdn.com/s3/m/ad5ae2ceb4daa58da1114a5f.png)
用Euler法和改进的Euler法求u' -5u(0 < t w,,(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:nf=-5*u(i-1); u(i)=u(i-1)+h*f;zbu(1,i)=t(i); zbu(2,i)=u(i);endzbu%改进的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 zbvplot(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 onlegend( 'Euler 法’,'?改进的Euler 法','解析解')%解真值h=0.1;t=O:h:1;n=len gth(t);for i=1: ny(i)=1/exp(5*t(i)); %通过第一部分程序直接解得的解析解zby(1,i)=t(i);zby(2,i)=y(i);endzby我们可以得到计算后的结果图像如图一所示EulBr法和改进的Eutgr法比较)0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.9 09 1图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.5000 0.2500 0.1250 0.0625 0.0313 0.0156 0.0078 0.0039 0.0020 0.0010 改进欧拉 1.0000 0.6250 0.3906 0.2441 0.1526 0.0954 0.0596 0.0373 0.0233 0.0146 0.0091 真值 1.0000 0.6065 0.3679 0.2231 0.1353 0.0821 0.0498 0.0302 0.0183 0.0111 0.0067 表1 Euler法和改进的Euler法在各点数值比较(h=0.1)为了比较Euler法和改进的Euler法的算法精度,在这里我们利用相对误差的概念进行评判。
两步欧拉法实验报告
![两步欧拉法实验报告](https://img.taocdn.com/s3/m/1e4d43320912a21614792930.png)
缺点:这种方法是隐式的,即要调用前面两步的信息,这种格式的计算远比显示的向前或向后欧拉法要困难。
三、算法
基本算法:首先将区间离散化,其次利用中心差商 代替其中的导数项 ,得递推公式 ,消除其倒数项,将微分方程离散化。
1.使步长h=(b-a)/k;解
2.令x=a+nh,解 ;
3.使 ,
4.输出x+h,Y,重复第2,3步;
5..结束。
四、结构程序设计
program main
implicit none
y0=y1
y1=y
write(*,*) x+h,y1
end do
end
五、结果及讨论分析
0.1000000 1.220000
0.2000000 1.311213
0.3000000 1.421230
0.4000000 1.511025
0.5000000 1.617547
0.6000000 1.710891
求解初值问题 )
y(0)=1
一、课题名称:两步欧拉方法
二、引言
目的:实际问题例如航天技术,器件的加工等都需要很高的精度,往往对计算方法有较高的要求。好的方法所带来的效益是人人所追求的。因此我们必须掌握更好的,更精确的方法来解决生活中所遇到的一些问题。
意义:能够方便的解决常微分方程的定解问题,在向前欧拉方法的基础上进一步优化方法和程序,使精度得到进一步的提高,使实际问题得到更好的解决,为科学的进步带来了更大的方便。
0.7000000 1.819448
0.8000000 1.920887
数学实验基础 实验报告(1)常微分方程
![数学实验基础 实验报告(1)常微分方程](https://img.taocdn.com/s3/m/8df7430576c66137ee06190b.png)
实验一 常微分方程1. 分别用Euler 法和ode45解下列常微分方程并与解析解比较: (1) ,(0)1,13y x y y x '=+=<<Euler 法:function [t,y]=euler(Fun,tspan,y0,h) t=tspan(1):h:tspan(2); y(1)=y0;for i=1:length(t)-1y(i+1)=y(i)+h.*feval(Fun,t(i),y(i)); end t=t'; y=y';function f=Fun(x,y) % 常微分方程的右端函数 f=x+y;>> [x,y]=euler('Fun',[0,3],1,0.1)>> [x,y] ans =0 1.0000 0.1000 1.1000 0.2000 1.2200 0.3000 1.3620 0.4000 1.5282 0.5000 1.7210 0.6000 1.9431 0.7000 2.1974 0.8000 2.4872 0.9000 2.8159 1.0000 3.1875 1.1000 3.6062 1.2000 4.0769 1.3000 4.6045 1.4000 5.1950 1.5000 5.8545 1.6000 6.5899 1.7000 7.4089 1.8000 8.3198 1.9000 9.3318 2.0000 10.4550 2.1000 11.7005 2.2000 13.0805 2.3000 14.6086 2.4000 16.2995 2.5000 18.1694 2.6000 20.2364 2.7000 22.5200 2.8000 25.0420 2.9000 27.8262 3.0000 30.8988ode45:>> [x,y]=ode45('Fun',[0,3],1) ans =0 1.0000 0.0502 1.0528 0.1005 1.1109 0.1507 1.17460.2010 1.2442 0.2760 1.3596 0.3510 1.4899 0.4260 1.63610.5010 1.7996 0.5760 1.9817 0.6510 2.1838 0.7260 2.4074实验一 常微分方程0.8010 2.6544 0.8760 2.9264 0.9510 3.2254 1.0260 3.55351.1010 3.9131 1.1760 4.3065 1.2510 4.7364 1.3260 5.20561.4010 5.7172 1.4760 6.2744 1.5510 6.8810 1.6260 7.54061.7010 8.2574 1.7760 9.0359 1.8510 9.8808 1.9260 10.79742.0010 11.7912 2.0760 12.8683 2.1510 14.0351 2.2260 15.29862.3010 16.6664 2.3760 18.1466 2.4510 19.7478 2.5260 21.47962.6010 23.3522 2.6760 25.3764 2.7510 27.5641 2.8260 29.92812.9010 32.4820 2.9257 33.3694 2.9505 34.2796 2.9752 35.21343.0000 36.1711解析解:>> y=dsolve('Dy=x+y','y(0)=1','x') y =2*exp(x) - x - 1(2) 20.01()2sin(),(0)0,(0)1,05y y y t y y t ''''-+===<< Euler 法:实验一常微分方程function f=Fun(t,y)% 常微分方程的右端函数f=[y(2);0.01*y(2)^2-2*y(1)+sin(t)];>> [t,y]=euler('Fun',[0,5],[0,1],0.2)ode45:>> [t,y]=ode45('Fun',[0,5],[0,1])t =0 0.0001 0.0001 0.0002 0.0002 0.0005 0.0007 0.0010 0.0012 0.00250.0037 0.0050 0.0062 0.0125 0.0188 0.0251 0.0313 0.0627 0.0941 0.12550.1569 0.2819 0.4069 0.5319 0.6569 0.7819 0.9069 1.0319 1.1569 1.28191.4069 1.5319 1.6569 1.7819 1.90692.0319 2.1569 2.2819 2.4069 2.53192.6569 2.7819 2.90693.0319 3.1569 3.2819 3.4069 3.5319 3.6569 3.78193.90694.0319 4.1569 4.2819 4.4069 4.5319 4.6569 4.7427 4.8285 4.91425.0000y =0 1.0000 0.0001 1.0000 0.0001 1.0000 0.0002 1.0000 0.0002 1.00000.0005 1.0000 0.0007 1.0000 0.0010 1.0000 0.0012 1.0000 0.0025 1.00000.0037 1.0000 0.0050 1.0000 0.0062 1.0000 0.0125 1.0000 0.0188 1.00000.0251 0.9999 0.0313 0.9998 0.0627 0.9987 0.0941 0.9965 0.1253 0.99340.1564 0.9893 0.2786 0.9632 0.3966 0.9220 0.5085 0.8662 0.6126 0.79670.7072 0.7146 0.7908 0.6210 0.8620 0.5176 0.9198 0.4058 0.9632 0.28760.9915 0.1647 1.0043 0.0392 1.0013 -0.0869 0.9826 -0.2117 0.9485 -0.33310.8996 -0.4490 0.8365 -0.5578 0.7605 -0.6577 0.6725 -0.7471 0.5742 -0.8246实验一 常微分方程0.4669 -0.8889 0.3525 -0.9393 0.2327 -0.9748 0.1095 -0.9950 -0.0154 -0.9996-0.1398 -0.9887 -0.2619 -0.9624 -0.3798 -0.9212 -0.4916 -0.8657 -0.5957 -0.7970-0.6904 -0.7161 -0.7742 -0.6242 -0.8460 -0.5228 -0.9046 -0.4134 -0.9491 -0.2978-0.9789 -0.1777 -0.9934 -0.0549 -0.9945 0.0300 -0.9883 0.1146 -0.9748 0.1985-0.9543 0.28092. 求一通过原点的曲线,它在(,)x y 处的切线斜率等于22,0 1.57.x y x +<<若x 上限增为1.58,1.60会发生什么?function f=Fun(x,y) % 常微分方程的右端函数 f=2*x+y.^2;>> [x,y]=ode45('Fun',[0,1.57],0) x =0 0.0393 0.0785 0.1178 0.1570 0.1963 0.2355 0.2748 0.3140 0.3533 0.3925 0.4318 0.4710 0.5103 0.5495 0.5888 0.6280 0.6673 0.7065 0.7458 0.7850 0.8243 0.8635 0.9028 0.9420 0.9813 1.0205 1.0598 1.0990 1.1383 1.1775 1.2168 1.2560 1.2953 1.3345 1.3738 1.4130 1.4248 1.4367 1.4485 1.4604 1.4722 1.4840 1.4959 1.5077 1.5140 1.5203 1.5265 1.5328 1.5376 1.5424 1.5472 1.5519 1.5543 1.5567 1.5591 1.5614 1.5631 1.5647 1.5664 1.5681 1.5685 1.5690 1.5695 1.5700 y =实验一 常微分方程0 0.0015 0.0062 0.0139 0.0247 0.0386 0.0556 0.0758 0.09920.1259 0.1559 0.1895 0.2266 0.2675 0.3124 0.3615 0.4152 0.4738 0.5378 0.6076 0.6841 0.7679 0.8601 0.9620 1.0751 1.2014 1.3434 1.5045 1.6892 1.9037 2.1557 2.4577 2.8282 3.3003 3.9056 4.7317 5.9549 6.4431 7.0116 7.6832 8.4902 9.4821 10.7170 12.3090 14.4551 15.9220 17.7080 19.9390 22.8164 25.6450 29.2282 33.9673 40.5910 44.9434 50.3088 57.1229 66.1087 74.3108 84.7123 98.4901 117.7875 124.9206 132.9699 142.1268 152.641500.20.40.60.81 1.2 1.4 1.6若x 上限增为1.58,1.60,则超出运算的范围,发生溢出。
数值分析实习报告
![数值分析实习报告](https://img.taocdn.com/s3/m/53bc7d84a0116c175f0e4875.png)
数值分析实习报告姓名:***学号:***班级:***1.题目取h=0.1,利用Euler公式求解dy/dx=y-2*x/y (0<=x<=1)y(0)=12.思路利用左矩形公式得到的公式yn+1=yn+hf(xn,yn)进行迭代,在进行迭代的过程使用for循环,让n从1取到10,每迭代一次输出一个x与y,同时x加0.1再进行下一次迭代,一直到循环结束。
3.程序clear; y=1, x=0, %初始化for n=1:10y=1.1*y-0.2*x/y, x=x+0.1,end4.运行结果y =1 x =0y =1.1000 x =0.1000y =1.1918 x =0.2000y =1.2774 x =0.3000y =1.3582 x =0.4000y =1.4351 x = 0.5000y =1.5090 x = 0.6000y =1.5803 x = 0.7000y =1.6498 x = 0.8000y =1.7178 x =0.9000y =1.7848 x =1.00001.题目取h=0.1,利用Euler公式求解dy/dx=y-2*x/y (0<=x<=1)y(0)=12.思路利用右矩形公式得到的公式yn+1=yn+hf(xn+1,yn+1)进行迭代,在进行迭代的过程使用for 循环,让n从1取到10,每迭代一次输出一个x与y,同时x加0.1再进行下一次迭代,一直到循环结束。
3.程序clear; y0=1, x0=0, %初始化for n=1:10yp=y0+0.1*(y0-2*x0/y0);x=x0+0.1;x0=xyp=y0+0.1*(yp-2*x/yp)y0=ypend4.运行结果y =1 x =0y =1.0918 x =0.1000y =1.1763 x =0.2000y =1.2546 x =0.3000y =1.3278 x =0.4000y =1.3964 x =0.5000y =1.4609 x =0.6000y =1.5216 x =0.7000y =1.5786 x =0.8000y =1.6321 x =0.9000y =1.6819 x =1.00001.题目取h=0.1,利用梯形法求解dy/dx=y-2*x/y (0<=x<=1)y(0)=12.思路利用右矩形公式得到的公式yn+1=yn+hf(xn+1,yn+1)进行迭代,在进行迭代的过程使用for 循环,让n从1取到10,每迭代一次输出一个x与y,同时x加0.1再进行下一次迭代,一直到循环结束。
微分方程数值解法实验报告
![微分方程数值解法实验报告](https://img.taocdn.com/s3/m/5ad937640622192e453610661ed9ad51f11d5440.png)
微分方程数值解法实验报告实验题目:数值解微分方程的实验研究引言:微分方程是描述自然现象、科学问题和工程问题中变量之间的关系的重要数学工具。
然而,大部分微分方程很难找到解析解,因此需要使用数值方法来近似求解。
本实验旨在研究数值解微分方程的方法和工具,并通过实验验证其有效性和准确性。
实验步骤:1.了解微分方程的基本概念和求解方法,包括欧拉法、改进的欧拉法和龙格-库塔法。
2. 配置实验环境,准备实验所需的工具和软件,如Python编程语言和相关数值计算库。
3.选择一种微分方程进行研究和求解,可以是一阶、二阶或更高阶的微分方程。
4.使用欧拉法、改进的欧拉法和龙格-库塔法分别求解选定的微分方程,并比较其结果的准确性和稳定性。
5.计算数值解与解析解之间的误差,并进行误差分析和讨论。
6.对比不同数值解法的性能,包括计算时间和计算精度。
7.结果展示和总结,根据实验结果对数值解方法进行评价和选取。
实验结果:以一阶线性常微分方程为例,我们选择经典的“衰减振荡”问题进行实验研究。
该问题的微分方程形式为:dy/dt = -λy其中,λ为正实数。
我们首先使用Python编程语言实现了欧拉法、改进的欧拉法和龙格-库塔法。
进一步,我们选择了λ=0.5和初始条件y(0)=1,使用这三种数值解法求解该微分方程,并比较结果的准确性。
通过对比数值解和解析解可以发现,在短时间内,欧拉法、改进的欧拉法和龙格-库塔法的结果与解析解非常接近。
但随着时间的增加,欧拉法的结果开始偏离解析解,而改进的欧拉法和龙格-库塔法仍然能够提供准确的近似解。
这是因为欧拉法采用线性逼近的方式,误差随着步长的增加而累积,而改进的欧拉法和龙格-库塔法采用更高阶的逼近方式,可以减小误差。
为了更直观地比较不同方法的性能,我们还计算了它们的计算时间。
实验结果显示,欧拉法计算时间最短,而龙格-库塔法计算时间最长。
这表明在计算时间要求较高的情况下,可以选择欧拉法作为数值解方法。
牛顿拉夫逊法实验报告及程序
![牛顿拉夫逊法实验报告及程序](https://img.taocdn.com/s3/m/cb69f2235901020207409ca9.png)
实验报告实验课程:电力系统分析学生姓名:学号:专业班级:电力系统班2010年 6 月 14 日南昌大学实验报告学生姓名:*** 学号:专业班级:电力系统班实验类型:□验证■综合□设计□创新实验日期:2010.5.31-6.14 实验成绩:一、实验项目名称:电力系统潮流计算实验二、实验目的:本实验通过对电力系统潮流计算的计算机程序的编制与调试,获得对复杂电力系统进行潮流计算的计算机程序,使系统潮流计算能够由计算机自行完成,即根据已知的电力网的数学模型(节点导纳矩阵)及各节点参数,由计算程序运行完成该电力系统的潮流计算。
通过实验教学加深学生对复杂电力系统潮流计算计算方法的理解,学会运用电力系统的数学模型,掌握潮流计算的过程及其特点,熟悉各种常用应用软件,熟悉硬件设备的使用方法,加强编制调试计算机程序的能力,提高工程计算的能力,学习如何将理论知识和实际工程问题结合起来。
三、实验基本原理:(一)潮流计算的基本概念电力系统的潮流方程的一般形式是式(1-1)将上述方程的实部和虚部分开,对每一节点可的两个实数方程,但是变量仍有4个,即P、Q、V、δ。
我们必须给定其中的2个,而留下的两个作为待求变量,方程组才可以求解。
根据电力系统的实际运行条件,按给定变量的不同,一般将节点分为以下三种类型。
根据给定的控制变量和状态变量的不同分类如下1.P、Q节点(负荷节点),给定Pi、Qi求Vi、Si,所求数量最多;2.负荷节点,变电站节点(联络节点、浮游节点),给定PGi 、QGi的发电机节点,给定QGi的无功电源节点;3.PV节点(调节节点、电压控制节点),给定Pi 、Qi求Qn、Sn,所求数量少,可以无有功储备的发电机节点和可调节的无功电源节点;4.平衡节点(松弛节点、参考节点(基准相角)、S节点、VS节点、缓冲节点),给定V i,δi=0,求Pn、Qn(Vs、δs、Ps、Qs)。
将平衡系统的有功平衡节点和各节点电压相角的参考接地节点可以合二为一,对于有较大调节裕量的发电机节点或出现最多的发电机节点可以改善收敛。
数值计算方法常微分方程的Euler方法与改进的Euler方法
![数值计算方法常微分方程的Euler方法与改进的Euler方法](https://img.taocdn.com/s3/m/e463a519ba1aa8114431d9c9.png)
《数值计算方法》实验7报告班级:学号: 姓名: 成绩:1. 实验名称实验7 常微分方程的Euler 方法与改进的Euler 方法2. 实验题目取步长h =0.2,用Euler 方法和改进的Euler 方法求初值问题2',[0,1](0)1y y x x y y ⎧=-∈⎪⎨⎪=⎩的数值解,并将计算结果与解析解y =3. 实验目的掌握求解常微分方程的Euler 方法,熟悉改进的Euler 方法.4. 基础理论对于初值问题0'(,),[,]()y f x y x a b y a y =∈⎧⎨=⎩取节点i x a ih =+,则求解其数值解的Euler 公式为1(,),(0,1,,)n n n n y y hf x y n N +=+=改进的Euler 公式(也叫预报-校正法)为111(,)[(,)(,)]2n n n n n n n n n n y y hf x y h y y f x y f x y +++=+⎧⎪⎨=++⎪⎩ 5. 实验环境操作系统:Windows xp ;6. 实验过程第一步,确定好初值;先借Euler 公式求得一个初步的近似值,并且称之为预报值。
第二步,因为预报值精度低,所以要用它代替梯形公式右端的值,重新使用梯形公式计算一次,就得到了校正值。
7. 结果与分析精确解 Euler 方法改进Euler 方法x y ye[k] |ye[k]-y|ym[k] |ym[k]-y|0.0 1.000000 1.000000 0.000000 1.0000 00 0.0000000.2 1.095445 1.200000 0.104555 1.186667 0.0912220.4 1.183216 1.373333 0.190117 1.348312 0.1650960.6 1.264911 1.531495 0.266584 1.493704 0.2287930.8 1.341641 1.681085 0.339444 1.627861 0.2862211.0 1.414214 1.826948 0.412735 1.754205 0.339991Press any key to continue根据结果,可以得出,使用Euler公式计算方便,计算量少,然而,它的精度比较低。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验课程名称数值计算方法
实验项目名称 Euler 方法
年级 09级
专业信息与计算科学
学生姓名姜露
学号 0907010200
理学院
实验时间:2011 年 5 月 30日
学生实验室守则
一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。
二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。
三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。
四、实验必须服从教师的安排和指导,认真按规程操作,未经教师允许不得擅自动用仪器设备,特别是与本实验无关的仪器设备和设施,如擅自动用或违反操作规程造成损坏,应按规定赔偿,严重者给予纪律处分。
五、实验中要节约水、电、气及其它消耗材料。
六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。
七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。
仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。
八、实验完毕,应清理好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。
九、无故不参加实验者,应写出检查,提出申请并缴纳相应的实验费及材料消耗费,经批准后,方可补做。
十、自选实验,应事先预约,拟订出实验方案,经实验室主任同意后,在指导教师或实验技术人员的指导下进行。
十一、实验室内一切物品未经允许严禁带出室外,确需带出,必须经过批准并办理手续。
学生所在学院:理学院专业:信息与计算科学班级:091。