微分方程数值解课程设(2019年)
微分方程数值解法C语言-课程设计
微分方程数值解法C语言-课程设计微分方程数值解法C语言由于对matlab语言不熟悉,所以还是采用C。
前面几个都比较简单,最后一个需要解非其次方程组。
采用高斯—Jordan消元法(数值分析)求逆解方程组,也再一次体会到算法本身的重要性,而不是语言。
当然,矩阵求逆的算法也在100个经典的C语言算法之列。
不过偏微分方程数值解的内容的确比较高深,我只能停留在编这种低级的东西的自娱自乐中。
不过解决计算机、数学、信计专业的课程设计还是足够了。
由于篇幅所限,只把源代码粘贴在这。
一:预报矫正格式#include <math.h>#include<iostream>#include<stdlib.h>double count_0( double xn,double yn){//矫正格式double s;s=yn+0.1*(yn/xn*0.5+xn*xn/yn*0.5);return s;}double count_1(double xn,double yn,double y0){//预报格式double s;s=yn+0.05*((yn/xn*0.5+xn*xn/yn*0.5)+(y0/xn*0.5+xn*xn/y0*0.5));return s;}void main(){//计算,步长为0.1,进行10次计算,设初始值double xn=1,yn=1;int i=1;while(i<=10){printf("%16f ,%1.16f ,%1.16f\n",xn,yn,count_1(xn,yn,count_0(xn,yn)));xn=xn+0.1;yn=count_1(xn,yn,count_0(xn,yn));i++;}}二显示差分格式#include<iostream>#include<math.h>#include<stdlib.h>main(){double a[6][11];//初始化;for(int i=0;i<=5;i++){a[0]=0;a[10]=0;}for(int j=1;j<10;j++){double p=3.14*j*0.1;a[0][j]=sin(p);}//按显示格式计算for(i=1;i<=5;i++)for(j=1;j<10;j++)a[j]=a[i-1][j-1]+a[i-1][j+1]; //输出计算好的矩阵for(i=0;i<=5;i++){for(j=0;j<11;j++)printf("%1.10f ",a[j]);printf("\n");}}三龙阁库塔格式#include <math.h>#include<iostream>#include<stdlib.h>double count_k( double xn,double yn){ double s;s=yn/xn*0.5+xn*xn/yn*0.5;return s;}void main(){//步长为0.1double xn=1,yn=1;int i=1;while(i<=11){printf("%f ,%f\n",xn,yn);double k1=count_k(xn,yn);double k2=count_k(xn+0.05,yn+0.05*k1); double k3=count_k(xn+0.05,yn+0.05*k2); double k4=count_k(xn+0.01,yn+0.1*k3); yn=yn+0.1/6*(k1+2*k2+2*k3+k4);xn=xn+0.1;i++;}}四 CRANK--NICOLSON隐式格式#include<iostream>#include<math.h>#include<stdlib.h>double Surplus(double A[],int m,int n);double * MatrixInver(double A[],int m,int n);double * MatrixOpp(double A[],int m,int n) /*矩阵求逆*/ {int i,j,x,y,k;double *SP=NULL,*AB=NULL,*B=NULL,X,*C;SP=(double *)malloc(m*n*sizeof(double));AB=(double *)malloc(m*n*sizeof(double));B=(double *)malloc(m*n*sizeof(double));X=Surplus(A,m,n);X=1/X;for(i=0;i<m;i++)for(j=0;j<n;j++){for(k=0;k<m*n;k++)B[k]=A[k];{for(x=0;x<n;x++)B[i*n+x]=0;for(y=0;y<m;y++)B[m*y+j]=0;B[i*n+j]=1;SP[i*n+j]=Surplus(B,m,n);AB[i*n+j]=X*SP[i*n+j];}}C=MatrixInver(AB,m,n);return C;}double * MatrixInver(double A[],int m,int n) /*矩阵转置*/ {int i,j;double *B=NULL;B=(double *)malloc(m*n*sizeof(double));for(i=0;i<n;i++)for(j=0;j<m;j++)B[i*m+j]=A[j*n+i];return B;}double Surplus(double A[],int m,int n) /*求矩阵行列式*/ {int i,j,k,p,r;double X,temp=1,temp1=1,s=0,s1=0;if(n==2){for(i=0;i<m;i++)for(j=0;j<n;j++)if((i+j)%2) temp1*=A[i*n+j]; else temp*=A[i*n+j];X=temp-temp1;}else{for(k=0;k<n;k++){for(i=0,j=k;i<m,j<n;i++,j++) temp*=A[i*n+j];if(m-i){for(p=m-i,r=m-1;p>0;p--,r--) temp*=A[r*n+p-1];}s+=temp;temp=1;}for(k=n-1;k>=0;k--){for(i=0,j=k;i<m,j>=0;i++,j--) temp1*=A[i*n+j];if(m-i){for(p=m-1,r=i;r<m;p--,r++) temp1*=A[r*n+p];}s1+=temp1;temp1=1;}X=s-s1;}return X;}void initmat_A(double a[][9],double r){ for(int i=0;i<9;i++)for(int j=0;j<9;j++)a[j]=0;for(i=0;i<9;i++){a=1+r;if(i!=8) a[i+1]=-0.5*r;if(i!=0) a[i-1]=-0.5*r;}}void initmat_B(double b[][9],double r){ for(int i=0;i<9;i++)for(int j=0;j<9;j++)b[j]=0;for( i=0;i<9;i++){b=1-r;if(i!=8) b[i+1]=0.5*r;if(i!=0) b[i-1]=0.5*r;}}void initmat_C(double C[][9]){ for(int i=0;i<9;i++)for(int j=0;j<9;j++)C[j]=0;}void main(){double a[100][11];for(int i=0;i<100;i++)for(int j=0;j<11;j++)a[j]=0;//初始化;for(i=0;i<100;i++){a[0]=0;a[10]=0;}for(int j=1;j<10;j++){double p=4*3.14*j*0.1;a[0][j]=sin(p);}//取h=0.1*3.14,r=0.0005,t=0.0001*3.14*3.14; //得到矩阵a和矩阵bdouble A[9][9];initmat_A(A,0.005);double B[9][9];initmat_B(B,0.005);//B矩阵与Un相乘,en是0;double C[9][9];initmat_C(C);double *A_;A_=MatrixOpp(A[0],9,9);//A矩阵求逆;//A逆*Bfor(i=0;i<9;i++)for(j=0;j<9;j++)for(int s=0;s<9;s++)C[j]+=A_[i*9+s]*B[s][j];//填写a表格for(i=0;i<100;i++){for(j=1;j<10;j++)for(int s=0;s<9;s++)a[i+1][j]+=a[s+1]*C[j-1][s];}//输出表格for(i=0;i<100;i++){for(j=0;j<11;j++)printf("%1.8f ",a[j]);printf("\n");}printf("\n"); printf("\n");//利用精确解,求出表格for(i=0;i<100;i++){for(j=0;j<11;j++)printf("%1.8f",exp(-16*0.0001*0.0005*3.14*3.14*i)*sin(4*j*0.1*3.14));printf("\n");}}。
微分方程数值解法(信息与计算科学专业核心课程)
f (t , u1 ) − f (t , u2 )
≤ L u1 − u2
(1.2)
则(1.1)的解存在且唯一。
不是所有的初值问题(1.1)都有解析解u(t)的。因此, 对于科学和工程目的,有必要用逼近方法求出其近似解, 若要求解有多位有效数字,则需要更多的计算量和复杂的 算法。 逼近方法求解初值问题一般可分为两类: 近似解析方法 级数法和Picard逐步逼近法 数值解法
1.2 Euler法 考虑初值问题(1.1),首先将区间[t0,T]划分为N个 等距小区间,小区间长度
T − t0 h= N
并选取网格点, 点列
ti=ih,i=0,1,…,N(不妨设t0=0)。已知u(0)=u0,则可计算
f (t0 , u (t0 )) = f (t0 , u0 ) = u ′(t0 ) ,
un +1 = un + h f (tn +1 , un +1 ) n = 0, 1, 2, L, N − 1
这就是求解初值问题的隐式Euler公式。
(1.5)
将Euler与隐式Euler公式做算术平均,可得梯形公式: h un +1 = un + [ f (tn , un ) + f (tn +1 , un +1 ) ] 2 (1.6) n = 0, 1, 2, L, N − 1
)
2 2 = un + 0.1× t n + 100un
(
)
由初值 u (0) = u0 = 0,计算得 2 2 u ( 0 .1) ≈ u1 = u0 + 0.1× t0 + 100u0
( ) = 0.0 + 0.1× (0.1 + 100 × 0.0 ) = 0.0010 u(0.3) ≈ u = u + 0.1× ( t + 100u )
微分方程数值解课程设(2019年)
微分方程数值解课程设计(五点差分格式测试及溢油事故的扩散行为模拟预测)2019年11月内容:1. 数值测试:椭圆型方程五点差分格式理论结论验证(大作业)包括:(1)方法理论结果验证:断误差分析(讨论是否收敛及收敛阶,通过选取不同的步长,观测步长与误差的关系)。
(2)简单的可视化等。
2. 应用实例: 溢油事故的扩散行为模拟预测船舶溢油事故给海洋环境带来了严重的危害。
溢油事故的发生在危害海洋生态环境的同时,也给当地的渔业及旅游业等造成了不可估量的经济损失。
随着时间的移动,在外界条件的作用下,进入海洋中的溢油可能会发生风化、扩散及漂移等一系列的变化,致使处理它的难度增加。
需要更加高效的溢油回收、处置和清除的技术。
处理溢油的常见方法有微生物分解法、化学处理法以及物理回收法微生物。
分解法主要是依赖于能够对石油进行分解的微生物;化学处理法主要是通过消油剂及特定条件下的燃烧来完成的;物理回收方法主要采用机械装置,如专业收油器等强行回收海面溢油。
从环境保护和资源回收再利用的方面考虑,由于消油剂具有毒性及微生物的分解缓慢,采用机械设备回收海面溢油是最理想的处理方式。
下面我们讨论用围油栏结合收油器装置的处理窄河道溢油问题。
当紧急溢油事故发生时,我们通常采用围油栏和收油装置结合的方法对溢油污染进行紧急处理。
溢油发生时我们先用围油栏对溢油进行拦截使溢油范围缩小到一定程度,再利用收油装置对汇聚起来的溢油进行收集。
然而我们在使用收油器时,需要注意收油器的额定收油量。
在收油的过程中,单位时间收油量应与其额定收油量相同,当比额定收油量大时, 将会导致收油装置的堵塞、失效;当比额定收油量小时,收油装置就不能达到最佳的工作状态。
通过数值模拟,我们可以进一步确定围油栏内的油浓度变化,进而根据收油装置在单位时间内额定收油量来选择合适的收油速度。
当溢油发生后,围油栏会立刻围住溢油,假设河道较窄,因此可认为流动的溢油在Y 方向上的浓度分布是一致的,故只需考虑X 方向上的溢油变化,即该物理问题可通过一维浓度扩散方程来进行模拟(我们采取无量纲的形式,只考虑理想状态下的溢油扩散问题进行模拟)。
微分方程数值解教学设计
微分方程数值解教学设计一、课程背景与目的微分方程数值解是数学系高年级学生必修的一门课程。
在这门课程中,学生需要掌握微分方程的基本概念和解法,以及数值解的原理和方法。
此外,学生还需要掌握编程语言,如Matlab、Python等,以实现对微分方程的数值求解。
本课程旨在帮助学生深入理解微分方程数值解的基本概念和解法,掌握数值解的原理和方法,并提高学生的编程能力。
二、教学内容1. 微分方程基本概念教学内容包括:•微分方程的定义和分类•微分方程的一阶和高阶形式•常微分方程和偏微分方程的区别•一些基本的解法,如分离变量法、变换变量法、恰当微分方程法等。
2. 微分方程的数值解教学内容包括:•数值解的概念和原理•欧拉法和改进欧拉法•Runge-Kutta法和Adams法•线性方程组的数值求解方法•一些常见的数值问题,如刚体摆、阻尼振动等。
3. 编程实践本部分旨在帮助学生掌握编程语言,如Matlab、Python等,以实现对微分方程的数值求解。
具体内容包括:•编程语言的基本语法和控制结构•数值计算的基本概念和算法•编程实践,例如编写程序求解微分方程,绘制微分方程的数值解图像等。
三、教学方法与手段1. 讲授与讨论相结合在课堂上,老师将采用讲授和讨论相结合的教学方法,既讲解微分方程数值解的基本概念和解法,又与学生进行互动式的讨论,探讨数值方法的优缺点及其在实际问题中的应用。
通过讨论,帮助学生深入理解微分方程数值解的原理和实现方法。
2. 实践与操作相结合本课程将组织编程实践活动,并设立实验室,提供计算机设施,让学生进行实践操作。
在编程实践中,学生将不仅仅是理论的应用者,更要成为实践的主体,通过实践操作,深入理解数值求解方法的原理和应用。
3. 作业与案例相结合在教学过程中,老师将布置一些作业和案例,让学生在实践中巩固所学知识,提高对微分方程数值解的理解。
同时,教师将提供详细的评价意见和建议,以帮助学生提高数值求解的能力。
(整理)微分方程数值解法课程设计报告
《微分方程数值解》课程设计课设题目:团队成员:081110209 丘凯倩081110202 江雨芮 081110232 黄东方 081110310 曲 健 081110311 代永轩指导教师:王春武二〇一四年六月十六日T5-分别利用欧拉公式、改进的欧拉公式和经典的四级四阶龙格-库塔公式求解常微分方程组的初值问题目录一、第十组团队成员及分工 (3)二、研究问题 (4)三、理论分析 (4)四、数值方法 (6)五、计算结果 (9)六、总结及体会 (11)一、第十组团队成员及分工【丘凯倩】081110209 组长统一规划团队课程设计分工,并及时分配任务。
同时,负责给出格式、求解格式的截断误差,对小组成员的成果进行最终汇总。
【江雨芮】081110202 组员分析课设题目,运用MATLAB进行总体编程,负责代码改进与调试工作,并给出各个格式的程序流程图。
【黄东方】081110232 组员分析课设题目,给出“欧拉公式”的求解方法及编程思路,代表小组进行汇报展示。
【曲健】081110310 组员按组长分配的任务,给出“改进欧拉公式”的求解方法及编程思路,并负责PPT及课程设计报告的撰写工作。
【代永轩】081110311 组员配合团队其他成员,给出“四级四阶R-K法”的求解方法及编程思路,并负责PPT及课程设计报告的撰写工作。
二、研究问题分别利用欧拉公式、改进的欧拉公式和经典的四级四阶龙格-库塔公式求解常微分方程组的初值问题:21141(0),2dy y dx y ⎧⎡⎤=⎪⎢⎥-⎪⎣⎦⎨⎛⎫⎪= ⎪⎪⎝⎭⎩01001,.x h <≤=。
三、理论分析1.欧拉公式),(y 1n n n n y x hf y +=+为简化分析,人们常在)(y n n x y =的前提下估计误差*11)(++-n n y x y 。
这种误差称为局部截断误差。
对于欧拉格式,))(,()(*1n n n n x y x hf x y y +=+而按泰勒公式展开有)(2)()()(21ξy hx y h x y x y n n n ''+'+=+因此有)(2)(2*11ξy h yx y n n ''=-++ 所以欧拉公式的截断误差为)(2h O 。
微分方程数值解课程简介
《微分方程数值解》课程简介06191140 微分方程数值解 3Numerical Methods for Differential Equations3-0预修要求:数学分析,高等代数或线性代数, 常微分方程面向对象:数学系信息与计算科学专业三、四年级本科生内容简介:《微分方程数值解法》包括常微分方程初值问题的差分格式的构造和性态分析;椭圆型方程的差分方法;抛物型方程的差分方法;双曲型方程的差分方法;通过本课程的学习,使学生掌握求解微分方程数值解的基本方法,能够根据具体的微分方程选用合适的计算方法。
推荐教材或主要参考书:《微分方程数值解法》,李荣华等,高等教育出版社。
《微分方程数值方法》,胡健伟,汤怀民著,科学出版社。
《初值问题的差分方法》,R.D.Richtmyer and K.W.Morton著,袁国兴等译,中山大学出版社。
《偏微分方程数值方法》,陆金甫,关治,清华大学出版社《微分方程数值解》教学大纲06191140 微分方程数值解 3Numerical Methods for Differential Equations3-0预修要求:数学分析,高等代数或线性代数, 常微分方程面向对象:数学系信息与计算科学专业三、四年级本科生一、课程的教学目的和基本要求本课程是为数学系信息与计算科学专业开设的专业课。
本课程为3学分,上课时间大约为16×3=48学时,春夏或秋冬学期完成。
通过本课程的学习,要使学生掌握常微分方程初值问题的单步和多步差分方法,椭圆型微分方程的差分方法,抛物型微分方程的差分方法,双曲型微分方程的差分方法,以及与之相关的理论问题。
学会分析各种计算方法的收敛条件和收敛速度。
二、课程主要内容及学时分配(一)常微分方程的初值问题(15学时)1.引论。
2.Euler方法。
3.线性多步方法。
4.稳定性、收敛性和误差估计。
5.多步方法的计算。
6.预估—校正算法。
7.Runge—Kutta方法。
微分方程数值解法第四版课程设计
微分方程数值解法第四版课程设计一、课程设计背景微分方程数值解法是数学、物理学等科学中重要的一门课程,是学习这些学科的基础。
随着计算机技术的发展,数值解法逐渐成为求解微分方程的重要方法之一,尤其是难以求解的高阶微分方程,不可或缺的数值方法更是大幅提高了数学模拟计算的工作效率。
因此,为了提高学生的数理能力,深入了解数值解法的方法,本次课程设计结合微分方程数值解法第四版教材,旨在通过对常见微分方程的数值求解,让学生体会数值解法的过程,掌握数值解法的计算方法,提高数学建模的能力,同时也提高学生的计算机编程技能。
二、课程设计内容1. 数值解法简介介绍数值解法的基本概念和数值求解的主要思想,包括欧拉法、龙格-库塔法、多项式法等。
2. 常微分方程数值解法结合微分方程数值解法第四版教材内容,介绍一些常见微分方程的数值解法,包括常系数线性微分方程、高阶微分方程、非线性微分方程等。
3. 实例分析以较为常见的两种物理问题为例进行分析:弹簧振动问题和物体自由落体问题。
其中弹簧振动问题解析式为:y″+4y=0取初始条件:y(0)=1y′(0)=0物体自由落体问题分析:y″=−g带有边界条件:y(0)=hy′(0)=v04. 编写相应程序分析求解基于Python语言,用编程语言完成以上实例的求解过程。
三、课程设计目标通过本次课程设计,学生将达到如下目标:1.了解数值解法的基本思想和计算方法;2.掌握一些常见微分方程的数值解法;3.运用所学知识解决物理问题;4.熟练掌握Python编程语言和编程思想。
四、课程设计评估学生将根据实例分析和编程作业来评估课程效果。
其中实例分析要求学生探讨相关问题的物理背景,分析计算过程,并分析计算结果。
编程作业则要求学生通过编写程序解决实际问题,将解析式转化为数值计算,自行编写求解方法。
五、课程设计总结通过本次设计,学生将深入了解数值解法的基本概念和数值求解的主要思想,并掌握一些常见微分方程的数值解法。
微分方程数值解课程设计
资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载微分方程数值解课程设计地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容微分方程数值方法课程设计Basic Theory of Ordinary Differential Equations Experiment Report教务处2014年 7 月课程设计说明书题目:常微分方程数值解法课程设计学院(系):理学院年级专业:计算科学11-1学生姓名:指导教师:教师职称:教授燕山大学课程设计(论文)任务书院(系):理学院教学单位:说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
年月日燕山大学课程设计评审意见表摘要本文对常微分方程初值问题现有的数值解法进行了综述研究。
主要讨论了几种常用的数值解法:即欧拉法,改进欧拉法,龙格库塔方法,阿达姆斯PECE,PMECME格式等。
文章最后结合常见数值解法,对较为典型的微分方程模型进行数值求解,探讨了上述数值算法在实际建模问题中的应用。
论文阐述的是常微分方程数值解法的几个问题,通过对以下问题的求解一.比较Adams四阶PECE模式和PMECME模式。
二.求解贝塞尔方程并与精确解比较。
三.小型火箭初始重量为1400kg,其中包括1080kg 燃料。
火箭竖直向上发射时燃料燃烧率为18kg/s,由此产生32000N 的推力,火箭引擎在燃料用尽时关闭。
设火箭上升时空气阻力正比于速度的平方,比例系数为0.4kg/m,求引擎关闭瞬间火箭的高度、速度、加速度,及火箭到达最高点时的高度和加速度,并画出高度、速度、加速度随时间变化的图形。
来加强对用数值解法解常微分方程实际问题的能力。
关键词:常微分方程数值解 MATLAB目录TOC \o "1-3" \h \z HYPERLINK \l"_Toc293560829" 摘要 PAGEREF _Toc293560829 \h i HYPERLINK \l "_Toc293560830" 绪论 PAGEREF_Toc293560830 \h 1问题解答 (2)HYPERLINK \l "_Toc293560842" 总结 (17)HYPERLINK \l "_Toc293560843" 参考文献资料 (17)绪论很多科学技术和工程问题常用微分方程的形式建立数学模型,因此微分方程的求解是很有意义的。
常微分方程数值解法课程设计
常微分方程数值解法课程设计常微分方程数值解法课程设计一、背景与意义常微分方程在自然科学、工程技术、社会科学等各个领域都有广泛的应用。
例如,物理学中的牛顿第二定律、电磁学中的麦克斯韦方程、生物学中的种群增长模型等都涉及到常微分方程。
然而,很多常微分方程的解析解很难求得或者不存在,因此数值解法就显得尤为重要。
本次课程设计的目的是使学生掌握常微分方程的数值解法,包括欧拉法、龙格-库塔法等,并能够利用这些方法进行实际问题的建模和计算。
通过本次课程设计,学生将了解数值解法的基本思想、误差分析、稳定性等方面的知识,提高解决实际问题的能力。
二、主要内容1.常微分方程的基本概念:介绍常微分方程的定义、分类、解的存在性和唯一性等基础知识。
2.数值解法的基本思想:介绍数值解法的基本思想,包括离散化、逼近、迭代等,以及数值解法的误差来源和误差估计。
3.欧拉法:介绍欧拉法的基本思想、计算公式、误差分析和稳定性等方面的知识,并通过实例演示欧拉法的应用。
4.龙格-库塔法:介绍龙格-库塔法的基本思想、计算公式、误差分析和稳定性等方面的知识,并通过实例演示龙格-库塔法的应用。
5.实际问题建模与计算:选取实际问题,如物理学中的弹簧振子问题、生物学中的种群增长问题等,利用常微分方程的数值解法进行建模和计算,并对结果进行分析和解释。
三、实施步骤1.理论学习:通过课堂讲解、阅读教材等方式,使学生掌握常微分方程的基本概念、数值解法的基本思想和常用方法。
2.上机实践:安排学生在计算机上利用编程语言实现欧拉法、龙格-库塔法等数值解法,并对简单的常微分方程进行数值计算。
3.实际问题建模与计算:选取实际问题,指导学生利用常微分方程的数值解法进行建模和计算,并对结果进行分析和解释。
4.课程设计报告:要求学生撰写课程设计报告,内容包括问题描述、数学模型、数值解法、计算结果与分析等,以培养学生综合运用所学知识解决实际问题的能力。
四、预期成果通过本次课程设计,学生将能够:1.掌握常微分方程的基本概念和数值解法的基本思想;2.熟练使用欧拉法、龙格-库塔法等常用数值解法;3.能够利用常微分方程的数值解法进行实际问题的建模和计算;4.撰写规范的课程设计报告,具备综合运用所学知识解决实际问题的能力。
微分方程数值解课程设计
微分方程数值解课程设计引言微分方程作为数学中的重要分支,涵盖了非常广泛的应用领域。
绝大多数的现实问题都可以归结为微分方程模型,因此掌握微分方程的解法方法是非常重要的。
本课程设计旨在通过实践应用数值方法来解决微分方程求解中的困难,在课程中学习并掌握数值方法的实现过程和相应的算法。
目的与意义微分方程数值解课程设计旨在帮助学生理解数值方法求解微分方程的基本原理和应用,让学生掌握数值解法的主要思路、基本算法和实现方法。
通过本课程设计的学习,学生将能够进一步加深和巩固对微分方程的理解,掌握数值模拟方法及其应用,培养学生的科学研究能力和实际问题解决能力。
课程大纲本课程设计分为以下几个部分:1. 基本概念回顾•微分方程的基本概念与分类•常微分方程的初值问题与边值问题•常微分方程数值解法的分类与相关算法2. 常微分方程数值解法•常微分方程数值解的初步概念与实现方法•常规微分方程数值解法的介绍与实现•常规微分方程数值解法的误差分析3. 偏微分方程数值解法•偏微分方程数值解的基本概念与实现方法•偏微分方程数值解的差分格式与相关算法•偏微分方程数值解的误差分析4. 实例分析•常微分方程实例分析•偏微分方程实例分析•结合实际问题的数值模拟课程设计要求本次课程设计要求学生以实践为主,结合已有数值软件应用数值方法求解微分方程,以期掌握微分方程数值解法的实际应用。
设计过程需包括以下几个步骤:1.客观评价现有数值软件的求解效果。
选取数值软件自带的样例微分方程,按照已有方法求解并进行误差分析。
2.对比不同的数值方法的性能。
选取不同的数值解法,比较不同方法的求解效果,并进行误差分析。
3.解决特殊问题的数值求解。
选取有现实意义的微分方程,根据实际问题需求进行求解并给出数值模拟结果。
4.书面报告。
每个学生需要用Markdown格式书写完整的课程设计报告,包括目标、方法、过程及相关结果和分析等。
课程设计参考书目1.Burden, R. L., Fres, J. D., & Burden, A. M. (2016).Numerical analysis (10th ed.). Boston: Cengage Learning.2.Chapra, S. C., & Canale, R. P. (2011). Numerical methods forengineers (6th ed.). New York: McGraw-Hill.3.Kincd, D., & Cheney, W. (2002). Numerical analysis:Mathematics of scientific computing (3rd ed.). Washington, D.C.:American Mathematical Society.结语微分方程数值解课程设计是一门重要的应用课程,具有一定的挑战性。
微分方程数值解法课程设计
微分方程数值解法课程设计背景微分方程是自然科学、工程技术和社会科学中普遍存在的数学模型,其可以描述物理过程的变化和演化。
常微分方程是通过对时间或空间上的导数进行描述,其解析解并不一定容易求得。
因此,数值解法是解决微分方程问题的一种常见方法。
在微分方程的数值解法中,我们通常会涉及到一些重要的概念和算法,例如欧拉法、龙格-库塔法、二分法和牛顿迭代法等等。
通过学习这些算法的原理和实现方法,我们能够更好地理解微分方程数值解法的本质和应用。
设计目的本次课程设计的主要目的是帮助学生掌握微分方程数值解法的基本原理和实现方法,在实践中熟悉常见算法的具体应用和调试技巧,同时提高自己的编程能力和科学计算思维。
设计内容实验一:欧拉法的实现1.实验目的:熟悉欧拉法的原理和实现方法,掌握基本的数值解法模型和算法调试技巧。
2.实验内容:编写欧拉法求解微分方程的Python程序,验证算法的正确性和数值稳定性。
3.实验步骤:–根据微分方程的形式,确定欧拉法的近似公式和初始值。
–给定时间或变量的范围和步长,利用欧拉法和Python编程求解微分方程。
–通过可视化分析结果,评估欧拉法的数值稳定性和误差精度。
实验二:龙格-库塔法的实现1.实验目的:熟悉龙格-库塔法的原理和实现方法,了解高精度数值解法的基本思想和优缺点。
2.实验内容:编写龙格-库塔法求解微分方程的Python程序,比较其与欧拉法的数值稳定性和误差精度。
3.实验步骤:–根据微分方程的形式,确定龙格-库塔法的近似公式和初始值。
–给定时间或变量的范围和步长,利用龙格-库塔法和Python编程求解微分方程。
–比较欧拉法和龙格-库塔法的数值稳定性和误差精度,评估不同算法的优缺点。
实验三:二分法与牛顿迭代法的应用1.实验目的:了解微分方程数值解法在非线性问题中的应用,掌握二分法和牛顿迭代法的基本原理和实现方法。
2.实验内容:利用二分法和牛顿迭代法求解非线性微分方程,考察算法的收敛速度和稳定性。
微分方程数值解教学大纲
《微分方程数值解》教学大纲一、课程的基本信息课程名称:《微分方程数值解》英文名称:Numerical solution for differential equaiton课程性质:专业方向选修课课程编号:1623313002周学时:3学时总学时:48学时(理论40+实验8)学分:3学分适用专业:适用于信息与计算科学专业预备知识:数值计算、常微分方程、数值逼近、数理方程课程教材:李立康主编,《微分方程数值解法》,复旦大学出版社出版、1999年参考书目:[1] 戴嘉尊主编,《微分方程数值解法》,东南大学出版社、2008年.[2] 李荣华主编,《微分方程数值解法》(第四版),高等教育出版社、2009年.考核方式:考查制定时间:2013年10月制定二、课程的目的与任务《微分方程数值解》是高等院校信息与计算科学专业的专业选修课之一。
本课程主要内容为常微分方程和偏微分方程的数值求解问题,包括各种差分方法,有限元方法等的基本理论。
通过微分方程数值解的教学,使学生了解和掌握微分方程数值解这一学科的基本概念、理论,培养学生的理论思维能力,为从事信息与计算科学学科的教学和研究打下一定的理论基础。
通过本课程的学习,学生应熟练掌握常微分方程和偏微分方程的常用数值求解方法和分析手段,从能力方面,应使学生初步认识如何从实际问题出发,建立微分方程数学模型,将连续问题离散化,由微分方程转化为差分方程,利用计算机实现数值方法求解一个微分方程的定解问题,并对结果给以几何解释。
从教学方法上,着重体现思维方式,注重解决实际问题的方法以及利用计算机进行科学计算的能力培养。
三、课程内容及学时分配第一章微分方程数值解法(10学时)一、本章基本要求1.掌握线性多步方法,Runge-Kutta方法,Gear方法等计算常微分方程的计算格式;2.掌握相容性,稳定性,绝对稳定性概念和相互关系;3.了解刚性问题和辛计算格式。
二、教学内容1.微分方程模型和定性理论2.计算格式:线性多步方法和高阶单步方法3.稳定性和收敛性分析4.刚性问题和其他第二章椭圆方程差分方法(8学时)一、本章基本要求1.掌握椭圆型方程的五点、九点差分格式和有限体积法;2.掌握极值原理,收敛性分析和误差估计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微分方程数值解课程设计
(五点差分格式测试及溢油事故的扩散行为模拟预测)
2019年11月
内容:
1. 数值测试:椭圆型方程五点差分格式理论结论验证(大作业)
包括:
(1)方法理论结果验证:断误差分析(讨论是否收敛及收敛阶,通过选取不同的步长,观测步长与误差的关系)。
(2)简单的可视化等。
2. 应用实例: 溢油事故的扩散行为模拟预测
船舶溢油事故给海洋环境带来了严重的危害。
溢油事故的发生在危害海洋生态环境的同时,也给当地的渔业及旅游业等造成了不可估量的经济损失。
随着时间的移动,在外界条件的作用下,进入海洋中的溢油可能会发生风化、扩散及漂移等一系列的变化,致使处理它的难度增加。
需要更加高效的溢油回收、处置和清除的技术。
处理溢油的常见方法有微生物分解法、化学处理法以及物理回收法微生物。
分解法主要是依赖于能够对石油进行分解的微生物;化学处理法主要是通过消油剂及特定条件下的燃烧来完
成的;物理回收方法主要采用机械装置,如专业收油器等强行回收海面溢油。
从环境保护和资源回收再利用的方面考虑,由于消油剂具有毒性及微生物的分解缓慢,采用机械设备回收海面溢油是最理想的处理方式。
下面我们讨论用围油栏结合收油器装置的处理窄河道溢油问题。
当紧急溢油事故发生时,我们通常采用围油栏和收油装置结合的方法对溢油污染进行紧急处理。
溢油发生时我们先用围油栏对溢油进行拦截使溢油范围缩小到一定程度,再利用收油装置对汇聚起来的溢油进行收集。
然而我们在使用收油器时,需要注意收油器的额定收油量。
在收油的过程中,单位时间收油量应与其额定收油量相同,当比额定收油量大时, 将会导致收油装置的堵塞、失效;当比额定收油量小时,收油装置就不能达到最佳的工作状态。
通过数值模拟,我们可以进一步确定围油栏内的油浓度变化,进而根据收油装置在单位时间内额定收油量来选择合适的收油速度。
当溢油发生后,围油栏会立刻围住溢油,假设河道较窄,因此可认为流动的溢油在Y 方向上的浓度分布是一致的,故只需考虑X 方向上的溢油变化,即该物理问题可通过一维浓度扩散方程来进行模拟(我们采取无量纲的形式,只考虑理想状态下的溢油扩散问题进行模拟)。
22(,)(,)(,)C x t C x t C x t u D t x x ∂∂∂+=∂∂∂ (1)
其中水中的对流速度为u (假设恒定), 扩散系数为D ,C(,)x t 表示某空间某时刻油的浓度。
并假设初始时刻的溢油浓度为 C(,0)sin()x x π= (2)
现采用对溢油区域进行围油栏铺设的方法对溢油污染进行紧急处理,试模拟以下几种情形:
1. 假设围油栏装置不动,在其上、下游处铺设收油装置,当溢油扩散到收油装置处时,收油装置会立刻吸收溢油,即上、下游收油装置处溢油始终为零,用数学式描述(边值为零): C(0,)C(L,)=0t t = (3a ) 即讨论模型:
22(,)(,)(,)0,0(0,)(,)00(,0)sin()0C x t C x t C x t u D x l t t x x C t C l t t C x x x l
π⎧∂∂∂+=<<>⎪∂∂∂⎪⎪==>⎨⎪⎪=<<⎪⎩,,
, 2. 假设围油栏装置不动,在其上游处铺设围油栏,可把围油栏边界用数学表达式描述为(0,)0C t x
∂=∂,
;而在下游处铺设收油装
置,当溢油在水流及围油栏的作用下向下游运动到收油装置处时,收油装置会立刻吸收溢油,即下游收油装置处溢油始终为零,用数学式描述为 C(,)0L t =。
此时边界条件为:
(0,)0(,)0C t C l t x
∂==∂; (3b ) 即讨论模型:
22(,)(,)(,)0,0(0,)0(,)0,0(,0)sin(),0C x t C x t C x t u D x l t t
x x C t C l t t x
C x x x l π⎧∂∂∂+=<<>⎪∂∂∂⎪∂⎪==>⎨∂⎪⎪⎪=<<⎩
,; 3. (选做)在上游处铺设围油栏并且围油栏从上游向下游对溢油进行拦截,围油栏不断移动且速度为v (比如取5v =),可把围油栏边界用数学表达式描述为(,)0C vt t x
∂=∂,x vt =表示围油栏移动的距离;下游处铺设收油装置,当溢油在水流及围油栏的作用下向下游运动到收油装置处时,收油装置会立刻吸收溢油,即下游收油装置处溢油始终为零,用数学式描述为C(,)0L t =。
此时边界条件为:
(,)0(,)0C vt t C l t x
∂==∂; (3c ) 即讨论模型:
22(,)(,)(,)0,(,)0(,)0,0,(,0)sin(),0C x t C x t C x t u D t vt x l t x x C vt t C l t t x C x x x l π⎧∂∂∂+=><<⎪∂∂∂⎪∂⎪==>⎨∂⎪⎪⎪=<<⎩,,;
试分析(可取1l =,D=1):
(1)数值模拟不同装置下,不同水流速度(水流速度分别为u=0510
、、时)的影响对溢油问题的处理;
(2)试着用不同的数值方法分析问题(1);
(3)比较两种(三种)装置的处理效果。
可具体试着分析以下等问题:当围油栏由上游向下游进行围油作业时,随着围油栏的移动,围油栏边界处的溢油量变化规律?同一水流速度下,围油栏运动到不同位置时油浓度值变化规律?水流速度不同时溢油浓度值的变化规律?
课程设计须知:
严禁抄袭!若发现雷同,不区分抄与被抄,一并作成绩不及格处理。
一、格式要求具体见附件(课程设计报告模块),基本框架包括:
(1)题目
(2)摘要:(150字左右)
摘要是对论文(设计报告)内容不加注释和评论的简短陈述,要求扼要说明
研究工作的目的、主要方法、研究结果、结论、科学意义或应用价值等,是一篇
具有独立性和完整性的短文。
摘要中不宜使用公式、图表以及非公知公用的符号
和术语,不标注引用文献编号。
(3)关键词:四个(按重要性、频率排序,分号隔开)
(4)引言:(背景、问题的提出等)
(5)正文主体
正文基本内容包括(可进一步发挥):
1)方法介绍、理论分析结论;
2)设计思路、算法步骤(或流程图);
3)程序清单(函数文件、命令文件)(加上必要的注释);
4)程序运行操作过程与输出结果;
5)对计算过程与结果的分析;
(6)心得体会、自我评价(优、良、中、及格、差之一)及其支持依据
(7)参考文献
(8)附录(可有可无)
二、其他要求
1. 动手做课程设计之前,请仔细阅读题目及相关要求!!
2. 课程设计期间,可以相互讨论,但是具体算法实现、数据分析和报告的撰
写要求独立完成,严禁抄袭。
判断抄袭的参考标准:出现下列情形之一
(1)需编写的M文件(含注释)与他人完全相同;
(2)无“课程设计中的心得体会”或过于简短;
(3)“课程设计中的心得体会”不含“遇到的问题与困难及解决办法”;
(4)“课程设计中的心得体会”与他人相同。
3. 课程设计提交时间:
按要求完成后,统一将交电子版代码和课设报告,以及纸质版的课设报告交给学习委员,请学委于第19周前交至任课教师。
到期还未交者,作为缺考处理。