微分方程数值解第三次上机报告

合集下载

偏微分方程数值解第三次上机实验报告

偏微分方程数值解第三次上机实验报告

偏微分方程数值解法第三次上机实验报告一、实验题目:用线性元求解下列问题的数值解:2,1,1(x,1)u(x,1)0,1x 1(1,y)1,u (1,y)0,11xx u x y u u y =--<<⎧⎪-==-<<⎨⎪-==-<<⎩ (精确到小数点后四位)二、实验过程:利用PDEToolbox 工具箱求解该偏微分方程。

分析:方程是Possion 方程形式c u au f -+=,其中c=-1,a=0,f=-2; 第一个边界条件是Dirichlet 条件,第二个边界条件是Neumann 条件。

1.在MA TLAB 命令窗口键入pdetool 并运行,打开PDEToolbox 界面;2.在Options 菜单下选择Grid 命令,显示网格,能更容易确定所绘图形的大小;3.绘出区域,选择Boundary 的Boundary Mode ,双击每个边界,设置边界相应的参数值;4.选择PDE 菜单中PDE Mode 命令,进入PDE 模式。

单击PDE 菜单中PDE Specification ….选项,设置方程类型及参数;5.选择Mesh 菜单中Initialize Mesh 命令,进行网格剖分,再选择Refine Mesh 命令,进行网格加密,如下图:三、实验结果:选择Solve 菜单中solve PDE 命令,解偏微分方程,其图形解如图:图1 图形解图2 三维图形解图3 解的等值线图和矢量场图选择Mesh菜单中的Export Mesh,得到结点xy坐标;选择Solve菜单中的Export Solution…,得到每个节点处的值,输出u,即解的数值。

四、实验总结:通过本次试验,掌握了利用Matlab中的PDE求解工具得到PDE的解的方法,并对偏微分方程的形式有了更多的掌握。

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

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

实验报告实验项目名称常微分方程的数值解法实验室数学实验室所属课程名称微分方程数值解实验类型上机实验实验日期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 法的精度更高。

数值分析2024上机实验报告

数值分析2024上机实验报告

数值分析2024上机实验报告数值分析是计算数学的一个重要分支,它研究如何用数值方法来解决数学问题。

在数值分析的学习过程中,学生需要通过上机实验来巩固理论知识,并学会使用相应的数值方法来解决实际问题。

本篇报告将详细介绍2024年度数值分析上机实验的内容和结果。

一、实验内容2024年度数值分析上机实验分为四个部分,分别是:方程求根、插值与拟合、数值积分和常微分方程的数值解。

1.方程求根这部分实验要求使用数值方法求解给定的非线性方程的根。

常见的数值方法有二分法、牛顿法、割线法等。

在实验过程中,我们需要熟悉这些数值方法的原理和实现步骤,并对不同方法的收敛性进行分析和比较。

2.插值与拟合这部分实验要求使用插值和拟合方法对给定的一组数据进行拟合。

插值方法包括拉格朗日插值、牛顿插值等;拟合方法包括最小二乘拟合、多项式拟合等。

在实验中,我们需要熟悉插值和拟合方法的原理和实现步骤,并对不同方法的精度和稳定性进行比较。

3.数值积分这部分实验要求使用数值方法计算给定函数的积分。

常见的数值积分方法有梯形法则、辛普森法则、龙贝格积分等。

在实验过程中,我们需要熟悉这些数值积分方法的原理和实现步骤,并对不同方法的精度和效率进行比较。

4.常微分方程的数值解这部分实验要求使用数值方法求解给定的常微分方程初值问题。

常见的数值方法有欧拉法、改进的欧拉法、四阶龙格-库塔法等。

在实验中,我们需要熟悉这些数值解方法的原理和实现步骤,并对不同方法的精度和稳定性进行比较。

二、实验结果在完成2024年度数值分析上机实验后,我们得到了以下实验结果:1.方程求根我们实现了二分法、牛顿法和割线法,并对比了它们的收敛速度和稳定性。

结果表明,割线法的收敛速度最快,但在一些情况下可能会出现振荡;二分法和牛顿法的收敛速度相对较慢,但稳定性较好。

2.插值与拟合我们实现了拉格朗日插值和最小二乘拟合,并对比了它们的拟合效果和精度。

结果表明,拉格朗日插值在小区间上拟合效果较好,但在大区间上可能出现振荡;最小二乘拟合在整体上拟合效果较好,但可能出现过拟合。

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

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

微分方程数值解法实验报告班级:姓名:学号:日期:一、实验目的1、熟悉微分方程(组)数值解的Euler算法,改进的Euler算法和Runge-Kutta算法,利用matlab软件实现微分方程数值解法来求解具体试题;2、虽然求解常微分方程有各种各样的解析解,但解析方法只能用来求解一些特殊类型的方程,通常它们无法求出解析解,而需要数值方法来近似求解。

因此产生了常微分方程初值问题的数值计算方法,常微分方程数值解法是通过计算机便捷的求解近似值。

二、基本理论及背景1、在数值求解常微分方程中,主要有有限差分计算和有限元计算两大类方法,其中在有限差分计算方法中有一类方法称为龙格-库塔(Runge_Kutta)方法。

四阶的龙格-库塔方法为最佳的计算格式。

2、参考三中的代码,分别用Euler算法,改进的Euler算法和Runge-Kutta 算法实现微分方程(组)的数值求解,完成下列题目:三、算法设计及实现1、算法设计,通过Euler算法,改进的Euler算法和Runge-Kutta三种算法来实现微分方程(组)的数值求解;2、程序文件及功能清单:(1) Euler Method:function [x,y]=EulerDSolve(f,ab,y0,h)x=(ab(1):h:ab(2))';n=length(y0);y=zeros(length(x),n);y(1,:)=y0';for k=2:length(x)y(k,:)=y(k-1,:)+h*feval(f,x(k-1),y(k-1,:)')';end;(2) Improved Euler Method:function [x,y]=MEulerDSolve(f,ab,y0,h)x=(ab(1):h:ab(2))';n=length(x);y=zeros(n,length(y0));y(1,:)=y0';for k=2:nyp=y(k-1,:)+h*feval(f,x(k-1),y(k-1,:));yc=y(k-1,:)+h*feval(f,x(k),yp);y(k,:)=(yp+yc)/2;end(3) Runge-Kutta Method:function [TOut,YOut]=Runge_Kutta(f,ab,y0,h)TOut=(ab(1):h:ab(2))';n=length(TOut);YOut=zeros(n,length(y0));YOut(1,:)=y0';for k=2:nx=TOut(k-1); y=YOut(k-1,:)';K1=feval(f,x,y);K2=feval(f,x+h/2,y+K1*h/2);K3=feval(f,x+h/2,y+K2*h/2);K4=feval(f,x+h,y+K3*h);YOut(k,:)=(y+(K1+2*K2+2*K3+K4)*h/6)';end四、实验步骤1、打开MATLAB软件,新建 *.m文件,在m文件的窗口中编辑Euler算法的函数程序,另建一m文件,编辑自己改进的Euler算法的函数程序,再新建一m文件,在窗口中编辑Runge-Kutta算法的函数程序,并全部保存在指定的文件夹下;2、将MATLAB软件的工作页面的工具栏下的目标文件指向指定的文件夹;3、分别调用上述三种算法的函数,实现微分方程(组)的数值求解完成给定的实验题目;4、输出结果和初步分析说明(见附页)。

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

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

微分方程数值解法实验报告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]。

微分方程数值解实验报告

微分方程数值解实验报告

微分方程数值解实验报告实验目的:掌握微分方程数值解的基本方法,能够利用计算机编程求解微分方程。

实验原理:微分方程是自然科学与工程技术中常见的数学模型,它描述了变量之间的关系及其随时间、空间的变化规律。

解微分方程是研究和应用微分方程的基础,但有很多微分方程无法找到解析解,只能通过数值方法进行求解。

本实验采用欧拉方法和改进的欧拉方法求解微分方程的初值问题:$$\begin{cases}\frac{dy}{dt}=f(t,y)\\y(t_0)=y_0\end{cases}$$其中,$f(t,y)$是给定的函数,$y(t_0)=y_0$是已知的初值条件。

欧拉方法是最基本的数值解法,其步骤如下:1.给定$t_0$和$y_0$2.计算$t_{i+1}=t_i+h$,其中$h$是步长3. 计算$y_{i+1}=y_i+hf(t_i,y_i)$4.重复步骤2、3直到达到终止条件改进的欧拉方法是对欧拉方法进行改进,通过利用函数$y(t)$在$t+\frac{1}{2}h$处的斜率来更准确地估计$y_{i+1}$,其步骤如下:1.给定$t_0$和$y_0$2.计算$t_{i+1}=t_i+h$,其中$h$是步长3. 计算$y_*=y_i+\frac{1}{2}hf(t_i,y_i)$4. 计算$y_{i+1}=y_i+hf(t_i+\frac{1}{2}h,y_*)$5.重复步骤2、3、4直到达到终止条件实验步骤:1.编写程序实现欧拉方法和改进的欧拉方法2.给定微分方程和初值条件3.设置步长和终止条件4.利用欧拉方法和改进的欧拉方法求解微分方程5.比较不同步长下的数值解与解析解的误差6.绘制误差-步长曲线,分析数值解的精度和收敛性实验结果:以一阶常微分方程$y'=3ty+t$为例,给定初值$y(0)=1$,取步长$h=0.1$进行数值求解。

利用欧拉方法求解微分方程得到的数值解如下:\begin{array}{cccc}t & y_{\text{exact}} & y_{\text{Euler}} & \text{误差} \\ \hline0.0&1.000&1.000&0.000\\0.1&1.035&1.030&0.005\\0.2&1.104&1.108&0.004\\0.3&1.212&1.217&0.005\\0.4&1.360&1.364&0.004\\0.5&1.554&1.559&0.005\\0.6&1.805&1.810&0.005\\0.7&2.131&2.136&0.005\\0.8&2.554&2.560&0.006\\0.9&3.102&3.107&0.006\\1.0&3.807&3.812&0.005\\\end{array}利用改进的欧拉方法求解微分方程得到的数值解如下:\begin{array}{cccc}t & y_{\text{exact}} & y_{\text{Improved Euler}} & \text{误差} \\\hline0.0&1.000&1.000&0.000\\0.1&1.035&1.035&0.000\\0.2&1.104&1.103&0.001\\0.3&1.212&1.211&0.001\\0.4&1.360&1.358&0.002\\0.5&1.554&1.552&0.002\\0.6&1.805&1.802&0.003\\0.7&2.131&2.126&0.005\\0.8&2.554&2.545&0.009\\0.9&3.102&3.086&0.015\\1.0&3.807&3.774&0.032\\\end{array}误差-步长曲线如下:实验结论:通过对比欧拉方法和改进的欧拉方法的数值解与解析解的误差,可以发现改进的欧拉方法具有更高的精度和收敛性。

微分方程数值解实验报告三

0.4598 0.4598 0.4598 0.4598 0.4598
Columns 61 through 65
0.4598 0.4598 0.4598 0.4598 0.4598
Columns 66 through 70
0.4598 0.4598 0.4598 0.4598 0.4598
Columns 71 through 75
0.4597 0.4597 0.4597 0.4597 0.4597
Columns 56 through 60
0.4597 0.4597 0.4597 0.4597 0.4597
Columns 61 through 65
0.4597 0.4597 0.4597 0.4597 0.4597
Columns 66 through 70
0.4597
parabolicFD(80,3200)
ans =
Columns 1 through 5
0.4599 0.4599 0.4599 0.4599 0.4599
Columns 6 through 10
0.4599 0.4599 0.4599 0.4599 0.4599
Columns 11 through 15
0.4599 0.4599 0.4599 0.4599 0.4599
Columns 16 through 20
0.4599 0.4599 0.4599 0.4599 0.4599
Columns 21 through 25
0.4599 0.4599 0.4599 0.4599 0.4599
Columns 26 through 30
Columns 21 through 25
0.4598 0.4598 0.4598 0.4598 0.4598

MATLAB第三次上机实验报告

电子科技大学电子工程学院标准实验报告(实验)课程名称MATLAB与数值分析学生姓名:学号:指导教师:一、实验名称实验三 数值积分、微分方程求解二、实验目的通过上机实验,使学生对数值积分、微分方程求解方法有一个初步的理解。

实验涉及的核心知识点:数值积分和积分方程的数值求解、常微分方程数值求解。

实验重点与难点:算法设计和MATLAB 编程三、实验内容1. 选用复合Simpson 公式,计算()()11ln 1ln 1x x dx -+-⎰并用Matlab 的符号运算工具箱计算其精确值。

比较结果,找出问题原理,提出解决问题的方法。

2. 求积分方程()()1021t ty t e y s ds e e =--⎰ 的数值解和精确解,分析二者的差异。

3. 利用Euler 法对不同的步长求下面初值问题的数值解:()()()'20010y t y t y ⎧=-⎪⎨=⎪⎩ 并通过绘图,与方程的解析解进行比较。

四、实验数据及结果分析1. 选用复合Simpson 公式,计算()()11ln 1ln 1x x dx -+-⎰并用Matlab 的符号运算工具箱计算其精确值。

比较结果,找出问题原理,提出解决问题的方法。

function s=simpr1(f,a,b,n)h=(b-a)/(2*n); s1=0; s2=0;for k=1:nx=a+h*(2*k-1); s1=s1+feval(f,x); endfor k=1:(n-1) x=a+h*k*2;s2=s2+feval(f,x); ends=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;function y=f(x)y=(log(1+x))*(log(1-x));(1)在主界面中输入simpr1('f',-1,1,100)所得结果为:ans = -Inf(2)在主界面中输入simpr1('f',-0.9999,0.9999,100)所得结果为ans = -1.11042. 求积分方程()()1021t ty t e y s ds e e =--⎰ 的数值解和精确解,分析二者的差异。

数值分析上机实践报告

数值分析上机实践报告一、实验目的本实验的目的是通过编写数值分析程序,掌握解决数学问题的数值计算方法,并通过实际应用来检验其有效性和准确性。

具体包括以下几个方面的内容:1.掌握二分法和牛顿迭代法的基本原理和实现方法;2.熟悉利用矩阵的LU分解和追赶法解线性方程组的过程;3.通过具体的实例应用,比较不同方法的计算效果和精度。

二、实验内容本实验分为三个部分,每个部分包括一个具体的数学问题和相应的数值计算方法。

1.问题一:求方程f(x)=x^3-5x^2+10x-80=0的近似解。

在问题一中,我们通过二分法和牛顿迭代法来求解方程的近似解,并比较两种方法的精度和收敛速度。

2.问题二:用LU分解解线性方程组。

问题二中,我们通过矩阵的LU分解方法解线性方程组Ax=b,然后和直接用追赶法解线性方程组进行对比,验证LU分解的有效性和准确性。

三、实验结果及分析1.问题一的结果分析:通过二分法和牛顿迭代法求解方程f(x)=x^3-5x^2+10x-80=0的近似解,得到的结果如下:从结果来看,两种方法得到的近似解均与真实解x≈5非常接近。

但是,通过比较可以发现,牛顿迭代法的计算速度比二分法更快,迭代的次数更少。

因此,在需要高精度近似解的情况下,牛顿迭代法是一个更好的选择。

2.问题二的结果分析:通过LU分解和追赶法解线性方程组Ax=b,得到的结果如下:-用LU分解解线性方程组得到的结果为x1≈1.0,x2≈2.0,x3≈3.0;-用追赶法解线性方程组得到的结果为x1≈1.0,x2≈2.0,x3≈3.0。

从结果来看,两种方法得到的结果完全一致,而且与真实解非常接近。

这表明LU分解方法和追赶法均可以有效地解决线性方程组问题。

但是,在实际应用中,当方程组规模较大时,LU分解方法的计算复杂度较高,因此追赶法更加适用。

四、实验总结通过本实验,我掌握了二分法和牛顿迭代法以及LU分解和追赶法的基本原理和实现方法。

通过具体的数学问题实例应用,我比较了不同方法的计算效果和精度,得出以下结论:1.在求解函数的近似解时,牛顿迭代法相对于二分法具有更快的收敛速度和更高的计算精度;2.在解决线性方程组问题时,LU分解方法在计算准确性方面与追赶法相当,但在处理较大规模的问题时,计算复杂度较高,追赶法更适合。

微分方程数值解实验报告

微分方程数值解实验报告微分方程数值解实验报告一、引言微分方程是数学中一类重要的方程,广泛应用于各个科学领域。

在实际问题中,往往难以得到微分方程的解析解,因此需要借助数值方法来求解。

本实验旨在通过数值解法,探索微分方程的数值解及其应用。

二、数值解法介绍常用的微分方程数值解法有欧拉法、改进欧拉法、四阶龙格-库塔法等。

在本实验中,我们将采用改进欧拉法进行数值解的求取。

改进欧拉法是一种一阶的显式迭代法,其基本思想是将微分方程的导数用差商来近似表示,并通过迭代逼近真实解。

具体迭代公式如下:\[y_{n+1} = y_n + h \cdot f(x_n + \frac{h}{2}, y_n + \frac{h}{2} \cdot f(x_n, y_n))\]其中,\(y_n\)表示第n步的近似解,\(h\)表示步长,\(f(x_n, y_n)\)表示微分方程的导数。

三、实验步骤1. 确定微分方程及初始条件在本实验中,我们选择经典的一阶常微分方程:\[y' = -2xy\]并给定初始条件\(y(0) = 1\)。

2. 设置步长和迭代次数为了得到较为准确的数值解,我们需要合理选择步长和迭代次数。

在本实验中,我们将步长设置为0.1,迭代次数为10。

3. 迭代计算数值解根据改进欧拉法的迭代公式,我们可以通过编写计算程序来求解微分方程的数值解。

具体计算过程如下:- 初始化:设定初始条件\(y_0 = 1\),并给定步长\(h = 0.1\)。

- 迭代计算:使用改进欧拉法的迭代公式,通过循环计算得到\(y_1, y_2, ...,y_{10}\)。

- 输出结果:将计算得到的数值解输出,并进行可视化展示。

四、实验结果与分析通过以上步骤,我们得到了微分方程的数值解\(y_1, y_2, ..., y_{10}\)。

将这些数值解进行可视化展示,可以更直观地观察到解的变化趋势。

根据实验结果,我们可以发现随着迭代次数的增加,数值解逐渐逼近了真实解。

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

南京信息工程大学 实验(实习)报告
实验课程 微分方程数值解 实验名称 第三次实验 实验日期 指导老师 王曰朋 专业 数学与应用数学 年级 姓名 学号 得分
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
实验目的:
*对possion 方程求解格式进行编程,并求解一个定解问题;
*对迎风格式进行编程,分别适应周期边界条件的定解问题(用矩阵形式循环求解)与非周期边界条件的定解问题(元素直接循环),并各求解两个定解问题;
实验内容: 1. 编程内容
已编程possion 方程定解问题的求解程序,并用于求解实例,见possion.m 文件; 编程迎风格式求解非周期边界条件的定解问题(元素直接循环),两个定解问题分别对应于0,0<>U U ,见upwind1.m 与upwind2.m 文件.
编程迎风格式求解周期边界条件的定解问题(用矩阵形式循环求解),两个定解问题分别对应于0,0<>U U ,见upwindm1.m 与upwindm2.m 文件.
2. 问题求解
Possion 方程定解问题求解:
求解如下一道问题:
⎪⎪⎪⎩⎪
⎪⎪⎨
⎧≤≤==≤≤==⨯=∈+=∂∂+∂∂.10,)1,(,1)0,(,10,),1(,1),0(),1,0()1,0(),(,)(222
222x e x u x u y e y u y u D y z e y x x u x u x y xy
它的解析解为:.),(xy e y x u =
边界条件均已知,离散化区域后,内点求法为取上下左右四点的均值。

编程输出精确解三维图像,数值解三维图像和绝对误差三维分布:
图1(1):精确解三维图
图1(2):数值解三维图
图1(3):绝对误差分布三维图
可以看出数值求解结果直观上很好的贴合精确解。

且从绝对误差分布来看,虽
然在两个分量上会有误差累积,但一直都控制在710-数量级。

一阶波动方程定解问题求解:
一阶波动方程定解问题一般形式如下:
⎪⎪⎩
⎪⎪

⎧<=>==∈=+.
0),(),1(,0),(),0(),()0,
(),1,0(,0100U if t g t u U if t g t u x u x u x Uu u x t 随着问题中系数U 符号的不同会需要不同的边界条件,故求解格式上也有略微差别。

只有一个边界条件时,适合对元素直接循环求解;当存在周期边界条件,即左右边界相等时,可以用矩阵形式循环求解。

这里求解如下四个定解问题: *非周期边界条件的0>U 的一个定解问题:
⎪⎩

⎨⎧==∈=+-.),0(,)0,
(),1,0(,0t x x t e t u e x u x u u (1) 其精确解为.),(x t e t x u -=
*非周期边界条件的0<U 的一个定解问题:
⎪⎩

⎨⎧==∈=-+.),1(,)0,
(),1,0(,01t x x t e t u e x u x u u (2) 其精确解为.),(x t e t x u +=
*周期边界条件的0>U 的一个定解问题:
⎪⎩

⎨⎧=-==∈=+).2sin(),0(),2sin()1,()0,
(),1,0(,0t t u x x u x u x u u x t ππ (3) 其精确解为)).(
2sin(),(x t t x u -=π *周期边界条件的0<U 的一个定解问题:
⎪⎩

⎨⎧===∈=-).2sin(),1(),2sin()1,()0,
(),1,0(,0t t u x x u x u x u u x t ππ (4) 其精确解为)).(2sin(),(x t t x u +=π
编程分别得到它们的精确解三维图,数值解三维图和绝对误差分布三维图如下:
图2(1):问题(1)精确解
图2(2):问题(1)数值解
图2(3):问题(1)绝对误差分布
图3(1):问题(2)精确解图3(2):问题(2)数值解
图3(3):问题(2)绝对误差分布
图4(1):问题(3)精确解图4(2):问题(3)数值解
图4(3):问题(3)绝对误差分布
图5(1):问题(4)精确解
图5(2):问题(4)数值解
图5(3):问题(4)绝对误差分布
可以看出数值解能很好地贴近精确解,直观上无法观察出差别。

同时也说
明算法格式稳定,这是因为四个问题的程序中,离散化x 方向步长均取
02.0=dx ,t 方向步长均取01.0=dt .故柯朗数,15.0<==dx
dt
U C 即满足稳定性条件。

相关文档
最新文档