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

合集下载

偏微分方程的差分方法与数值解

偏微分方程的差分方法与数值解

显式差分格式
01
利用前一时间步长的温度值,通过差分公式计算下一
时间步长的温度分布。
隐式差分格式
02 需要求解线性方程组,但具有更好的稳定性,适用于
大时间步长。
Crank-Nicolson格式
03
结合了显式与隐式格式的优点,具有二阶精度和无条
件稳定性。
波动方程的数值解法
01
有限差分时间域( FDTD)方法
数值解法的稳定性和收敛性需要仔细考虑,否则可能导致计算结果不准确 。
未来发展趋势和挑战
发展趋势
随着计算机技术的不断发展,更高性能的计算机和更先进的算法将使得偏微分方程的数值解法更加高效 和精确。
结合人工智能和机器学习技术,可以开发出更加智能化的数值解法,提高计算效率和精度。
未来发展趋势和挑战
未来发展趋势和挑战
数值解的应用
数值解在各个领域都有广泛的应用,如物理学中的波动方程、热传导方程和量子力学方程,化学中的 反应扩散方程,生物学中的生态模型和神经网络模型,以及工程学中的结构力学、流体力学和电磁场 问题等。
02
偏微分方程的基本概念和性质
偏微分方程的定义和分类
定义
偏微分方程是包含未知函数及其偏导数的方程。
分类
根据方程中未知函数的最高阶偏导数的阶数,可分为一阶、二阶和高阶偏微分方程;根据方程中是否包含未知函 数的非线性项,可分为线性和非线性偏微分方程。
偏微分方程的定解条件和适定性
定解条件
为了使偏微分方程的解唯一确定,需要 给出定解条件,如初始条件、边界条件 等。
VS
适定性
适定性是指偏微分方程定解问题的解的存 在性、唯一性和稳定性。对于线性偏微分 方程,通常可以通过能量方法等方法研究 其适定性;对于非线性偏微分方程,适定 性的研究更加复杂,需要运用不动点定理 、上下解方法、变分方法等工具。

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

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

微分方程数值解法实验报告班级:姓名:学号:日期:一、实验目的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、输出结果和初步分析说明(见附页)。

两点边值问题的有限差分法

两点边值问题的有限差分法

学生实验报告实验课程名称偏微分方程数值解开课实验室数统学院学院数统年级2021专业班信计2班学生姓名学号开课时间2021 至2021学年第2学期数学与统计学院制开课学院、实验室:数统学院实验时间:2021年月日1,...,1i N =-,网点处准确解记为[]i u ,1,...,1i N =-。

然后计算相应的误差[]0max Ni i ci Ne u u <<=-,[]121N Ni i i e h u u -==-∑及收敛阶()2ln ln 2NNe e ,将计算结果填入第五局部的表格,并对表格中的结果进展解释?4. 将数值解和准确解画图显示,每种网格上的解画在一图。

三.实验原理、方法〔算法〕、步骤1. 差分格式:=-1/h^2(-()+)+()/2h+=A,2. 局部阶段误差: (u)=O(h^2)3.程序clear allN=10; a=0;b=1;p=(x) 1; r=(x) 2; q=(x) 3; alpha=0;beta=1;五.实验结果及实例分析NN ce收敛阶N e收敛阶10 0.00104256 …… 0.00073524 …… 20 0.00026168 1.9341 0.00018348 1.4530 40 0.00006541 2.0001 0.00004585 2.0000 80 0.00001636 1.9993 0.00001146 2.0000 1600.000004092.00000.000002872.0000N 越大 只会使绝对误差变小,方法没变,所以收敛阶一致。

图示为:(绿线为解析解,蓝线为计算解)N=10N=20N=40N=80N=160。

微分方程数值解实验报告

微分方程数值解实验报告

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

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

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

本实验采用欧拉方法和改进的欧拉方法求解微分方程的初值问题:$$\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}误差-步长曲线如下:实验结论:通过对比欧拉方法和改进的欧拉方法的数值解与解析解的误差,可以发现改进的欧拉方法具有更高的精度和收敛性。

偏微分方程数值算法综述及应用案例分析

偏微分方程数值算法综述及应用案例分析

偏微分方程数值算法综述及应用案例分析偏微分方程(Partial Differential Equation,简称PDE)是数学和工程学科领域中经常用到的基础概念。

偏微分方程的求解对于许多领域的研究和实践具有重要的作用,例如材料科学、地球物理学、计算机科学和机械工程学等。

然而,由于偏微分方程的求解难度较大,传统的解析方法无法处理更加复杂的情况。

为了解决这个问题,人们发展出了一些数值算法,使得偏微分方程的数值求解可以得以实现。

本文主要介绍偏微分方程数值算法的综述和应用案例分析。

一、偏微分方程数值算法综述偏微分方程的数值求解方法可以分为有限差分法、有限元法和谱方法等。

1. 有限差分法有限差分法是一种比较常见的偏微分方程数值求解方法。

其基本思想是用有限差分代替微分,将偏微分方程化为差分方程,并通过迭代求解差分方程得到数值解。

有限差分法的优点是实现简单,易于理解,缺点是精度较低,适用范围有限。

2. 有限元法有限元法是一种更为精确的偏微分方程数值求解方法。

在有限元法中,原问题被抽象成一组离散化的小问题,每一个小问题都在一个有限元形状中求解。

通过求解多个小问题的结果来近似求解原问题。

有限元法的优点是精度较高,适用范围广泛,缺点是计算量较大,实现难度也较大。

3. 谱方法谱方法是一种通过函数级数展开求解偏微分方程的方法。

谱方法基于傅里叶级数展开,将解表示为一组基函数的线性组合。

通过确定系数来求解偏微分方程,谱方法的优点是精度高,实现简单,缺点是需要求解傅里叶系数。

二、偏微分方程数值算法的应用案例分析偏微分方程的数值算法在科学计算和工程应用中有着广泛的应用。

本文简要介绍一些偏微分方程数值算法应用案例。

1. 热传导方程的数值求解偏微分方程中的热传导方程是一类广泛应用的模型。

通过对热传导方程的数值求解可以实现对一些热传导问题的模拟和实验研究。

其中,使用有限差分法可以求解热传导方程,并可以得到热传导的温度分布。

2. 构造三维曲面的谱方法谱方法在计算机辅助设计、建模和制造等领域中应用广泛。

两类高阶偏微分方程的有效数值解法的开题报告

两类高阶偏微分方程的有效数值解法的开题报告

两类高阶偏微分方程的有效数值解法的开题报告一、研究意义高阶偏微分方程在科学和工程领域中都有着广泛的应用,如物理、化学、工程学等。

但高阶偏微分方程的解析解往往难以求出,因此需要研究数值求解方法。

本文旨在研究两类高阶偏微分方程的有效数值解法,为科学和工程领域中相关问题的数值模拟提供支持。

二、研究内容与方法本文将研究两类高阶偏微分方程的有效数值解法,分别是:1. 非线性扩散方程(Nonlinear Diffusion Equation)非线性扩散方程是描述物质扩散的一种方程,具有广泛的应用。

由于该方程的非线性特性和高阶导数项的存在,其解析解十分困难。

因此,需要通过数值方法来求解。

本文将使用时空分数阶扩散方程(Space-time Fractional Diffusion Equation,简称STFDE)作为研究对象,提出一种有效的数值求解方法。

该方法将采用有限差分法结合迭代法,将STFDE转化为常微分方程组的形式,进而求得其数值解。

2. 广义KdV方程(Generalized Korteweg-de Vries Equation)广义KdV方程是一类非线性、色散和非线性色散耦合的偏微分方程,常用于描述波动现象。

由于其具有复杂的解析结构,使其难以求解。

因此,需要研究高效的数值求解方法。

本文将采用时空分数阶广义KdV方程(Space-time Fractional Generalized Korteweg-de Vries Equation,简称STFGKdV)作为研究对象,提出一种有效的数值求解方法。

该方法将采用有限差分法结合龙格-库塔法,将STFGKdV转化为时间离散的形式,求得其数值解。

三、预期成果与意义通过本文的研究,将得到两类高阶偏微分方程的有效数值解法,并将其应用于物理、化学、工程学等领域中相关问题的数值模拟。

该研究将对相关学科提供支持,促进科学技术的发展和应用。

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

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

偏微分方程数值解法初步分析

偏微分方程数值解法初步分析

偏微分方程数值解法初步分析偏微分方程(Partial Differential Equation, PDE)是数学中的一类重要方程,广泛应用于物理学、工程学、经济学等众多领域。

然而,由于其复杂性,解析解往往难以求得,因此需要借助数值方法进行求解。

本文将初步分析偏微分方程的数值解法。

一、有限差分法有限差分法(Finite Difference Method, FDM)是一种常用的数值解法,通过将偏微分方程中的导数用差商代替,将偏微分方程转化为代数方程组进行求解。

这种方法的基本思想是将求解区域进行网格化,将偏微分方程中的导数用网格点上的函数值表示,然后利用差商逼近导数,将偏微分方程离散为代数方程组。

二、有限元法有限元法(Finite Element Method, FEM)是一种广泛应用的数值解法,尤其适用于复杂几何形状的求解。

该方法将求解区域划分为有限个小区域,称为单元,然后在每个单元上建立近似函数,通过将偏微分方程转化为变分问题,并将变分问题进行离散化处理,得到一个代数方程组进行求解。

三、特征线方法特征线方法(Method of Characteristics)是一种适用于一阶偏微分方程的数值解法。

该方法通过求解偏微分方程的特征线方程,将偏微分方程转化为常微分方程,在每条特征线上求解,然后将各个特征线上的解进行拼接得到整个解。

四、谱方法谱方法(Spectral Method)是一种数值解法,它利用特定的基函数,如傅里叶级数、切比雪夫级数等,对偏微分方程进行展开,通过系数的求解来得到数值解。

谱方法具有高精度和高收敛速度的优点,尤其适用于解析解存在的情况。

五、数值实验与误差分析在选择适用于某个具体偏微分方程的数值解法时,通常需要进行数值实验和误差分析。

数值实验是指通过计算机模拟的方式,求解偏微分方程并验证数值解的准确性;误差分析是指对数值解与解析解的差异进行分析,从而评估数值解的精度和收敛性。

总结:本文初步分析了偏微分方程数值解法的几种常见方法,包括有限差分法、有限元法、特征线方法和谱方法。

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

偏微分方程数值解






(一)实验一
一、上机题目:
用线性元求解下列边值问题的数值解:
-y′′+π2
4y=π2
2
sinπ
2
x,0<x<1
y(0)=0,y′(1)=0
二、实验程序:
function S=bz
x=fzero(@zfun,1);
[t y]=ode45(@odefun,[0 1],[0 x]);
S.t=t;
S.y=y;
plot(t,y)
xlabel('x:´从0一直到1')
ylabel('y')
title('线性元求解边值问题的数值解')
function dy=odefun(x,y)
dy=[0 0]';
dy(1)=y(2);
dy(2)=(pi^2)/4*y(1)-((pi^2)/2)*sin(x*pi/2);
function z=zfun(x);
[t y]=ode45(@odefun,[0 1],[0 x]);
z=y(end)-0;
三、实验结果:
1.以步长h=0.05进行逐步运算,运行上面matlab程序结果如下:
2.在0<x<1区间上,随着x 的不断变化,x ,y 之间关系如下图所示:
(二)实验二
四、 上机题目:
求解Helmholtz 方程的边值问题:
21u k u -∆-=,于(0,1)*(0,1)Ω=
0u =,于1{0,01}{01,1}x y x y Γ==≤≤≤≤= 12{0,01}{01,1}
0,{01,0}{1,01}x y x y u x y x y n Γ==≤≤≤≤=∂=Γ=≤≤==≤≤∂于
其中k=1,5,10,15,20
五、实验程序:
(采用有限元方法,这里对[0,1]*[0,1]采用n*n的划分,n为偶数)
n=10;
a=zeros(n);f=zeros(n);b=zeros(1,n);U=zeros(n,1);u=zeros(n,1);
for i=2:n
a(i-1,i-1)=pi^2/(12*n)+n;
a(i-1,i)= pi^2/(24*n)-n;
a(i,i-1)= pi^2/(24*n)-n;
for j=1:n
if j==i-1
a(i,j)=a(i,i-1);
else if j==i
a(i-1,j-1)=2*a(i-1,i-1);
else if j==i+1
a(i,j)=a(i,i+1);
else
a(i,j)=0;
end
end
end
end
end
a(n,n)=pi^2/(12*n)+n;
for i=2:n
f(i-1,i)=4/pi*cos((i-1)*pi/2/n)-8*n/(pi^2)*sin(i*pi/2/n)+8*n/(pi^2)*s in((i-1)*pi/2/n);
end
for i=1:n
f(i,i)=-4/pi*cos(i*pi/2/n)+8*n/(pi^2)*sin(i*pi/2/n)-8*n/(pi^2)*sin((i -1)*pi/2/n);
end
%b(j)=f(i-1,j)+f(i,j)
for i=1:(n-1)
b(i)=f(i,i)+f(i,i+1);
end
b(n)=f(n,n);
tic;
n=20;
can=20;
s=zeros(n^2,10);
h=1/n;
st=1/(2*n^2);
A=zeros((n+1)^2,(n+1)^2);
syms x y;
for k=1:1:2*n^2
s(k,1)=k;
q=fix(k/(2*n));
r=mod(k,(2*n));
if (r~=0)
r=r;
else r=2*n;q=q-1;
end
if (r<=n)
s(k,2)=q*(n+1)+r;
s(k,3)=q*(n+1)+r+1;
s(k,4)=(q+1)*(n+1)+r+1;
s(k,5)=(r-1)*h;
s(k,6)=q*h;
s(k,7)=r*h;
s(k,8)=q*h;
s(k,9)=r*h;
s(k,10)=(q+1)*h;
else
s(k,2)=q*(n+1)+r-n;
s(k,3)=(q+1)*(n+1)+r-n+1;
s(k,4)=(q+1)*(n+1)+r-n;
s(k,5)=(r-n-1)*h;
s(k,6)=q*h;
s(k,7)=(r-n)*h;
s(k,8)=(q+1)*h;
s(k,9)=(r-n-1)*h;
s(k,10)=(q+1)*h;
end
end
d=zeros(3,3);
B=zeros((n+1)^2,1);
b=zeros(3,1);
for k=1:1:2*n^2
L(1)=(1/(2*st))*((s(k,7)*s(k,10)-s(k,9)*s(k,8))+(s(k,8)-s(k,10))*x+(s
(k,9)-s(k,7))*y);
L(2)=(1/(2*st))*((s(k,9)*s(k,6)-s(k,5)*s(k,10))+(s(k,10)-s(k,6))*x+(s (k,5)-s(k,9))*y);
L(3)=(1/(2*st))*((s(k,5)*s(k,8)-s(k,7)*s(k,6))+(s(k,6)-s(k,8))*x+(s(k ,7)-s(k,5))*y);
for i=1:1:3
for j=i:3
d(i,j)=int(int(((((diff(L(i),x))*(diff(L(j),x)))+((diff(L(i),y))*(dif f(L(j),y))))-((can^2)*L(i)*L(j))),x,0,1),y,0,1);
d(j,i)=d(i,j);
end
end
for i=1:1:3
for j=1:1:3
A(s(k,(i+1)),s(k,(j+1)))=A(s(k,(i+1)),s(k,(j+1)))+d(i,j);
end
end
for i=1:1:3
b(i)=int(int((L(i)),x,0,1),y,0,1);
B(s(k,(i+1)),1)=B(s(k,(i+1)),1)+b(i);
end
end
M=zeros((n+1)^2,n^2);
j=n^2;
for i=(n^2+n):-1:1
if ((mod(i,(n+1)))~=1)
M(:,j)=A(:,i);
j=j-1;
else continue
end
end
preanswer=M\B;
answer=zeros((n+1)^2,1);
j=1;
for i=1:1:(n^2+n)
if ((mod(i,(n+1)))~=1)
answer(i)=preanswer(j);
j=j+1;
else answer(i)=0;
end
end
Z=zeros((n+1),(n+1));
for i=1:1:(n+1)^2
s=fix(i/(n+1))+1;
r=mod(i,(n+1));
if(r==0)
r=n+1;
s=s-1;
else
end
Z(r,s)=answer(i);
end
[X,Y]=meshgrid(1:-h:0,0:h:1);
surf(X,Y,Z);
toc;
t=toc;
K=a ;
B=b';
U=inv(K)*B
for i=1:n
u(i,1)=4/(pi^2)*sin(pi*i/n/2);
end
u
e=U-u
六、实验结果:
程序中的变量can为问题中的k,为了方便比较,采用了画图的方式。

在n=10时,分别考察can=k=1,5,10,15,20时的情况。

2.can=k=5时
3.can=k=10时
5.can=k=20时
六、实验总结
本次实验第二题很难,通过查找资料和请教同学,学到了很多。

通过本次实验,我也进一步了解了线性元求边值问题的数值解的思想和方法,同时了解了matlab工具包中相关类库对求边值问题数值解的支持,更加熟悉了matlab的编程语法。

相关文档
最新文档