(完整版)计算物理实验报告常微分方程

合集下载

常微分方程 课程实习报告

常微分方程  课程实习报告

福建农林大学计算机与信息学院(数学类课程)课程实习报告课程名称:常微分方程课程实习实习题目:常微分方程数值求解问题的实习姓名:上官火玉系:信息与计算科学专业:信息与计算科学年级:2008学号:081152048指导教师:陈永雪职称:讲师2010 年12 月 1 日福建农林大学计算机与信息学院数学类课程实习报告结果评定目录1. 实习的目的和任务 (1)2. 实习要求 (1)3. 实习地点 (1)4. 主要仪器设备 (1)5. 实习内容 (1)5.1 用不同格式对同一个初值问题的数值求解及其分析 (1)5.1.1求精确解 (1)5.1.2用欧拉法求解 (3)5.1.3用改进欧拉法求解 (5)5.1.4用4级4阶龙格—库塔法求解 (7)5.1.5 问题讨论与分析 (10)5.2 一个算法不同不长求解同一个初值问题及其分析 (12)6. 结束语 (13)参考文献 (13)常微分方程课程实习1.实习的目的和任务目的:通过课程实习能够应用MATLAB软来计算微分方程(组)的数值解;了解常微分方程数值解。

任务:通过具体的问题,利用MATLAB软件来计算问题的结果,分析问题的结论。

2.实习要求能够从案例的自然语言描述中,抽象出其中的数学模型;能够熟练应用所学的数值解计算方法;能够熟练使用MATLAB软件;对常微分方程数值解有所认识,包括对不同算法有所认识和对步长有所认识。

3.实习地点数学实验室4.主要仪器设备计算机、Microsoft Windows XPMatlab 6.55.实习内容5.1 用欧拉方法,改进欧拉方法,4阶龙格—库塔方法分别求下面微分方程的初值dy/dx=y+x+1 y(0)=1 x∈[0,2]5.1.1求精确解首先可以求得其精确解为:y=3*exp(x)-x-25.1.1 程序代码:>> x=0:0.1:2;>> y=3*exp(x)-x-2>> plot(x,y,'b*-');>> Data=[x',y']y =Columns 1 through 91.0000 1.2155 1.4642 1.74962.0755 2.44622.86643.3413 3.8766Columns 10 through 184.47885.1548 5.91256.76047.70798.76569.9451 11.2591 12.7218Columns 19 through 2114.3489 16.1577 18.1672Data =0 1.00000.1000 1.21550.2000 1.46420.3000 1.74960.4000 2.07550.5000 2.44620.6000 2.86640.7000 3.34130.8000 3.87660.9000 4.47881.0000 5.15481.1000 5.91251.2000 6.76041.3000 7.70791.4000 8.76561.5000 9.94511.6000 11.25911.7000 12.72181.8000 14.34891.9000 16.15772.0000 18.1672>>00.20.40.60.81 1.2 1.4 1.6 1.825.1.2 用欧拉法求解程序如下:建立函数文件cwfa1.mfunction [x,y]=cwfa1(fun,x_span,y0,h)x=x_span(1):h:x_span(2);y(1)=y0;for n=1:length(x)-1y(n+1)=y(n)+h*feval(fun,x(n),y(n)); endx=x';y=y';在MATLAB输入以下程序:>> clear all>> fun=inline(' y+x+1');>> [x,y]=cwfa1(fun,[0,2],1,0.1);>> [x,y]>> plot(x,y,'r*-')结果及其图象:ans =0 1.00000.1000 1.20000.2000 1.43000.3000 1.69300.4000 1.99230.5000 2.33150.6000 2.71470.7000 3.14620.8000 3.63080.9000 4.17381.0000 4.78121.1000 5.45941.2000 6.21531.3000 7.05681.4000 7.99251.5000 9.03171.6000 10.18491.7000 11.46341.8000 12.87981.9000 14.44772.0000 16.182500.20.40.60.81 1.2 1.4 1.6 1.825.1.3用改进欧拉法求解:程序如下:建立函数文件cwfa2.mfunction [x,y]=cwfa2(fun,x_span,y0,h)x=x_span(1):h:x_span(2);y(1)=y0;for n=1:length(x)-1k1=feval(fun,x(n),y(n));y(n+1)=y(n)+h*k1;k2=feval(fun,x(n+1),y(n+1));y(n+1)=y(n)+h*(k1+k2)/2;endx=x';y=y';在MATLAB输入以下程序:>> clear all>> fun=inline(' y+x+1');>> [x,y]=cwfa2(fun,[0,2],1,0.1); >> [x,y]>> plot(x,y,'r+-')结果及其图象:ans =0 1.00000.1000 1.21500.2000 1.46310.3000 1.74770.4000 2.07270.5000 2.44230.6000 2.86130.7000 3.33470.8000 3.86840.9000 4.46851.0000 5.14221.1000 5.89721.2000 6.74191.3000 7.68581.4000 8.73931.5000 9.91391.6000 11.22241.7000 12.67871.8000 14.29851.9000 16.09882.0000 18.0987>>00.20.40.60.81 1.2 1.4 1.6 1.825.1.4 用4阶龙格—库塔求解程序如下:建立函数文件cwfa3.mfunction [x,y]=cwfa3(fun,x_span,y0,h)x=x_span(1):h:x_span(2);y(1)=y0;for n=1:length(x)-1k1=feval(fun,x(n),y(n));k2=feval(fun,x(n)+h/2,y(n)+h/2*k1);k3=feval(fun,x(n)+h/2,y(n)+h/2*k2);k4=feval(fun,x(n+1),y(n)+h*k3);y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6;endx=x';y=y';在MATLAB输入以下程序:>> clear all;>> fun=inline(' y+x+1');>> [x,y]=cwfa3(fun,[0,2],1,0.1); >> [x,y]>> plot(x,y, 'b+-')结果及其图象:ans =0 1.00000.1000 1.21550.2000 1.46420.3000 1.74960.4000 2.07550.5000 2.44620.6000 2.86640.7000 3.34130.8000 3.87660.9000 4.47881.0000 5.15481.1000 5.91251.2000 6.76031.3000 7.70791.4000 8.76561.5000 9.94511.6000 11.25911.7000 12.72181.8000 14.34891.9000 16.15772.0000 18.1671>>00.20.40.60.81 1.2 1.4 1.6 1.825.1.5 问题讨论与分析由以上数值分析结果绘制表格:x=0:0.1:2;y1 = [1.0000 1.2155 1.4642 1.7496 2.0755 2.4462 2.8664 3.3413 3.8766 4.4788 5.1548 5.9125 6.7604 7.7079 8.7656 9.9451 11.2591 12.7218 14.3489 16.1577 18.1672];>> y1=[1.0000 1.2155 1.4642 1.7496 2.0755 2.4462 2.8664 3.3413 3.8766 4.4788 5.1548 5.9125 6.7604 7.7079 8.7656 9.9451 11.2591 12.7218 14.3489 16.1577 18.1672];>> y2=[1.0000 1.2000 1.4300 1.6930 1.9923 2.3315 2.7147 3.1462 3.6308 4.1738 4.7812 5.4594 6.2153 7.0568 7.9925 9.0317 10.1849 11.4634 12.8798 14.4477 16.1825];>> y3=[1.0000 1.2150 1.2192 1.4631 1.7477 2.0727 2.4423 2.8613 3.8684 4.4685 5.1422 5.8972 6.7419 7.6858 8.7393 9.9139 11.2224 12.6787 14.2985 16.0988 18.0987];>> y4=[1.0000 1.2155 1.4642 1.7496 2.0755 2.4462 2.8664 3.3413 3.8766 4.4788 5.1548 5.9125 6.7603 7.7079 8.7656 9.9451 11.2591 12.7218 14.3489 16.1577 18.1671 ];>> plot(x,y1,'r+-')>> hold on,plot(x,y2,'b-')>> plot(x,y1,'r+-')>> hold on,plot(x,y3,'b-')>> plot(x,y1,'r+-')>> hold on,plot(x,y4,'b-')00.20.40.60.81 1.2 1.4 1.6 1.8200.20.40.60.81 1.2 1.4 1.6 1.8200.20.40.60.81 1.2 1.4 1.6 1.82由上表和图可以看出欧拉法误差最大,而改进欧拉和龙格—库塔方法误差相对较小,并且龙格—库塔方法误差最小且大部分值都跟精确值相同。

(完整版)常微分方程初等解法及其求解技巧毕业论文

(完整版)常微分方程初等解法及其求解技巧毕业论文

目录摘要 (I)关键词 (I)Abstract (I)Key words (I)1.前言 (1)2.常微分方程的求解方法 (1)2.1常微分方程变量可分离类型解法 (1)2.1.1直接可分离变量的微分方程 (3)2.1.2可化为变量分离方程 (3)2.2常数变易法 (7)2.2.1一阶线性非齐次微分方程的常数变易法 (7)2.2.2一阶非线性微分方程的常数变易法 (8)2.3积分因子法 (12)3.实例分析说明这几类方法间的联系及优劣 (14)3.1几个重要的变换技巧及实例 (14)3.1.1变为 (14)3.1.2分项组合法组合原则 (15)3.1.3积分因子选择 (15)参考文献 (16)致谢 (17)常微分方程初等解法及其求解技巧摘要常微分方程是微积分学的重要组成部分,广泛用于具体问题的研究中.求解常微分的问题,常常通过变量分离、两边积分,如果是高阶的则通过适当的变量代换,达到降阶的目的来解决问题.本文就是对不同类型的常微分方程的解法及其求解技巧的系统总结:先介绍求解常微分方程的几种初等解法,如变量分离法,常数变易法,积分因子法等,在学习过程中,通过对不同类型的方程求解,揭示常微分方程的求解规律.然后介绍几类方程求解中的变换技巧及规律,并通过实例来分析这几类方法之间的联系及优劣,从而能快速的找到最佳解法.关键词变量分离法常数变易法积分因子变换技巧Elementary Solution and Solving Skills of OrdinaryDifferential EquationAbstractOrdinary differential equations are important components of calculus and used extensively for the studies on specific issues. Ordinary differential equations are often resolved by the means of variable separation and both sides integral. If they are higher-order ones, we can reduce their order by proper variable substitution to solve this problem. This essay aims at concluding systematically the methods of different types of differential equations and its resoling skills. First of all, I’d would like to introduce several basic resolutions of differential equations, such as variable separation, constant threats, points factor, etc. In the process of learning, I’d like to reduce the law of resolving ordinary differential equations by resolving different types of equations. Then, we describe several equations resolutions and for transformation techniques and its laws,and we also analyze the advantages and disadvantages and connections by using the examples of these methods to be able to find the best solution quickly.Key wordsVariable separation; constant threats; points factor; transform techniques1.前言数学发展的历史告诉我们,300年来数学分析是数学的首要分支,而微分方程又是数学分析的心脏,它还是高等分析里大部分思想和理论的根源.人所共知,常微分方程从它产生的那天起, 就是研究自然界变化规律、研究人类社会结构、生态结构和工程技术问题的强有力工具.它的发展历史也是跟整个科学发展史大致同步的.现在,常微分方程在很多学科领域内有着重要的应用,自动控制、各种电子学装置的设计、弹道的计算、飞机和导弹飞行的稳定性质的研究、化学反应稳定性的研究等.这些问题都可以转化为求常微分方程的解,或者化为研究解的性质的问题.常微分方程具有广泛的社会实践性,无论是在各类学科领域上,还是在实际生产生活中,都有举足轻重的作用.它所涉及范围之广,致使前人对它做了很深入的研究.应用常微分方程理论已经取得了很大的成就,但是,它现有的理论也还远远不能满足需要,还有待进一步的发展,使这门学科的理论更加完善.微分方程是表达自然规律的一种自然的数学语言.它从生产实践与科学技术中产生,而又成为现代科学技术中分析问题与解决问题的一个强有力的工具.人们在探求物质世界某些规律的过程中,一般很难完全依靠实验观测认识到该规律,反而是依照某种规律存在的联系常常容易被我们捕捉到,而这种规律用数学语言表达出来,其结果往往形成一个微分方程,而一旦求出方程的解,其规律则一目了然.所以我们必须能够求出它的解.常微分方程的初等解法,既是常微分方程理论中有自身特色的部分,也与实际问题密切相关;恰当对初等解法进行归类,能正确而又敏捷地判断一个给定的方程属于何种类型,从而能按照所介绍的方法进行分解.总之,常微分方程属于数学分析或基础数学的一个组成部分,在整个数学大厦中占据这重要位置,学好常微分方程基本理论与方法对进一步学习研究数学理论与实际应用均非常重要,因此本文对常微分方程的初等解法进行了简要归纳和分析,主要讨论变量分离方程,非恰当微分方程,线性微分方程,同时结合具体的实例,展示了初等解法在解题过程中的应用及其求解过程中的变换技巧和律.2.常微分方程的求解方法2.1常微分方程变量可分离类型解法定义1 如果一阶微分方程具有形式,则该方程称为可分离变量微分方程.若设,则可将方程化为.即将两个变量分离在等式两端.其特点是:方程的一端只含有的函数与,另一端只含有的函数与.对于该类程,我们通常采用分离变量的方法来处理。

CP计算物理常微分方程解实用

CP计算物理常微分方程解实用
Qn1 Qn hIn , (n 0,1,2,...)
In1 In h(E Qn / C InR) / L, (n 0,1,2,...)
第13页/共45页
function main %欧拉法:二阶常微分方程 global E R C L; E=10;R=100;C=0.01;L=10; Q0=0;I0=0;h=0.01;t=[0:h:10]; Q(1)=Q0; I(1)=I0; for i=2:length(t)
这里差 hi xi1 xi ,i = 0,1, …, n 称为由 xi 到 xi+1 的步长。这些 hi 可以
不相等,但一般取成相等的,这时 h b a 。在这些节点上采用离散化 n
方法(通常用泰勒展开),将上述初值问题化成关于离散变量的相应问题。 把这个相应问题的解 yn 作为 y(xn)的近似值。这样求得的 yn 就是上述初值 问题在节点 xn 上的数值解。一般说来,不同的离散化导致不同的方法。
h(E h(E
Qn / C
Q n
In R)/ L
/
C
I
n
R)/
L
(n
,,,...)
第15页/共45页
function main %改进欧拉法:二阶常微分方程 global E R C L; E=10;R=100;C=0.01;L=10; Q0=0;I0=0;h=0.01;t=[0:h:10];Q(1)=Q0;I(1)=I0; for i=2:length(t)
C=0.01法
E=10伏
第9页/共45页
解:分析得电量满足如下常微分方程
dQ
dt
Q RC
Q(t0 ) Q0
初始状态:
Q0 E / C 10/ 0.01; 取h 0.01, 计算t [0,1]上结果,此时

实验报告——常微分方程的数值解法

实验报告——常微分方程的数值解法

实验报告实验项目名称常微分方程的数值解法实验室数学实验室所属课程名称微分方程数值解实验类型上机实验实验日期2013年3月11日班级10信息与计算科学学号2010119421姓名叶达伟成绩实验概述:【实验目的及要求】运用不同的数值解法来求解具体问题,并通过具体实例来分析比较各种常微分方程的数值解法的精度,为以后求解一般的常微分方程起到借鉴意义。

【实验原理】各种常微分方程的数值解法的原理,包括Euler法,改进Euler法,梯形法,Runge-Kutta方法,线性多步方法等。

【实验环境】(使用的软硬件)Matlab软件实验内容:【实验方案设计】我们分别运用Euler法,改进Euler法,RK方法和Adams隐式方法对同一问题进行求解,将数值解和解析解画在同一图像中,比较数值解的精度大小,得出结论。

【实验过程】(实验步骤、记录、数据、分析)我们首先来回顾一下原题:对于给定初值问题:1. 求出其解析解并用Matlab画出其图形;2. 采用Euler法取步长为0.5和0.25数值求解(2.16),并将结果画在同一幅图中,比较两者精度;3. 采用改进Euler法求解(2.16),步长取为0.5;4. 采用四级Runge-Kutta法求解(2.16),步长取为0.5;5. 采用Adams四阶隐格式计算(2.16),初值可由四级Runge-Kutta格式确定。

下面,我们分五个步骤来完成这个问题:步骤一,求出(2.16)式的解析解并用Matlab 画出其图形; ,用Matlab 做出函数在上的图像,见下图:00.51 1.52 2.53 3.54 4.550.511.522.533.5x 1015y=exp(1/3 t 3-1.2t)exact solution图一 初值问题的解析解的图像步骤二,采用Euler 法取步长为0.5和0.25数值求解(2.16),并将结果画在同一幅图中,比较两者精度;我们采用Euler 法取步长为0.5和0.25数值求解,并且将数值解与解析解在一个图中呈现,见下图:00.51 1.52 2.53 3.54 4.550.511.522.533.5x 1015Numerical solution of Euler and exact solutionexact solution h=0.5h=0.25图二 Euler 方法的计算结果与解析解的比较从图像中不难看出,采用Euler 法取步长为0.5和0.25数值求解的误差不尽相同,也就是两种方法的计算精度不同,不妨将两者的绝对误差作图,可以使两种方法的精度更加直观化,见下图:00.51 1.52 2.53 3.54 4.550.511.522.533.5x 1015Absolute error of numerical solution and exact solutionh=0.5h=0.25图三 不同步长的Euler 法的计算结果与解析解的绝对误差的比较 从图像中我们不难看出,步长为0.25的Euler 法比步长为0.5的Euler 法的精度更高。

常微分方程实验报告

常微分方程实验报告

常微分方程实验报告一、实验目的常微分方程是数学分析和实际应用中非常重要的一部分,本次实验的主要目的是通过实际操作和计算,深入理解常微分方程的概念、性质和求解方法,并能够将其应用到实际问题中,提高我们解决数学问题和实际应用问题的能力。

二、实验原理常微分方程是指含有一个自变量和一个未知函数及其导数的等式。

求解常微分方程的方法有很多,常见的有变量分离法、一阶线性方程的求解方法(如常数变易法)、恰当方程的求解方法(通过积分因子)等。

对于一阶常微分方程,形如\(y' + p(x)y = q(x)\)的方程,可以使用积分因子\(e^{\int p(x)dx}\)来求解。

对于可分离变量的方程,形如\(g(y)dy = f(x)dx\),可以通过分别积分求解。

三、实验内容(一)一阶常微分方程的求解1、求解方程\(y' + 2xy = 2x\)首先,计算积分因子\(e^{\int 2xdx} = e^{x^2}\),然后将方程两边乘以积分因子得到:\((ye^{x^2})'= 2xe^{x^2}\)两边积分可得\(ye^{x^2} = e^{x^2} + C\),解得\(y =1 + Ce^{x^2}\)2、求解方程\(xy' y = x^2\)将方程化为\(y' \frac{y}{x} = x\),这里\(p(x) =\frac{1}{x}\),积分因子为\(e^{\int \frac{1}{x}dx} =\frac{1}{x}\)。

方程两边乘以积分因子得到\((\frac{y}{x})'= 1\),积分可得\(\frac{y}{x} = x + C\),即\(y = x^2 + Cx\)(二)二阶常微分方程的求解1、求解方程\(y'' 2y' + y = 0\)特征方程为\(r^2 2r + 1 = 0\),解得\(r = 1\)(二重根),所以通解为\(y =(C_1 + C_2x)e^x\)2、求解方程\(y''+ 4y = 0\)特征方程为\(r^2 + 4 = 0\),解得\(r =\pm 2i\),所以通解为\(y = C_1\cos(2x) + C_2\sin(2x)\)(三)应用常微分方程解决实际问题1、考虑一个物体在受到与速度成正比的阻力作用下的运动,其运动方程为\(m\frac{dv}{dt} = kv\)(其中\(m\)为物体质量,\(k\)为阻力系数),求解速度\(v\)随时间\(t\)的变化。

常微分方程实验报告

常微分方程实验报告

常微分方程实验报告《常微分方程》综合性实验实验报告实验班级05应数(3)学生姓名江晓荣学生学号200530770314指导老师方平华南农业大学理学院应用数学系实验微分方程在数学建模中的应用及数值解的求法一、实验目的1.了解常微分方程的基本概念。

2.常微分方程的解了解析解和数值解。

3.学习、掌握MA TLAB 软件有关求解常微分方程的解析解和数值解的有关命令。

4. 掌握微分方程在数学建模中的应用。

二、实验内容1.用MA TLAB 函数dsolve 符号求解常微分方程的通解和特解。

2.用MA TLAB 软件数值求解常微分方程。

三、实验准备1.用MA TLAB 求常微分方程的解析解的命令用MA TLAB 函数dsolve 求常微分方程()(,,,,,,)0n F x y y y y y ''''''= (7.1)的通解的主要调用格式如下:S=dsolve('eqn', 'var')其中输入的量eqn 是改用符号方程表示的常微分方程(,,,2,)0F x y Dy D y Dny = ,导数用D 表示,2阶导数用D2表示,以此类推。

var 表示自变量,默认的自变量为t 。

输出量S 是常微分方程的解析通解。

如果给定常微分方程(7.1)的初始条件()00010(),(),,()n n y x a y x a y x a '=== ,则求方程(7.1)的特解的主要调用格式如下:S=dsolve('eqn', 'condition1 ',…'conditonn ','var')其中输入量eqn ,var 的含义如上,condition1,…conditonn 是初始条件。

输出量S 是常微分方程的特解。

2.常微分方程的数值解法除常系数线性微分方程可用特征根法求解、少数特殊方程可用初等积分法求解外,大部分微分方程无解析解,应用中主要依靠数值解法。

实验七常微分方程

实验七常微分方程

实验七常微分⽅程实验七常微分⽅程【实验⽬的】1.了解常微分⽅程的基本概念。

2.了解常微分⽅程的解析解。

3.了解常微分⽅程的数值解。

4.学习掌握MATLAB 软件有关的命令。

【实验内容】如右图所⽰,⼀根长l 的⽆弹性细线,⼀段固定,另⼀端悬挂⼀个质量为m 的⼩球,在重⼒的作⽤下⼩球处于垂直的平衡位置。

若使⼩球偏离平衡位置⼀个⾓度θ,让它⾃由,它就会沿圆弧摆动。

在不考虑空⽓阻⼒的情况下,⼩球会做⼀定周期的简谐运动。

利⽤⽜顿第⼆定律得到如下的微分⽅程0)0(',)0(,sin "0===θθθθθmg ml问该微分⽅程是线性的还是⾮线性的?是否存在解析解?如果不存在解析解,能否求出其近似解?【实验准备】1.微分⽅程的概念未知的函数以及它的某些阶的导数连同⾃变量都由⼀已知⽅程联系在⼀起的⽅程称为微分⽅程。

如果未知函数是⼀元函数,称为常微分⽅程。

常微分⽅程的⼀般形式为0),,",',,()(=n y y y y t F如果未知函数是多元函数,成为偏微分⽅程。

联系⼀些未知函数的⼀组微分⽅程组称为微分⽅程组。

微分⽅程中出现的未知函数的导数的最⾼阶解数称为微分⽅程的阶。

若⽅程中未知函数及其各阶导数都是⼀次的,称为线性常微分⽅程,⼀般表⽰为)()(')()(1)1(1)(t b y t a y t a y t a y n n n n =++++--若上式中的系数n i t a i ,,2,1),( =均与t ⽆关,称之为常系数或定常、⾃治、时不变的。

2.常微分⽅程的解析解有些微分⽅程可直接通过积分求解.例如,⼀解常系数常微分⽅程1+=y dtdy可化为dt y dy=+1,两边积分可得通解为1-=t ce y .其中c 为任意常数.有些常微分⽅程可⽤⼀些技巧,如分离变量法,积分因⼦法,常数变异法,降阶法等可化为可积分的⽅程⽽求得解析解(显式解).线性常微分⽅程的解满⾜叠加原理,从⽽他们的求解可归结为求⼀个特解和相应齐次微分⽅程的通解.⼀阶变系数线性微分⽅程总可⽤这⼀思路求得显式解。

《常微分方程》实验报告四

《常微分方程》实验报告四

《常微分方程》实验报告四专业信息与计算科学班级姓名学号实验地点实验室实验时间2015.12.11实验名称:机械振动中的单摆问题实验目的:1.与计算机软件Maple结合起来,学会求常微分方程组解析解的方法;2.会用Maple软件做简单的计算机仿真;3.能够理论联系实际,从理论结论中客观分析实践中的现象。

实验内容:(给出实验程序与运行结果)问题:如图所示为一单摆示意图,物块的质量为,摆线长为,如图建立坐标系,(1)建立系统的运动函数,即物块坐标随时间的函数、;(2)设=10kg,L =1m,系统作微摆动,存在空气阻力,空气阻力与速度成正比,比例系数为u,u=2,求在初始条件x[0]=0 , [0]=0 下的系统运动函数、;(3)当系统作微摆动,不存在空气阻力时系统的运动函数、;(4)合理运用Matlab分别画出(2)、(3)中确定的各个函数的图象;(5)对(2)、(3)所得结果进行分析。

根据图象说明物块是做阻尼运动、无阻尼运动,还是周期Array运动;并分析给定参量具体数值后对反映系统的运动规律有无影响。

分析:1.对内容(1)的分析:从物块所做运动,明显看到它做圆周运动,另外作受力分析,可以发现物体运动遵循牛顿第二运动定律。

2.对内容(2)的分析:与(1)相比,物块做圆周运动是一样的;不同的是,物块作微摆动时,受力分析后我们作一个近似,T Mg≈,从而对在x方向上平衡建立一个方程。

利用Maltab 软件求方程组的解析解:一般情况下,对高阶方程首先引进新参量对方程进行降阶,之后直接使用dsolve 命令直接求出方程组的解。

但是这里求出的解可能并不简单明了,故而必须求它的数值解。

3.对内容(3),与(2)类似,而且相对简单。

由于这里不再受空气阻力。

4.对内容(4),用Matlab 软件中简单的作图命令plot 分别对(2)、(3)中所得函数进行做图。

5.对内容(5)通过分析(2)、(3)所得函数的图象,判断物块分别做什么样的运动。

(完整版)计算物理实验报告常微分方程

(完整版)计算物理实验报告常微分方程

常微分方程的边值问题和本征值问题一、问题描述利用搜索法和弦割法,得到该常微分方程的本征值,再利用打靶法计算多个本征值。

二、解决方法(一)搜索法1。

先随便猜测k的一个试验值,程序中令k=12.由Numerov算法根据本题的条件,kn+1=kn=kn-1=k,s=0,得到yn+2,yn+1,yn间的迭代公式令con=(k*h)^2/12yn+2=2*(1-5*con)*yn+1/(1+con)—yn3自己给定φ的初始条件,然后利用公式得到边界值φ(1)4。

然后以小的步长dk增加k值,这里令dk=1,每当φ(1)改变符号时,就将步长减半后倒退回来重复5.当步长小于所要求的容许误差时终止程序,此时的k值即为所求。

(二)弦割法1.随便猜测两个k值,这里令k0=1,k1=22.自己给定φ的初始条件,对两个k值分别利用上述公式进行迭代,得到边界值y1(1)和y2(1)。

3.比较y1(1)和y2(1)的绝对值大小。

若绝对值大,说明对应的k值距离本征值距离较远。

4.将(k0+k1)/2赋给k2,边界值绝对值小的对应的k值保持不变,边界值绝对值大的对应k值重新定位k2的值.5.重复进行实验,当y1(1)和y(2)的差的绝对值小于容许误差时终止程序.此时k1的值即为所求。

当搜索法和弦割法大致求出了一个本征值后,利用打靶法,调整k值再度进行搜索,得到多个本征值,绘出其中一个本征值对应的函数图像,观察其性质。

三、程序实现1.搜索法subroutine add(t,y0,y1) !利用子程序表示函数值的迭代implicit nonereal(8)::t,h,con,y0,y1,y2integer::i,nn=10000h=1。

0/ncon=(t*h)**2/12do i=1,n-1y2=2*(1—5*con)*y1/(1+con)—y0 !利用Numerov算法,得到迭代公式y0=y1 !向前迭代y1=y2end doreturnend subroutine addprogram zy3implicit nonereal(8)::diffk,dk,yold,k,b0,b1integer::sb0=0.01 !取初始值,根据题目条件,令y0=y1,来保证x=0的位置导数为0 b1=0。

数学实验基础 实验报告(1)常微分方程

数学实验基础 实验报告(1)常微分方程

实验一 常微分方程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,则超出运算的范围,发生溢出。

计算方法--常微分方程求解实验

计算方法--常微分方程求解实验

实验五 常微分方程求解实验一、 实验目的通过本实验学会对给定初值我呢他,用欧拉法、改进欧拉法、四阶龙格-库塔法求数值解和误差,并比较优缺点.对给定刚性微分方程,求其数值解,并与精确解比较,分析计算结果.二、 实验题目1. 解初值问题各种方法比较 实验题目:给定初值问题⎪⎩⎪⎨⎧=≤<+=,0)1(,21,e d d y x x xyx y x 精确解为)e -e (xx y =,按 (1) 欧拉法,步长;1.0,025.0==h h (2) 改进欧拉法,步长;01.0,05.0==h h (3) 四阶标准龙格-库塔法,步长;1.0=h求在节点)10,,2,1(1.01 =+=k k x k 处的数值解及误差,比较各方法的优缺点. 2. 刚性方程计算实验题目:给定刚性微分方程⎪⎩⎪⎨⎧=≤<-+-=-,2)0(,50,600e 8.1199600d d 1.0y x y xyx 其精确解为12e e )(-0.1x -600x-+=x y .任选取一显示方法,取不同的步长求解,并分析计算结果.三、 实验原理1.欧拉格式由数值微分的向前差商公式可以解决初值问题(6.1)()()⎩⎨⎧=≤≤=00',,,y x y b x a y x f y 中的导数的数值计算问题:()()()()(),'1h x y x y h x y h x y x y n n n n -=-+≈+由此可得()()().'1n n n x hy x y x y +≈+(6.1)实际上给出()()()()()().,','n n n x y x f x y x y x f x y =⇒=于是有()()()().,1n n n n x y x hf x y x y +≈+再由()()11,++≈≈n n n n x y y x y y 得().,1,0,,111 =+=+++n y x hf y y n n n n (6.2) 递推公式(6.2)称为欧拉格式。

常微分方程实验报告_闵安游_U201310085

常微分方程实验报告_闵安游_U201310085

⑵、3 步 4 阶 Adams 方法: ①、画图程序:
w = exp(i*linspace(0,2*pi)); z = 24*(w.^3 - w.^2)./(1 - 5*w + 19*w.^2 + 9*w.^3); plot(z)
②、绝对稳定性判断程序:
9 3 19 2 5 h (1 h ) (1 h) h 0 此时的特征方程是: 24 24 24 24
fprintf('误差为: %10.10f\n',m)
测试程序:
f = @(t,y)-2*y + 2*t + 1; F = @(t)exp(-2*t) + t; Threesteps_Adams1(0,2,f,F,0.1)
第 2 题: ⑴、2 步 3 阶 Adams 方法: ①、画图程序:
w = exp(i*linspace(0,2*pi)); z = 12*w.*(w - 1)./(5*w.*w + 8*w -1); plot(z)
t = a + i*h; y2 = y1 + h/2*(3*f1 - f0); plot(t,y2,'.'); f2 = f(t,y2); y1 = y2; f0 = f1; f1 = f2; end y = linspace(a,b); plot(y,F(y),'r'); hold off m = abs(y1-F(b)); fprintf('数值解: %10.10f\n',y1) fprintf('误差为:%10.10f\n',m)
' u2 24u1 51u2 9 cos t 1/ 3sin t

常系数微分方程的求解

常系数微分方程的求解

常系数微分方程的求解微分方程是数学特别重要的一个研究对象,是描述多变量函数在变化中的变化规律的数学工具。

常系数微分方程(Constant coefficient differential equation,CCDE)是一类特殊的微分方程,其中所有空间变量都是常量。

它是在解理论计算机科学、力学、计算物理学(CFD),热力学、积分变换等多个领域有重要的应用。

常系数微分方程的求解是比较复杂的工作,它涉及多阶段的求解过程。

首先,我们需要分析微分方程的构造,将其分解为更小的子问题,然后利用可用的数学工具来解决这些子问题。

其次,我们需要考虑常系数微分方程的初始条件,考虑如何将初始条件消除,以实现更精确的求解。

最后,我们需要对解进行误差分析,确保解的准确性。

在求解常系数微分方程方面,一般有两种方法可用:一是采用数值计算方法,如欧拉法、改进欧拉法、拉普拉斯差分方法等;二是采用解析方法,如常系数线性微分方程的积分变换、Laplace换、Fourier 换、Fourier近等。

在采用解析方法求解复杂的常系数微分方程时,我们可以采用把方程转化为积分方程的方法。

首先,我们需要将复杂的常系数微分方程转换成积分形式。

其次,我们需要将积分方程转换成常系数线性积分方程的形式,然后采用解析方法求解。

这种转化的过程需要考虑常系数微分方程的各种特殊情况,以确保得到准确的结果。

此外,在求解常系数微分方程的过程中,还需要考虑计算机算法的优化问题。

由于常系数微分方程涉及多个空间变量,其计算量可能较大。

因此,在计算过程中,我们做出尽可能多的优化,例如采用快速傅立叶变换(FFT)或多项式系统求解等方法,以提高计算效率。

总之,在求解常系数微分方程方面,我们既可以采用数值计算方法,也可以采用解析方法。

而在求解常系数微分方程的过程中,我们需要考虑的因素不外乎:分析方程的构造,消除初始条件,解决子问题,优化计算机算法等。

只要把握住这些基本概念,就能成功的求解常系数微分方程。

计算方法实验报告-常微分方程的数值解法

计算方法实验报告-常微分方程的数值解法
15.0000 50.1112 50.1112
15.1000 50.1224 50.1224
15.2000 50.1332 50.1332
15.3000 50.1436 50.1436
15.4000 50.1535 50.1535
disp([T',V',df']);
%画图观察效果
figure;
plot(T,df,'k*',T,V,'--r');
grid on;
title('速度v与时间t的函数曲线');
legend('准确值','四阶经典R-K法');
结果如下所示:
步长四阶经典R-K法准确值
0 0 0
0.1000 0.9799 0.9799
5.9000 41.1708 41.1708
6.0000 41.4919 41.4919
6.1000 41.8028 41.8028
6.2000 42.1039 42.1039
6.3000 42.3954 42.3954
6.4000 42.6775 42.6775
6.5000 42.9504 42.9504
11.5000 49.2667 49.2667
11.6000 49.3097 49.3097
11.7000 49.3511 49.3511
11.8000 49.3909 49.3909
11.9000 49.4292 49.4292
12.0000 49.4661 49.4661
12.1000 49.5016 49.5016
(2)某跳伞者在t=0时刻从飞机上跳出,假设初始时刻的垂直速度为0,且跳伞者垂直下落。已知空气阻力为F=cv2,其中c为常数,v为垂直速度,向下方方向为正。写出此跳伞者的速度满足的微分方程;若此跳伞者的质量为M=70kg,且已知c=0.27kg/m,利用四阶龙格-库塔公式计算t<=20s的速度(取h=0.1s)

常微分方程实验报告.

常微分方程实验报告.

常微分方程课程实验报告实验名称 Matlab在常微分方程中的应用z =C2*exp(-2*t)+C3*exp(2*t)【3.1】作图(先做出x关于t,y关于t,z关于t的函数图像):hold on;for c1=0:0.1:1%C1、C2和C3都大于0for c2=0:0.1:1for c3=0:0.1:1t=0:0.1:1;x=c1.*exp(2.*t)+c3.*exp(-t);y=c1.*exp(2.*t)+c2.*exp(-t)+exp(-2.*t)*c3;z=c2.*exp(2.*t)+exp(-2.*t)*c3;subplot(1,3,1),plot(t,x),legend('t~x') %x关于t的函数图像 subplot(1,3,2),plot(t,y),legend('t~y') % y关于t的函数图像 subplot(1,3,3),plot(t,z),legend('t~z') % z关于t的函数图像endendend【3.2】作图(再做出x、y、z的三维图像):hold on;X=[];Y=[];Z=[];for c1=0:0.2:1%C1、C2和C3都大于0for c2=0:0.2:1for c3=0:0.2:1t=0:0.1:1;x=c1.*exp(2.*t)+c3.*exp(-t);y=c1.*exp(2.*t)+c2.*exp(-t)+exp(-2.*t)*c3;z=c2.*exp(2.*t)+exp(-2.*t)*c3;X=[X,x];Y=[Y,y];Z=[Z,z];endColumns 37 through 410.9753 1.0129 1.0521 1.0929 1.1353第4题:【1】编写函数M文件——cwf1.m(用于求近似解)function dy=cwf1(x,y)dy=(cos(x)-2*x*y)/(x^2-1)【2】编写脚本M文件——chang8.m[X,Y]=ode45('cwf1',[0,1],1)y1=Y’ %转置【3】则求出的近似解为(x取值为0~1):>>y1=Columns 1 through 101.0000 0.9756 0.9524 0.9303 0.9093 0.8892 0.8701 0.8520 0.8347 0.8183Columns 11 through 200.8028 0.7880 0.7742 0.7611 0.7488 0.7374 0.7269 0.7172 0.7085 0.7008Columns 21 through 300.6941 0.6886 0.6843 0.6815 0.6802 0.6809 0.6837 0.6890 0.6976 0.7102Columns 31 through 400.7277 0.7519 0.7851 0.8319 0.8964 0.9910 1.1404 NaN NaN NaNColumn 41-Inf【4】在command窗口运行以下语句,用于求精确解:>> y=dsolve('(x^2-1)*Dy+2*x*y-cos(x)=0','y(0)=1','x') %精确解。

常微分方程的数值解法实验报告

常微分方程的数值解法实验报告

常微分方程的数值解法实验报告实验报告:常微分方程的数值解法摘要:常微分方程(ODE)是描述动力学系统中物理量随时间变化的数学方程,广泛应用于自然科学和工程领域。

然而,对于一些复杂的非线性ODE,很难找到解析解。

因此,我们需要数值解法来求解这些方程。

本实验报告将介绍四种常见的常微分方程数值解法,分别是欧拉法、改进的欧拉法、四阶龙格-库塔法和自适应步长的龙格-库塔法,并通过数值实验比较它们的精度和效率。

1.引言在实际问题中,许多物理量的变化规律可以由常微分方程描述。

然而,对于复杂的非线性ODE,很难找到解析解。

因此,为了解决这类问题,我们需要借助数值方法来求解。

2.方法本实验采用四种常见的常微分方程数值解法:欧拉法、改进的欧拉法、四阶龙格-库塔法和自适应步长的龙格-库塔法。

(1)欧拉法是最简单的数值解法,通过将微分方程转化为差分方程,使用离散的步长来近似微分方程。

(2)改进的欧拉法在欧拉法的基础上进行了改进,使用预估-校正的方法来提高精度。

(3)四阶龙格-库塔法是一种经典的数值解法,通过利用不同步长处的斜率来近似微分方程,具有较高的精度。

(4)自适应步长的龙格-库塔法是在四阶龙格-库塔法的基础上改进而来的,根据步长的大小自适应地选择不同的步长,同时保证精度和效率。

3.实验设计为了比较这四种数值解法的精度和效率,我们设计了两个实验。

实验一是求解一阶常微分方程:dy/dx = -2x,初始条件y(0) = 1,解析解为y = 1 - x^2、实验二是求解二阶常微分方程:d^2y/dx^2 + y = 0,初始条件y(0) = 0,dy/dx(0) = 1,解析解为y = sin(x)。

4.结果与分析实验一中,比较四种数值解法在不同步长下的近似解和解析解,计算其误差。

实验结果表明,四阶龙格-库塔法和自适应步长的龙格-库塔法具有较高的精度,而欧拉法和改进的欧拉法的精度较低。

实验二中,我们比较四种数值解法在不同步长下的近似解和解析解,并计算其误差。

计算物理 常微分方程数值解法

计算物理 常微分方程数值解法


定律f=ma,引入速度则它变为
dy dt
f (t, y)
dv
dt
f m
初始条件的个数与阶数一样
第6页/共18页
第7章 微分方程的初值问题和边值问题
欧拉近似法是把y的微商用上节的差商来代替,这样不难得出公式



y(n 1) y(n) hf (t(n), y(n))

理 导
t(n) t0 nh
论 》
y(0) y(t t0 )
这里h是t的步长
第7页/共18页
back
第7章 微分方程的初值问题和边值问题
地球绕太阳的运动遵从牛顿第二定律和万有引力定律。以太阳为
原点,建立平面直角坐标系,则行星运动满足的微分方程为:
《 计 算即 物 理 导 论 》
d 2r GM r
dt 2
r3
d2x dt2
[ f (x h) f (x)][ f (x) f (x h)]
f (x h) 2 f (x) f (x h)


相应的二阶微商,即用二阶差商代替二阶微商,有:

物 理
f (x h) 2 f (x) f (x h) f (x) h2 f (4) (x) O(h2 ) back

差分 f 也可以定义为:
f f (x) f (x h)
称为一阶向后差分。
第1页/共18页
第7章 微分方程的初值问题和边值问题
差分运算还有另一种定义:
f (x) f (x h / 2) f (x h / 2)
称为一阶中心差分。
《 一阶差分除以增量h的商,即为一阶差商,所以上述定义相应的差商为

2h

常微分实习报告-常微分方程数值求解问题

常微分实习报告-常微分方程数值求解问题

(数学类课程)课程实习报告课程名称:常微分方程课程实习实习题目:常微分方程数值求解问题的实习姓名:系:专业:年级:学号:指导教师:职称:年月日课程实习报告结果评定目录1. 实习的目的和任务 (1)2. 实习要求 (1)3. 实习地点 (1)4. 主要仪器设备 (1)5. 实习内容 (1)5.1 用不同格式对同一个初值问题的数值求解及其分析 (1)5.1.1求精确解 (1)5.1.2用欧拉法求解 (6)5.1.3用改进欧拉法求解 (9)5.1.4用4级4阶龙格—库塔法求解 (12)5.1.5 问题讨论与分析 (15)5.2 一个算法不同不长求解同一个初值问题及其分析 (18)6. 结束语 (29)参考文献 (29)常微分方程课程实习1. 实习的目的和任务目的:通过课程实习能够应用MATLAB 软来计算微分方程(组)的数值解;了解常微分方程数值解。

任务:通过具体的问题,利用MATLAB 软件来计算问题的结果,分析问题的结论。

2. 实习要求能够从案例的自然语言描述中,抽象出其中的数学模型;能够熟练应用所学的数值解计算方法;能够熟练使用MATLAB 软件;对常微分方程数值解有所认识,包括对不同算法有所认识和对步长有所认识。

3. 实习地点数学实验室、学生宿舍 4. 主要仪器设备计算机、Microsoft Windows 7 Matlab 7.0 5. 实习内容5.1 用欧拉方法,改进欧拉方法,4阶龙格—库塔方法分别求下面微分方程的初值dy/dx=y*cos(x+2) y(-2)=1 x ∈[-2,0] 5.1.1求精确解 ①变量分离方程情形:形如()*()dyf xg y dx=的方程,这里(),()f x g y 分别是,x y 的连续函数.如果()0g y ≠,我们可将方程改写成()()dyf x dxg y =,这样,变量就”分离”开来了,两边同时积分即可:(),()dyf x dx c cg y =+⎰⎰为任意常数. ②常数变易法:一阶线性微分方程()*()dyf x yg x dx =+,其中(),()f x g x 在考虑区 间上是的连续函数.可先解出方程()*dyf x y dx=的解,这是属于变量分离方程情形,可解得:*exp(())y c f x dx =⎰,这里c 是任意常数.然后将变c易为x 的待定函数()c x ,令()*exp(())y c x f x dx =⎰,将其代入原方程可得:()*exp(())()*()*exp(())()*()*exp(())()dy dc x f x dx c x f x f x dx f x c x f x dx g x dx dx=+=+⎰⎰⎰所以可解得()()*exp(())*1c x f x f x dx dx c =-⎰⎰,这里1c 是任意常数.将()()*exp(())1c x f x f x dx dx c =-+⎰⎰代入()*exp(())y c x f x dx =⎰可得原方程的通解:(()*exp(())1)*exp(()),1y f x f x dx dx c f x dx c =-+⎰⎰⎰为任意常数.③恰当微分方程情形:形如(,)(,)0m x y dx n x y dy +=的一阶微分方程,这里 假设(,),(,)m x y n x y 在某矩形域内是的连续函数,且具有连续的一阶偏导数. 若m ny x∂∂=∂∂,则为恰当微分方程.判断为恰当微分方程后,则可用如下解法: 设(,)u x y c =是原方程的解,则um x∂=∂,所以设(,)()u m x y dx v y =+⎰, 则((,)())((,))()m x y dx v y m x y dx udv y n y y y dy ∂+∂∂==+∂∂∂⎰⎰=,所以((,))()m x y dx dv y n ydy ∂-=∂⎰,由此()[(,)]v y n m x y dx dy y∂=-∂⎰⎰,由此可解得(,)[(,)]u m x y dx n m x y dx dy y ∂=+-∂⎰⎰⎰,所以原方程的通解为(,)[(,)],m x y dx n m x y dx dy c c y∂+-=∂⎰⎰⎰为任意常数。

实验八 常微分方程初值问题数值解法报告

实验八 常微分方程初值问题数值解法报告

实验八 常微分方程初值问题数值解法一、基本题科学计算中经常遇到微分方程(组)初值问题,需要利用Euler 法,改进Euler 法,Rung-Kutta 方法求其数值解,诸如以下问题:(1) ()⎪⎩⎪⎨⎧=-='004y xy y x y 20≤<x分别取h=0.1,0.2,0.4时数值解。

初值问题的精确解245x y e -=+。

(2) ()⎩⎨⎧=--='0122y y x y 01≤≤-x用r=3的Adams 显式和预 - 校式求解取步长h=0.1,用四阶标准R-K 方法求值。

(3)()()()100010321331221==-='⎪⎩⎪⎨⎧-='-='='y y y y y y y y y 10≤≤x用改进Euler 法或四阶标准R-K 方法求解取步长0.01,计算(0.05),(0.1y y y 数值解,参考结果 123(0.15)0.9880787,(0.15)0.1493359,(0.15)0.8613125y y y ≈-≈≈。

(4)利用四阶标准R- K 方法求二阶方程初值问题的数值解(I )()()⎩⎨⎧='==+'-''10,00023y y y y y 02.0,10=≤≤h x(II)()()()⎩⎨⎧='==+'--''00,10011.02y y y y y y 1.0,10=≤≤h x(III)()()⎪⎩⎪⎨⎧='=+='00,101y y e y y x 1.0,20=≤≤h x(IV)()()⎩⎨⎧='==+''00,100sin y y y y 2.0,40=≤≤h x二、应用题1. 小型火箭初始质量为900千克,其中包括600千克燃料。

火箭竖直向上发射时燃料以15千克/秒的速率燃烧掉,由此产生30000牛顿的恒定推力.当燃料用尽时引擎关闭。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常微分方程的边值问题和本征值问题
一、问题描述
利用搜索法和弦割法,得到该常微分方程的本征值,再利用打靶法计算多个本征值。

二、解决方法
(一)搜索法
1.先随便猜测k的一个试验值,程序中令k=1
2.由Numerov算法
根据本题的条件,kn+1=kn=kn-1=k,s=0,得到yn+2,yn+1,yn间的迭代公式
令con=(k*h)^2/12
yn+2=2*(1-5*con)*yn+1/(1+con)-yn
3自己给定φ的初始条件,然后利用公式得到边界值φ(1)
4.然后以小的步长dk增加k值,这里令dk=1,每当φ(1)改变符号时,就将步长减半后倒退回来重复
5.当步长小于所要求的容许误差时终止程序,此时的k值即为所求。

(二)弦割法
1.随便猜测两个k值,这里令k0=1,k1=2
2.自己给定φ的初始条件,对两个k值分别利用上述公式进行迭代,得到边界值y1(1)和y2(1)。

3.比较y1(1)和y2(1)的绝对值大小。

若绝对值大,说明对应的k值距离本征值距离较远。

4.将(k0+k1)/2赋给k2,边界值绝对值小的对应的k值保持不变,边界值绝对值大的对应k值重新定位k2的值。

5.重复进行实验,当y1(1)和y(2)的差的绝对值小于容许误差时终止程序。

此时k1的值即为所求。

当搜索法和弦割法大致求出了一个本征值后,利用打靶法,调整k值再度进行搜索,得到多个本征值,绘出其中一个本征值对应的函数图像,观察其性质。

三、程序实现
1.搜索法
subroutine add(t,y0,y1) !利用子程序表示函数值的迭代
implicit none
real(8)::t,h,con,y0,y1,y2
integer::i,n
n=10000
h=1.0/n
con=(t*h)**2/12
do i=1,n-1
y2=2*(1-5*con)*y1/(1+con)-y0 !利用Numerov算法,得到迭代公式
y0=y1 !向前迭代
y1=y2
end do
return
end subroutine add
program zy3
implicit none
real(8)::diffk,dk,yold,k,b0,b1
integer::s
b0=0.01 !取初始值,根据题目条件,令y0=y1,来保证x=0的位置
导数为0
b1=0.01
s=1
k=s !给定一个猜测的k值,此为搜索的初值
dk=1 !给定步长
diffk=0.0000001 !给定步长最后达到的误差范围
call add(k,b0,b1)
yold=b1 !通过运行子程序,得到由初始值积到x=1时的不为0
的函数值
do while(abs(dk)>diffk) !开始搜索
k=k+dk !在k中走一步
b0=0.01
b1=0.01
call add(k,b0,b1)
if(yold*b1<0)then!若果y1变号
k=k-dk !后退
dk=dk/2.0 !步长减半
end if
end do
write(*,*)k !写出求得的本征值
end
2.弦割法
subroutine add(t,b) !利用子程序表示函数值的迭代
implicit none
real(8)::t,h,con,y0,y1,y2,b
integer::i,n
b=0
y0=0.01
y1=0.01
n=10000
h=1.0/n
con=(t*h)**2/12
do i=1,n-1
y2=2*(1-5*con)*y1/(1+con)-y0 !利用Numerov算法,得到迭代公式
y0=y1 !向前迭代
y1=y2
end do
b=abs(y1) !得到x=1处函数值的绝对值,为确定k2点的
位置做准备
return
end subroutine add
program zy3
real(8)::a,k0,k1,k2,dk,m1,m2,dm
integer::i,n
k0=1 !给两个启动值
k1=2
k2=0
dm=0.00000001 !表示k0和k1对应的函数值相等时允许的误差 m1=0 !此值表示k值取k0时,x=1处函数值的绝对值 m2=0 !此值表示k值取k1时,x=1处函数值的绝对值do while (.true.)
call add(k0,m1)
call add(k1,m2) !运行子程序,分别得到两个k值对应的x=1处的
函数值的绝对值
if(abs(m1-m2)<dm)exit!当k0k1对应的绝对值近似相等时退出循环
if(m1>m2)then!如果k0对应的函数值绝对值较大
k2=(k1+k0)/2.0 !k2点取在k1和k0的平均值
k0=k2 !当k0对应的函数值绝对值较大时,表示其离本
征值较远,而将其舍弃不用,赋k2值
k1=k1 !此时k1距离本征值较近,不用变else
k2=(k1+k0)/2.0 !反之,舍去k1,k0不变
k0=k0
k1=k2
end if
end do
write(*,*)k2 !得到本征值k
end program zy3
3.打靶法得多个本征值
subroutine add(t,y0,y1) !利用子程序表示函数值的迭代
implicit none
real(8)::t,h,con,y0,y1,y2
integer::i,n
n=10000
h=1.0/n
con=(t*h)**2/12
do i=1,n-1
y2=2*(1-5*con)*y1/(1+con)-y0 !利用Numerov算法,得到迭代公式
y0=y1 !向前积分
y1=y2
end do
return
end subroutine add
program zy3
implicit none
real(8)::diffk,dk,yold,k,b0,b1
integer::s
b0=0.01 !取初始值,根据题目条件,令y0=y1,来保证x=0的位置导数为0
b1=0.01
do s=1,100,2 !改变k的初值
k=s
dk=1 !给定步长
diffk=0.0000001 !给定步长最后达到的误差范围
call add(k,b0,b1)
yold=b1 !通过运行子程序,得到由初始值积到x=1时的不为0的函数值
do while(abs(dk)>diffk) !开始搜索
k=k+dk !在k中走一步
b0=0.01
b1=0.01
call add(k,b0,b1)
if(yold*b1<0)then!若果y1变号
k=k-dk !后退
dk=dk/2.0 !步长减半
end if
end do
write(*,*)k !写出求得的本征值
end do
end
4.选取一个本征值,看函数图像(k=1.5708)
program zy3
implicit none
real(8)::diffk,dk,yold,k,y0,y1,y2,h,con
integer::i,n
k=1.5708
y0=0.001
y1=0.001
open(unit=10,file='p.txt')
n=1000
h=10.0/n
con=(k*h)**2/12
do i=1,n-1
write(10,*)y1,i*h
y2=2*(1-5*con)*y1/(1+con)-y0 y0=y1
y1=y2
end do
close(10)
end
四、程序结果
1.搜索法
2.弦割法
3.打靶法
4.k=1.5708时的函数
五、实验中出现的问题
在利用打靶法找本征值的过程中,如果步长太小,会出现如下情况
而当笔者将3代入k值用搜索法的时候,得到
笔者认为出线该情况的可能是循环程序彼此间出现了问题,而当调整了步长之后,冲突减小,得到比较正常的特征值。

相关文档
最新文档