【免费下载】双曲方程基于matlab的数值解法
matlab 双曲线型偏微分方程
matlab 双曲线型偏微分方程引言概述:双曲线型偏微分方程是数学中的重要分支之一,它在物理、工程和自然科学等领域中具有广泛的应用。
Matlab作为一种强大的数值计算工具,可以用于求解双曲线型偏微分方程。
本文将介绍Matlab在求解双曲线型偏微分方程方面的应用。
正文内容:1. 理解双曲线型偏微分方程1.1 双曲线型偏微分方程的定义1.2 双曲线型偏微分方程的特点1.3 双曲线型偏微分方程的分类2. Matlab在求解双曲线型偏微分方程中的应用2.1 利用有限差分法求解双曲线型偏微分方程2.2 利用有限元法求解双曲线型偏微分方程2.3 利用特征线法求解双曲线型偏微分方程3. Matlab的双曲线型偏微分方程求解工具箱3.1 PDE Toolbox3.2 Hyperbolic PDE Toolbox3.3 Wavelet Toolbox4. 实例分析:声波传播方程的求解4.1 声波传播方程的建立4.2 Matlab代码实现4.3 数值结果的分析和讨论5. 应用案例:电磁波传播问题的求解5.1 电磁波传播方程的建立5.2 Matlab代码实现5.3 数值结果的分析和讨论6. Matlab在双曲线型偏微分方程求解中的优势和不足6.1 优势:高效、灵活的数值计算能力6.2 不足:对于复杂问题的求解可能存在困难总结:本文介绍了Matlab在双曲线型偏微分方程求解中的应用。
通过对双曲线型偏微分方程的理解和分类,以及Matlab的求解方法和工具箱的介绍,我们可以看到Matlab在双曲线型偏微分方程求解中的重要作用。
通过实例分析和应用案例的讨论,我们可以看到Matlab在求解双曲线型偏微分方程方面的优势和不足。
在实际应用中,我们应根据具体问题选择合适的求解方法和工具,以获得准确、高效的数值计算结果。
matlab方程组数值解法
matlab方程组数值解法Matlab方程组数值解法随着科学技术的发展,数值计算在科学研究和工程实践中的应用越来越广泛。
对于复杂的数学模型,通过解析方法求得准确的解析解往往是困难的甚至不可能的。
因此,数值解法成为了求解这些问题的重要手段之一。
Matlab作为一种强大的数值计算工具,提供了多种数值解法来解决方程组的数值求解问题。
在Matlab中,求解方程组的数值解法主要包括直接法和迭代法两种。
直接法是指通过一系列直接计算来求解方程组的解,常见的方法有高斯消元法和LU分解法。
迭代法则是通过迭代计算来逼近方程组的解,常见的方法有雅可比迭代法和高斯-赛德尔迭代法。
高斯消元法是一种经典的直接法,它通过消元和回代的方式将方程组化为简化的三角方程组,然后通过回代计算得到解。
Matlab中提供了直接调用的函数,如"linsolve"函数,可以直接求解线性方程组。
对于非线性方程组,可以通过牛顿法等迭代法来求解。
LU分解法是另一种常用的直接法,它将方程组的系数矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积,然后通过回代计算得到解。
在Matlab中,可以使用"lu"函数进行LU分解,并通过"\"运算符求解线性方程组。
雅可比迭代法是一种简单而有效的迭代法,它通过迭代计算逐步逼近方程组的解。
在每一步迭代中,通过将方程组中的每个未知数的迭代解代入到方程组中的对应方程中,得到新的近似解。
通过多次迭代,可以得到逼近方程组解的解向量。
在Matlab中,可以使用"jacobi"函数进行雅可比迭代。
高斯-赛德尔迭代法是雅可比迭代法的改进版,它在每一步迭代中使用上一步迭代得到的未知数的新近似解。
这样可以更快地逼近方程组的解。
在Matlab中,可以使用"gauss_seidel"函数进行高斯-赛德尔迭代。
除了这些常见的数值解法外,Matlab还提供了其他一些数值求解函数,如"fsolve"函数可以求解非线性方程组,"ode45"函数可以求解常微分方程组等。
Matlab解方程(方程组)
Matlab 解方程这里系统的介绍一下关于使用Matlab求解方程的一系列问题,网络上关于Matlab求解方程的文章数不胜数,但是我大体浏览了一下,感觉很多文章都只是零散的介绍了一点,都只给出了一部分Matlab函数例子,以至于刚接触的人面对不同文章中的不同函数一脸茫然,都搞不清楚这些函数各自的用途,也不知道在什么样的情况下该选择哪个函数来求解方程,在使用Matlab解方程时会很纠结。
不知道读者是否有这样的感觉,反正我刚开始接触时就是这样的感觉,面对网络搜索到一系列函数都好想知道他们之间是个什么关系。
所谓的方程就是含有未知数的等式,解方程就是找出使得等式成立时的未知数的数值。
求方程的解可以转换成不同形式,比如求函数的零点、多项式的根。
方程分类很多,按照未知数个数分为一元、二元、多元方程;按照未知数组合形式分为线性方程和非线性方程;按照非零项次数是否一致分为齐次方程和非齐次方程。
线性方程就是方程中未知数次数是一次的,未知数之间不存在指、对、2及以上幂次的关系,线性方程又分为一元线性方程,也就是一元一次方程;多元线性方程,也就是多元一次方程,多以线性方程组的形式出现(包括齐次线性方程组和非齐次线性方程组)。
在Matlab中求解方程的函数主要有roots、solve、fzero、和fsolve函数等,接下来详细的介绍一下各个Matlab函数的使用方法和使用场合。
一、直接求解法(线性方程组)直接求解法不需要借助任何的Matlab函数,主要用于求解线性方程组,也就是未知数次数是一次的方程组,包括齐次线性方程组合非齐次线性方程组。
当然既然可以求解方程组自然也就可以求解单个方程。
主要针对A x=b形式的方程,其中A是未知数系数矩阵,x是未知数列向量,b是常数列向量,当b=0时就是齐次线性方程组,b ≠0时是非齐次线性方程组。
用左除法,x=A\b例:求解线性方程组的解12341242341234251357926640x x x x x x x x x x x x x x +-+=⎧⎪-+=-⎪⎨+-=⎪⎪+--=⎩解:即直接利用b 左除以A 。
双曲型偏微分方程数值求解方法研究
双曲型偏微分方程数值求解方法研究双曲型偏微分方程在物理学、工程学、数学等领域都有广泛应用,其数值求解方法的研究一直是人们关注的热点之一。
本文将从数学基础、数值求解方法等多个方面进行探究。
一、数学基础双曲型偏微分方程最基本的形式为:$$\frac{\partial^2u}{\partial t^2}-\frac{\partial^2u}{\partialx^2}=0\tag{1}$$其中,$u(x,t)$为未知函数,$t>0$为时间,$x$为空间坐标。
该方程描述了波动、电磁场传播等现象。
对于双曲型偏微分方程,其初值问题的形式为:$$u(x,0)=f(x),\ \frac{\partial u}{\partial t}(x,0)=g(x)\tag{2}$$初值问题的解存在唯一性,同时还有能量守恒等性质。
二、数值求解方法双曲型偏微分方程的数值求解方法包括有限差分法、有限元法、谱方法等。
1. 有限差分法有限差分法是一种被广泛采用的数值求解方法,其原理是将连续的求解区域离散化成有限个点,之后通过有限差分公式求出该点的近似解。
对于双曲型偏微分方程,可以使用中心差分公式进行离散化,即$$\frac{u_{i,j+1}-2u_{i,j}+u_{i,j-1}}{\Delta t^2}-\frac{u_{i+1,j}-2u_{i,j}+u_{i-1,j}}{\Delta x^2}=0\tag{3}$$其中,$u_{i,j}$表示在坐标$(i,j)$处的近似解。
2. 有限元法有限元法是一种更加广泛的数值求解方法,其原理是将求解区域划分为一系列小块,通过对每个小块内的方程进行求解,得到整个求解区域的近似解。
对于双曲型偏微分方程,可以采用时间-空间分离技术,先将时间离散化后,再对空间进行离散化,通过有限元法求解离散化后的方程。
3. 谱方法谱方法是一种基于函数逼近的数值求解方法,其原理是通过一组基函数对未知函数进行逼近,然后通过数值解法求解得到基函数系数,从而得到函数的近似解。
第二章 Matlab软件的数值计算方法2
3)三角函数、双曲函数及它们的反函数 )三角函数、 只用于数值计算外, 除atan2只用于数值计算外,其余的三角函数(如sin)、 只用于数值计算外 其余的三角函数( )、 双曲函数( 双曲函数(如cosh)以及它们的反函数(如asin, acosh) )以及它们的反函数( ) 在数值计算和符号计算中使用方法都相同。 在数值计算和符号计算中使用方法都相同。 4)指数、对数函数 )指数、 数值、符号计算中,函数sqrt, exp, expm的使用方法 数值、符号计算中,函数 的使用方法 完全相同,至于对数函数,符号计算中只有自然对数log, 完全相同,至于对数函数,符号计算中只有自然对数log, 而没有数值计算中的log2, log10。 而没有数值计算中的 。 5) 复数函数 ) conj, real, imag, abs相同,但无求相角的指令。 相同, 相同 但无求相角的指令。 6) 矩阵代数指令 ) diag, triu, tril, inv, det, rank, rref, null, colspace, poly, expm, eig基本与数值计算相同,只有 基本与数值计算相同, 稍微不同。 基本与数值计算相同 只有svd稍微不同。 稍微不同
1.3 符号表达式中自由变量的确定 findsym可实现对表达式中所有自由符号变量或指定数 可实现对表达式中所有自由符号变量或指定数 目的独立自变量的自动认定。 目的独立自变量的自动认定。 findsym(expr) findsym(expr,n) 【例7】对独立自由符号变量的自动辨认。 】对独立自由符号变量的自动辨认。 syms a b x X Y; k=sym('3'); z=sym('c*sqrt(delta)+y*sin(theta)'); EXPR=a*z*X+(b*x^2+k)*Y; findsym(EXPR)
matlab数值求解常微分方程快速方法
MATLAB是一种用于科学计算和工程应用的高级编程语言和交互式环境。
它在数学建模、模拟和分析等方面有着广泛的应用。
在MATLAB 中,常微分方程的数值求解是一个常见的应用场景。
在实际工程问题中,通常需要对常微分方程进行数值求解来模拟系统的动态行为。
本文将介绍MATLAB中对常微分方程进行数值求解的快速方法。
1. 基本概念在MATLAB中,可以使用ode45函数来对常微分方程进行数值求解。
ode45是一种常用的Runge-Kutta法,它可以自适应地选取步长,并且具有较高的数值精度。
使用ode45函数可以方便地对各种类型的常微分方程进行求解,包括一阶、高阶、常系数和变系数的微分方程。
2. 函数调用要使用ode45函数进行常微分方程的数值求解,需要按照以下格式进行函数调用:[t, y] = ode45(odefun, tspan, y0)其中,odefun表示用于描述微分方程的函数,tspan表示求解的时间跨度,y0表示初值条件,t和y分别表示求解得到的时间序列和对应的解向量。
3. 示例演示为了更好地理解如何使用ode45函数进行常微分方程的数值求解,下面我们以一个具体的例子来进行演示。
考虑如下的一阶常微分方程:dy/dt = -2*y其中,y(0) = 1。
我们可以编写一个描述微分方程的函数odefun:function dydt = odefun(t, y)dydt = -2*y;按照上述的函数调用格式,使用ode45函数进行求解:tspan = [0 10];y0 = 1;[t, y] = ode45(odefun, tspan, y0);绘制出解曲线:plot(t, y);4. 高级用法除了基本的函数调用方式外,MATLAB中还提供了更多高级的方法来对常微分方程进行数值求解。
可以通过设定选项参数来控制数值求解的精度和稳定性,并且还可以对刚性微分方程进行求解。
5. 性能优化在实际工程应用中,常常需要对大规模的常微分方程进行数值求解。
如何使用MATLAB求解微分方程学习资料
如何使用MATLAB求解微分方程学习资料MATLAB是一种强大的数值计算和科学编程平台,可以用于求解微分方程和微分方程组。
在使用MATLAB求解微分方程之前,需要掌握一些基础知识,包括MATLAB的基本语法和常用的求解微分方程的技术。
下面是一些学习资料和步骤,帮助您使用MATLAB求解微分方程。
1.学习MATLAB基本语法和操作:首先,您需要学习MATLAB的基本语法和常用操作。
您可以参考MATLAB的官方文档、教程和手册,以及MATLAB的在线资源和视频教程。
这些资源可以帮助您掌握MATLAB的基本操作,建立良好的编程习惯。
2.学习求解微分方程的方法:在使用MATLAB求解微分方程之前,您需要了解一些常用的求解微分方程的方法,例如数值方法和解析方法。
数值方法包括欧拉法、龙格-库塔法、四阶龙格-库塔法等;解析方法包括分离变量法、线性微分方程的常系数齐次法和非齐次法等。
您可以参考微积分的教科书、在线资源和视频教程,掌握这些方法。
3. 使用MATLAB求解一阶微分方程:一阶微分方程是最简单的微分方程形式。
您可以首先尝试使用MATLAB求解一阶微分方程。
MATLAB提供了几个函数来求解一阶微分方程,例如ode45、ode23、ode113等。
您可以使用这些函数来解决特定的一阶微分方程,并观察结果。
可以使用plot 函数绘制微分方程的解,以获得更直观的理解。
4.使用MATLAB求解高阶微分方程:一旦您熟悉了使用MATLAB求解一阶微分方程的方法,您可以尝试使用同样的方法来求解高阶微分方程。
在求解高阶微分方程时,您需要将其转化为一组一阶微分方程。
例如,对于二阶线性微分方程,您可以引入一个新的变量来表示未知函数的导数,然后将其转化为一组一阶微分方程。
然后,您可以使用相同的求解函数来求解这组一阶微分方程。
5. 使用MATLAB求解微分方程组:对于多元微分方程组,MATLAB提供了更多的函数来求解。
例如,ode45s可以用于求解刚体动力学方程,ode23t可以用于求解刚体动力学方程。
matlab数值解方程
matlab数值解方程MATLAB是一种高级的数值计算软件,它非常适合数学求解问题。
MATLAB有一个非常强大的数值解方程工具箱,可以帮助人们解决各种复杂的方程问题。
在本文中,我们将介绍如何使用MATLAB数值解方程。
MATLAB数值解方程是通过迭代法或牛顿迭代法求解非线性方程或方程组的解。
它可以求解非线性方程组,线性方程组,常微分方程,偏微分方程等。
MATLAB数值解方程可以通过以下步骤进行:1. 定义方程在MATLAB中,通常使用symbolic工具箱来定义方程。
使用syms函数定义变量,并使用等于号将方程左边与右边连接。
例如,要定义以下方程:x ^ 2 + 3 * x - 2 = 0使用以下代码:syms xf = x ^ 2 + 3 * x - 2;2. 求解方程使用solve函数来求解方程。
该函数的输入参数是方程变量和方程,输出是方程的根。
例如,使用以下代码求解上述方程:x = solve(f)执行后,MATLAB将返回方程的根,即[-3.3029, 0.3029]。
3. 解非线性方程组使用fsolve函数可以求解非线性方程组,它可以将一个或多个非线性方程组等效于可用函数语法的单一函数。
示例如下:x0 = [0,0];[x,fval] = fsolve(@(x)[x(1)^2+x(2)^2-1, exp(x(1))-x(2)], x0)其中,x0为初始猜测,@(x)表示匿名函数,包含需要求解的方程组。
4. 解线性方程组使用linsolve函数可以求解线性方程组,它可以将系数矩阵和常数矢量作为输入,并返回解向量。
示例如下:A = [1 2 3; 4 5 6; 7 8 0];B = [3; 6; 9];X = linsolve(A,B)其中,A为系数矩阵,B为常数矢量。
5. 解常微分方程使用ode45函数(一种常用的MATLAB求解常微分方程框架函数)来求解常微分方程。
该函数需要一个匿名函数作为输入,该函数返回微分方程的右侧。
matlab 双曲线型偏微分方程
matlab 双曲线型偏微分方程引言:双曲线型偏微分方程是数学中的重要分支之一,它在物理学、工程学以及其他领域中具有广泛的应用。
本文将详细介绍双曲线型偏微分方程的定义、特点以及求解方法,并通过具体的例子来说明其应用。
正文:一、双曲线型偏微分方程的定义和特点1.1 定义双曲线型偏微分方程是指具有双曲线型的主部的偏微分方程。
一般形式为:a(x, y)u_xx + 2b(x, y)u_xy + c(x, y)u_yy + d(x, y)u_x + e(x, y)u_y + f(x, y)u = g(x, y)其中,a(x, y),b(x, y),c(x, y),d(x, y),e(x, y),f(x, y),g(x, y)为已知函数,u 为未知函数。
1.2 特点双曲线型偏微分方程的特点主要有以下几点:(1)方程中的主部具有双曲线型,即主部的二次型矩阵的特征值为实数且不全为零。
(2)方程中的混合导数项存在,即存在2b(x, y)u_xy这样的项。
(3)方程中的系数函数可能是非线性的,这使得求解过程更加复杂。
(4)方程的解通常需要满足一定的边界条件或初始条件。
二、双曲线型偏微分方程的求解方法2.1 分离变量法分离变量法是解双曲线型偏微分方程的常用方法之一。
其基本思想是将未知函数u表示为两个变量x和y的乘积形式,然后将方程分解为两个关于x和y的常微分方程,再求解这些常微分方程得到u的解。
2.2 特征线法特征线法是解双曲线型偏微分方程的另一种常用方法。
该方法的关键是通过寻找方程的特征线,将原方程转化为关于特征变量的常微分方程,然后求解这些常微分方程得到u的解。
2.3 变量替换法变量替换法是解双曲线型偏微分方程的另一种有效方法。
通过适当的变量替换,可以将原方程转化为更简单的形式,然后再进行求解。
三、双曲线型偏微分方程的应用举例3.1 波动方程波动方程是双曲线型偏微分方程的典型例子。
它描述了波动现象的传播规律,广泛应用于声学、光学、电磁学等领域。
MATlab求解方程方法
MATlab求解方程方法1、解方程最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法:(1)x=inv(A)*b —采用求逆运算解方程组;(2)x=A—采用左除运算解方程组。
例:x1+2x2=82x1+3x2=13>>A=[1,2;2,3];b=[8;13];>>x=inv(A)*bx =2.003.00>>x=Ax =2.003.00;即二元一次方程组的解x1和x2分别是2和3。
对于同学问到的用matlab解多次的方程组,有符号解法,方法是:先解出符号解,然后用vpa(F,n)求出n 位有效数字的数值解.具体步骤如下:第一步:定义变量syms x y z ...;第二步:求解[x,y,z,...]=solve('eqn1','eqn2',...,'eqnN','var1','var2',...'varN');第三步:求出n位有效数字的数值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);...。
如:解二(多)元二(高)次方程组:x^2+3*y+1=0y^2+4*x+1=0解法如下:>>syms x y;>>[x,y]=solve('x^2+3*y+1=0','y^2+4*x+1=0');>>x=vpa(x,4);>>y=vpa(y,4);结果是:x =1.635+3.029*i1.635-3.029*i-.283-2.987y =1.834-3.301*i1.834+3.301*i-.3600-3.307。
二元二次方程组,共4个实数根;还有的同学问,如何用matlab解高次方程组(非符号方程组)?举个例子好吗?解答如下:基本方法是:solve(s1,s2,…,sn,v1,v2,…,vn),即求表达式s1,s2,…,sn组成的方程组,求解变量分别v1,v2,…,vn。
【免费下载】MATLAB 1 5三角函数和双曲函数
ei(ix) -e-i(ix)
e-x -ex
(1.3.2) tanix= i[ei(ix) +e-i(ix) ] =-i e-x +ex
i tanh x ,tanhx = -itanix.
plot(x,tanh(x),x,-i*tan(i*x),'r.')
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资配,料置不试技仅卷术可要是以求指解,机决对组吊电在顶气进层设行配备继置进电不行保规空护范载高与中带资负料荷试下卷高总问中体题资配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况卷中下安,与全要过,加度并强工且看作尽护下可关都能于可地管以缩路正小高常故中工障资作高料;中试对资卷于料连继试接电卷管保破口护坏处进范理行围高整,中核或资对者料定对试值某卷,些弯审异扁核常度与高固校中定对资盒图料位纸试置,.卷编保工写护况复层进杂防行设腐自备跨动与接处装地理置线,高弯尤中曲其资半要料径避试标免卷高错调等误试,高方要中案求资,技料编术试5写交卷、重底保电要。护气设管装设备线置备4高敷动调、中设作试电资技,高气料术并中课3试中且资件、卷包拒料中管试含绝试调路验线动卷试敷方槽作技设案、,术技以管来术及架避系等免统多不启项必动方要方式高案,中;为资对解料整决试套高卷启中突动语然过文停程电机中气。高课因中件此资中,料管电试壁力卷薄高电、中气接资设口料备不试进严卷行等保调问护试题装工,置作合调并理试且利技进用术行管,过线要关敷求运设电行技力高术保中。护资线装料缆置试敷做卷设到技原准术则确指:灵导在活。分。对线对于盒于调处差试,动过当保程不护中同装高电置中压高资回中料路资试交料卷叉试技时卷术,调问应试题采技,用术作金是为属指调隔发试板电人进机员行一,隔变需开压要处器在理组事;在前同发掌一生握线内图槽部纸内故资,障料强时、电,设回需备路要制须进造同行厂时外家切部出断电具习源高题高中电中资源资料,料试线试卷缆卷试敷切验设除报完从告毕而与,采相要用关进高技行中术检资资查料料和试,检卷并测主且处要了理保解。护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
双曲方程基于matlab的数值解法
双曲型方程基于MATLAB 的数值解法(数学1201,陈晓云,41262022)一:一阶双曲型微分方程的初边值问题 精确解为 0,01,0 1.(,0)cos(),0 1.(0,)(1,)cos(),0 1.u u x t t x u x x x u t u t t t ππ∂∂-=≤≤≤≤∂∂=≤≤=-=≤≤()t x cos +π二:数值解法思想和步骤2.1:网格剖分为了用差分方法求解上述问题,将求解区域作剖分。
将空间区间作等分,将时间{}(,)|01,01x t x t Ω=≤≤≤≤[0,1]m 区间作等分,并记[0,1]n 。
分别称和为空间和时1/,1/,,0,,0j k h m n x jh j m t k k n ττ===≤≤=≤≤h τ间步长。
用两簇平行直线将分割成矩形,0,,0j k x x j m t t k n =≤≤=≤≤Ω网格。
2.2:差分格式的建立 0u u t x ∂∂-=∂∂2.2.1:Lax-Friedrichs 方法对时间、空间采用中心差分使得2h11111)(21u u x uu u u u tuk j k j k j k j k j k j -+-++-=+=-=∂∂∂∂ττ则由上式得到Lax-Friedrichs 格式111111()202k k k k k j j j j j u u u u u h τ+-+-+-+-+=截断误差为()[]k k k j h j j R u L u Lu =-111111()22k k k k k k k j j j j j j j u u u u u u u h t x τ+-+-+-+-∂∂=+-+∂∂232223(),(0,0)26k k j j u u h O h j m k n t x ττ∂∂=-=+≤≤≤≤∂∂所以Lax-Friedrichs 格式的截断误差的阶式2()O h τ+令:则可得差分格式为/s h τ=111111(),(0,0)222k k k k k j j j j j s s u u u u u j m k n +--++=-+++≤≤≤≤0cos()(0)j j u x j m π=≤≤0cos(),cos(),(0)k k k m k u t u t k n ππ==-≤≤其传播因子为: 化简可得:()()()e e G h i h i s h i h i σσσστσ---=-+e e 221, ()()()()()h s G h is h G στσσστσsin 11,sin cos ,222--=-=所以当时,,格式稳定。
双曲型方程数值解法的研究及应用
双曲型方程数值解法的研究及应用双曲型方程是数学中常见的一种偏微分方程。
由于双曲型方程的特殊性质,其数值解法研究具有重要的理论和应用价值。
本文将介绍双曲型方程的数值解法研究现状和应用领域。
一、双曲型方程的定义和特点双曲型方程是偏微分方程中的一种,其特点是解在时间-空间坐标系中以波动形式传播。
具体来说,双曲型方程的一般形式可表示为:$$\frac{\partial^2u}{\partial t^2}=a\frac{\partial^2u}{\partial x^2}+b\frac{\partial u}{\partial x}+cu$$其中,$a,b,c$均为常数,$u=u(x,t)$是待求函数。
这样的方程多见于物理学中的波动现象,并具有许多重要的应用。
二、双曲型方程的数值解法研究现状为了解决双曲型方程的数值解,目前已经发展出了多种数值方法。
以下是几种常见的数值解法:1. 有限差分法有限差分法是一种基本数值解法,其基本思想是将求解域离散化为网格点,将偏微分方程离散化后利用差分公式逼近偏微分方程的导数。
通过对相邻网格点的函数值进行差分,得到一个代数方程组,从而求得数值解。
2. 有限元法有限元法是一种广泛使用的数值解法,其基本思想是将求解域划分为有限个小单元,用一些简单的函数逼近偏微分方程中的未知函数。
在每个小单元内,将未知函数表示为一些已知形式的函数的线性组合。
通过求解线性代数方程组,得到数值解。
3. 谱方法谱方法是一种基于傅里叶分析的数值解法,其基本思想是将函数用一组基函数进行展开,然后通过截取具有最大傅里叶系数的项的方式来逼近原方程。
该方法具有很高的精度和速度。
三、双曲型方程数值解法的应用领域双曲型方程在许多领域中都有广泛的应用,特别是在物理学、工程学、计算机科学等领域中。
以下是几个具体的应用领域:1. 地质物理探测地质物理探测是利用物理方法和手段,研究地球深部结构和物质性质的一项技术。
在进行地质物理探测时,通常需要模拟地震波的传播。
matlab双曲余弦复杂函数
标题:探究深度:Matlab 中的双曲余弦复杂函数在 Matlab 中,双曲余弦函数是一种复杂的数学函数,它在工程和科学领域中被广泛应用。
双曲余弦函数可以用于解决多种问题,在信号处理、图像处理、控制系统等方面都有重要作用。
本文将深入探讨Matlab 中的双曲余弦复杂函数,从基本概念到实际应用,帮助读者更全面地理解这一主题。
1. 基本概念让我们回顾一下双曲余弦函数的基本定义。
在 Matlab 中,双曲余弦函数被表示为cosh(z),其中z为复数。
双曲余弦函数与普通余弦函数有所不同,它是指数函数的线性组合,具有一些独特的性质。
在Matlab 中,双曲余弦函数的计算需要使用专门的函数或指令,我们可以通过实际例子来演示其计算方法。
2. 理论分析接下来,让我们对双曲余弦函数进行理论分析。
双曲余弦函数与复平面上的曲线有着密切的关系,我们可以通过图形展示来直观理解其特点。
另外,我们还可以探讨双曲余弦函数的导数和积分,以及它在复平面上的特殊性质。
这些理论分析将有助于我们更深入地理解双曲余弦函数的数学本质。
3. 应用实例除了理论分析,双曲余弦函数在实际应用中也具有重要意义。
在信号处理中,双曲余弦函数可以用于频域滤波和数据降噪;在图像处理中,它可以处理边缘检测和特征提取;在控制系统中,双曲余弦函数可以用于模型建立和系统分析。
通过具体的实例分析,我们可以更直观地了解双曲余弦函数在不同领域中的应用,进而理解其作用和意义。
4. 个人观点和总结就我个人而言,双曲余弦函数是一种非常有用的数学工具,它在我的工程领域中发挥了重要作用。
我认为,通过对双曲余弦函数的深入学习和实践应用,我们可以更好地理解和掌握这一数学工具,从而更好地解决实际问题。
双曲余弦函数在Matlab 中的应用具有深度和广度,希望本文的讨论能为读者带来启发和帮助。
在本文中,我们深入探讨了 Matlab 中的双曲余弦复杂函数。
从基本概念到理论分析,再到应用实例,我们希望读者能够全面、深入地了解这一主题。
双曲方程基于matlab的数值解法
双曲型方程基于MATLAB 的数值解法(数学1201,陈晓云,41262022)一:一阶双曲型微分方程的初边值问题0,01,0 1.(,0)cos(),0 1.(0,)(1,)cos(),0 1.u u x t t xu x x x u t u t t t ππ∂∂-=≤≤≤≤∂∂=≤≤=-=≤≤ 精确解为 ()t x cos +π二:数值解法思想和步骤 2.1:网格剖分为了用差分方法求解上述问题,将求解区域{}(,)|01,01x t x t Ω=≤≤≤≤作剖分。
将空间区间[0,1]作m 等分,将时间[0,1]区间作n 等分,并记1/,1/,,0,,0j k h m n x jh j m t k k n ττ===≤≤=≤≤。
分别称h 和τ为空间和时间步长。
用两簇平行直线,0,,0j k x x j m t t k n =≤≤=≤≤将Ω分割成矩形网格。
2.2:差分格式的建立0u ut x∂∂-=∂∂ 2.2.1:Lax-Friedrichs 方法对时间、空间采用中心差分使得2h11111)(21u u xu u u u u tukj kj kj k j kjk j-+-++-=+=-=∂∂∂∂ττ则由上式得到Lax-Friedrichs 格式111111()202k k k k k j j j j j u u u u u hτ+-+-+-+-+=截断误差为()[]k k kj h j j R u L u Lu =-111111()22k k k k k k k j j j j j j ju u u u u u u h t xτ+-+-+-+-∂∂=+-+∂∂232223(),(0,0)26kkjj u u h O h j m k n t xττ∂∂=-=+≤≤≤≤∂∂ 所以Lax-Friedrichs 格式的截断误差的阶式2()O h τ+ 令/s h τ=:则可得差分格式为111111(),(0,0)222k k k kk j j j j j s s u u u u u j m k n +--++=-+++≤≤≤≤ 0cos()(0)j j u x j m π=≤≤0cos(),cos(),(0)k kk m k u t u t k n ππ==-≤≤其传播因子为: ()()()e e Gh i h i s h i h i σσσστσ---=-+e e 221, 化简可得:()()()()()hs G h is h G στσσστσsin 11,sin cos ,222--=-= 所以当1s ≤时,()1,≤τσG ,格式稳定。
数理方程基于matlab的数值解法
数理方程数值解法与其在matlab软件上的实现张体强1026222 廖荣发1026226[摘要]数学物理方程的数值解在实际生活中越来越使用,首先基于偏微分数值解的思想上,通过matlab软件的功能,研究其数学物理方程的数值解,并通过对精确解和数值解进行对比,追究其数值解的可行性,在此,给出相关例子和程序代码,利于以后的再次研究和直接使用。
[关键字]偏微分方程数值解matlab 数学物理方程的可视化一:研究意义在我们解数学物理方程,理论上求数学物理方程的定解有着多种解法,但是有许多定解问题却不能严格求解,只能用数值方法求出满足实际需要的近似解。
而且实际问题往往很复杂,这时即便要解出精确解就很困难,有时甚至不可能,另一方面,在建立数学模型时,我们已作了很多近似,所以求出的精确解也知识推导出的数学问题的精确解,并非真正实际问题的精确解。
因此,我们有必要研究近似解法,只要使所求得的近似解与精确解之间的误差在规定的范围内,则仍能满足实际的需要,有限差分法和有限元法是两种最常用的求解数学物理方程的数值解法,而MATLAB 在这一方面具有超强的数学功能,可以用来求其解。
二:数值解法思想和步骤2.1:网格剖分为了用差分方法求解上述问题,将求解区域{}(,)|01,01x t x t Ω=≤≤≤≤作剖分。
将空间区间[0,1]作m 等分,将时间[0,1]区间作n 等分,并记1/,1/,,0,,0j k h m n x jh j m t k k n ττ===≤≤=≤≤。
分别称h 和τ为空间和时间步长。
用两簇平行直线,0,,0j k x x j m t t k n =≤≤=≤≤将Ω分割成矩形网格。
2.2:差分格式的建立0u u t x∂∂-=∂∂………………………………(1) 设G 是,x t 平面任一有界域,据Green 公式(参考数学物理方程第五章):()()Gu udxdt udt udx t xΓ∂∂-=--∂∂⎰⎰ 其中G Γ=∂。
MATLAB_简介_7__数值法求解微分方程及微分方程组
1 练习Matlab解微分方程 2 用Matlab解微分方程组
y''' cos y sin y'ey'' t2 y(0) 3, y'(0) 7, y''(0) 13
3 利用MatlabM文件形式用四阶Runge-Kutta 法计算以上初值问题的解
追求人生的美好!
我们的共同目标!
hold on
subplot(2,2,1) plot(x1,num_y1,x1,anl_y1,'o') title('ODE23 solution'), ylabel('y') subplot(2,2,2) plot(x1,error_1) % 注意二种方法的误差 title('ODE23 error'), ylabel('y') % ode23 的误
% m-file, odes1.m ; % Solve an ode using ode23 and ode45
clg [x1,num_y1]=ode23('g1',2,4,0.5); anl_y1=x1.^3-7.5; error_1=abs(anl_y1-num_y1)./abs(anl_y1); %
的量级为 1.e-6
hold off
高阶常微分方程式
一个高阶常微分方程式可以利用变数改变 (change of variables) 方式改写成一组联立的一 阶常微分方程式。 例如以下的 n 阶方程式
以下即是解二阶 ODE 的解法: u_prime(1) = u(1)*(1-u(2)^2) - u(2); u_prime(2) = u(1); u(1)’=y’’=y’*(1-y^2)-y; y’=u(1); function u_prime =eqns2(x,u) u_prime =[ u(1)*(1-u(2)^2) - u(2); u(1)]; initial = [0 0.25]; [x,num_y] = ode23('eqns2',0,20,initial); subplot(2,1,1), plot(x,num_y(:,1)) title('1st derivative of y'), xlabel('x'), grid subplot(2,1,2), plot(x,num_y(:,2)) title('y'), xlabel('x'), grid
matlab求解方程的几种方法
牛顿切线法的MATLAB 主程序function[k,xk,yk,piancha,xdpiancha]=newtonqx(x0,tol,ftol,gxmax)x(1)=x0;for i=1: gxmaxx(i+1)=x(i)-fun(x(i))/(dfun(x(i))+eps);piancha=abs(x(i+1)-x(i));xdpiancha= piancha/( abs(x(i+1))+eps); i=i+1;xk=x(i);yk=fun(x(i)); [(i-1) xk yk piancha xdpiancha]if (abs(yk)<ftol)&((piancha<tol)|(xdpiancha< tol))k=i-1; xk=x(i);[(i-1) xk yk piancha xdpiancha]return ;endendif i>gxmaxdisp('请注意:迭代次数超过给定的最大值gxmax 。
')k=i-1; xk=x(i);[(i-1) xk yk piancha xdpiancha]return ;end[(i-1),xk,yk,piancha,xdpiancha]';例 3 用牛顿切线法求方程013223=+-x x 在9.04.00和-=x 的近似根,要求精度310-=ε.解1)先将上面的主程序作为M 文件保存;2)再保存如下的两个M 文件:function y=fun(x)y=2*x^3-3*x^2+1;function y=dfun(x)y=6*x^2-6*x;3)最后在工作窗口输入命令>> [k,xk,yk,piancha,xdpiancha]=newtonqx(-0.4,0.001, 0.001,100) 运行后输出初始值4.00-=x 和9.00=x 的迭代结果分别为:k =3,xk =-0.5000,yk =-7.7025e-007,piancha =3.5825e-004,xdpiancha =7.1650e-004 k =7,xk =0.9993,yk =1.5903e-006,piancha =7.2896e-004,xdpiancha =7.2949e-0041 高斯消元法及其MATLAB 程序f unction [RA,RB,n,X]=gaus(A,b)B=[A b]; n=length(b); RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB ,所以此方程组无解.')returnendif RA==RBif RA==ndisp('请注意:因为RA=RB=n ,所以此方程组有唯一解.')X=zeros(n,1); C=zeros(1,n+1);for p= 1:n-1for k=p+1:nm= B(k,p)/ B(p,p);B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);endendb=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n); for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q); endelsedisp('请注意:因为RA=RB<n ,所以此方程组有无穷多解.') endend例1 用高斯消元法和MATLAB 程序求解下面的非齐次线性方程组。
matlab 椭圆双曲轨迹
matlab 椭圆双曲轨迹摘要:I.引言A.介绍MATLABB.介绍椭圆双曲轨迹II.MATLAB 基本操作A.MATLAB 的安装与配置B.MATLAB 的基本语法与命令C.MATLAB 的绘图功能III.椭圆双曲轨迹的数学模型A.椭圆轨迹1.椭圆的定义与性质2.椭圆的参数方程B.双曲轨迹1.双曲线的定义与性质2.双曲线的参数方程IV.椭圆双曲轨迹的MATLAB 实现A.利用MATLAB 绘制椭圆轨迹1.调用MATLAB 内置函数2.自定义参数方程B.利用MATLAB 绘制双曲轨迹1.调用MATLAB 内置函数2.自定义参数方程V.结论A.总结椭圆双曲轨迹的MATLAB 实现过程B.展望MATLAB 在数学建模中的应用正文:I.引言MATLAB 是一款功能强大的数学软件,广泛应用于科学计算、数据分析、可视化等领域。
在MATLAB 中,我们可以通过编程实现各种数学模型,其中包括椭圆双曲轨迹。
椭圆双曲轨迹是数学中的一个重要概念,它在许多领域都有广泛的应用,如物理学、工程学等。
本篇文章将介绍如何利用MATLAB 实现椭圆双曲轨迹的绘制。
II.MATLAB 基本操作MATLAB 的安装与配置:首先,我们需要下载并安装MATLAB 软件。
安装过程中需要配置好计算机的路径与环境变量。
MATLAB 的基本语法与命令:MATLAB 的语法主要包括命令行输入和脚本文件输入。
命令行输入是指在MATLAB 命令窗口直接输入命令,而脚本文件输入是指将MATLAB 命令编写成文本文件,然后通过MATLAB 执行该文件。
MATLAB 的绘图功能:MATLAB 提供了丰富的绘图功能,可以通过plot、scatter、surf 等函数绘制二维、三维图形。
III.椭圆双曲轨迹的数学模型椭圆轨迹:椭圆是平面内到两个固定点F1、F2 的距离之和为常数的点的集合。
椭圆的参数方程为x = a * cos(t), y = b * sin(t),其中a、b 分别为椭圆的长半轴和短半轴,t 为参数。
基于matlab的数字信号调制与解调
一matlab常用函数1、特殊变量与常数ans 计算结果的变量名computer 确定运行的计算机eps 浮点相对精度Inf 无穷大I 虚数单位inputname 输入参数名NaN 非数nargin 输入参数个数nargout 输出参数的数目pi 圆周率nargoutchk 有效的输出参数数目realmax 最大正浮点数realmin 最小正浮点数varargin 实际输入的参量varargout 实际返回的参量操作符与特殊字符+ 加- 减* 矩阵乘法 .* 数组乘(对应元素相乘)^ 矩阵幂 .^ 数组幂(各个元素求幂)\ 左除或反斜杠/ 右除或斜面杠 ./ 数组除(对应元素除)kron Kronecker张量积: 冒号() 圆括[] 方括 . 小数点 .. 父目录 ... 继续, 逗号(分割多条命令); 分号(禁止结果显示)% 注释! 感叹号' 转置或引用= 赋值== 相等<> 不等于& 逻辑与| 逻辑或~ 逻辑非xor 逻辑异或2、基本数学函数abs 绝对值和复数模长acos,acodh 反余弦,反双曲余弦acot,acoth 反余切,反双曲余切acsc,acsch 反余割,反双曲余割angle 相角asec,asech 反正割,反双曲正割secant 正切asin,asinh 反正弦,反双曲正弦atan,atanh 反正切,双曲正切tangent 正切atan2 四象限反正切ceil 向着无穷大舍入complex 建立一个复数conj 复数配对cos,cosh 余弦,双曲余弦csc,csch 余切,双曲余切cot,coth 余切,双曲余切exp 指数fix 朝0方向取整floor 朝负无穷取整*** 最大公因数imag 复数值的虚部lcm 最小公倍数log 自然对数log2 以2为底的对数log10 常用对数mod 有符号的求余nchoosek 二项式系数和全部组合数real 复数的实部rem 相除后求余round 取整为最近的整数sec,sech 正割,双曲正割sign 符号数sin,sinh 正弦,双曲正弦sqrt 平方根tan,tanh 正切,双曲正切3、基本矩阵和矩阵操作blkding 从输入参量建立块对角矩阵eye 单位矩阵linespace 产生线性间隔的向量logspace 产生对数间隔的向量numel 元素个数ones 产生全为1的数组rand 均匀颁随机数和数组randn 正态分布随机数和数组zeros 建立一个全0矩阵colon) 等间隔向量cat 连接数组diag 对角矩阵和矩阵对角线fliplr 从左自右翻转矩阵flipud 从上到下翻转矩阵repmat 复制一个数组reshape 改造矩阵roy90 矩阵翻转90度tril 矩阵的下三角triu 矩阵的上三角dot 向量点集cross 向量叉集ismember 检测一个集合的元素intersect 向量的交集setxor 向量异或集setdiff 向是的差集union 向量的并集数值分析和傅立叶变换cumprod 累积cumsum 累加cumtrapz 累计梯形法计算数值微分factor 质因子inpolygon 删除多边形区域内的点max 最大值mean 数组的均值mediam 中值min 最小值perms 所有可能的转换polyarea 多边形区域primes 生成质数列表prod 数组元素的乘积rectint 矩形交集区域sort 按升序排列矩阵元素sortrows 按升序排列行std 标准偏差sum 求和trapz 梯形数值积分var 方差del2 离散拉普拉斯diff 差值和微分估计gradient 数值梯度cov 协方差矩阵corrcoef 相关系数conv2 二维卷积conv 卷积和多项式乘法filter IIR或FIR滤波器deconv 反卷积和多项式除法filter2 二维数字滤波器cplxpair 将复数值分类为共轭对fft 一维的快速傅立叶变换fft2 二维快速傅立叶变换fftshift 将FFT的DC分量移到频谱中心ifft 一维快速反傅立叶变换ifft2 二维傅立叶反变换ifftn 多维快速傅立叶变换ifftshift 反FFT偏移nextpow2 最靠近的2的幂次unwrap 校正相位角多项式与插值conv 卷积和多项式乘法roots 多项式的根poly 具有设定根的多项式polyder 多项式微分polyeig 多项式的特征根polyfit 多项式拟合polyint 解析多项式积分polyval 多项式求值polyvalm 矩阵变量多项式求值residue 部分分式展开interp1 一维插值interp2 二维插值interp3 三维插值interpft 使用FFT的一维插值interpn 多维插值meshgrid 为3维点生成x和y的网格ndgrid 生成多维函数和插值的数组pchip 分段3次Hermite插值多项式ppval 分段多项式的值spline 3次样条数据插值绘图函数bar 竖直条图barh 水平条图hist 直方图histc 直方图计数hold 保持当前图形loglog x,y对数坐标图pie 饼状图plot 绘二维图polar 极坐标图semilogy y轴对数坐标图semilogx x轴对数坐标subplot 绘制子图bar3 数值3D竖条图bar3h 水平3D条形图comet3 3D 慧星图cylinder 圆柱体fill3 填充的3D多边形plot3 3维空间绘图quiver3 3D震动(速度)图slice 体积薄片图sphere球stem3 绘制离散表面数据wate***ll 绘制瀑布trisurf三角表面clabel 增加轮廓标签到等高线图中datetick 数据格式标记grid 加网格线gtext 用鼠标将文本放在2D图中legend 图注plotyy 左右边都绘Y轴title 标题xlabel X轴标签ylabel Y轴标签zlabel Z轴标签contour 等高线图contourc 等高线计算contourf 填充的等高线图hidden 网格线消影meshc 连接网格/等高线mesh 具有参考轴的3D网格peaks 具有两个变量的采样函数surf 3D阴影表面图su***ce 建立表面低层对象surfc 海浪和等高线的结合surfl 具有光照的3D阴影表面trimesh 三角网格图二Matlab常用指令1、通用信息查询(General information)demo 演示程序help 在线帮助指令helpbrowser 超文本文档帮助信息helpdesk 超文本文档帮助信息helpwin 打开在线帮助窗info MATLAB 和MathWorks 公司的信息subscribe MATLAB 用户注册ver MATLAB 和TOOLBOX 的版本信息version MATLAB 版本whatsnew 显示版本新特征2、工作空间管理(Managing the workspace)clear 从内存中清除变量和函数exit 关闭MATLAB load 从磁盘中调入数据变量pack 合并工作内存中的碎块quit 退出MATLAB save 把内存变量存入磁盘who 列出工作内存中的变量名whos 列出工作内存中的变量细节workspace 工作内存浏览器3 、管理指令和函数(Managing commands and functions)edit 矩阵编辑器edit 打开M 文件inmem 查看内存中的P 码文件mex 创建MEX 文件open 打开文件pcode 生成P 码文件type 显示文件内容what 列出当前目录上的M、MAT、MEX 文件which 确定指定函数和文件的位置4 、搜索路径的管理(Managing the seach patli)addpath 添加搜索路径rmpath 从搜索路径中删除目录path 控制MATLAB 的搜索路径pathtool 修改搜索路径5、指令窗控制(Controlling the command window)beep 产生beep 声echo 显示命令文件指令的切换开关diary 储存MATLAB 指令窗操作内容format 设置数据输出格式more 命令窗口分页输出的控制开关6、操作系统指令(Operating system commands)cd 改变当前工作目录computer 计算机类型copyfile 文件拷贝delete 删除文件dir 列出的文件dos 执行dos 指令并返还结果getenv 给出环境值ispc MATLAB 为PC(Windows)版本则为真isunix MATLAB 为Unix 版本则为真mkdir 创建目录pwd 改变当前工作目录unix 执行unix 指令并返还结果vms 执行vms dcl 指令并返还结果web 打开web 浏览器! 执行外部应用程序三Matlab运算符和特殊算符1、算术运算符(Arithmetic operators)+ 加- 减* 矩阵乘 .* 数组乘^ 矩阵乘方 .^ 数组乘方\ 反斜杠或左除/ 斜杠或右除 ./或.\ 数组除张量积[注]本表第三栏括号中的字符供在线救助时help 指令引述用2、关系运算符(Relational operators)= = 等号~= 不等号< 小于> 大于<= 小于或等于>= 大于或等于3、逻辑操作(Logical operators)& 逻辑与| 逻辑或~ 逻辑非xor 异或any 有非零元则为真all 所有元素均非零则为真4、特殊算符(Special characters):冒号( ) 圆括号[ ] 方括号{ } 花括号@ 创建函数句柄 . 小数点 . 构架域的关节点 .. 父目录? 续行号, 逗号; 分号% 注释号! 调用操作系统命令= 赋值符号ˊ引号ˊ复数转置号 .ˊ转置号[,] 水平串接[;] 垂直串接( ),{ },. 下标赋值( ),{ },. 下标标识subsindex 下标标识四Matlab编程语言结构控制语句(Control flow)break 终止最内循环case 同switch 一起使用catch 同try 一起使用continue 将控制转交给外层的for 或while 循环else 同if 一起使用elseif 同if 一起使用end 结束for,while,if 语句for 按规定次数重复执行语句if 条件执行语句otherwise 可同switch 一起使用return 返回switch 多个条件分支try try-cathch 结构while 不确定次数重复执行语句2、计算运行(Evaluation and execution)assignin 跨空间赋值builtin 执行内建的函数eval 字符串宏指令evalc 执行MATLAB 字符串evalin 跨空间计算串表达式的值feval 函数宏指令run 执行脚本文件3、脚本文件、函数及变量(Scripts,function,and variables)exist 检查变量或函数是否被定义function 函数文件头global 定义全局变量isglobal 若是全局变量则为真iskeyword 若是关键字则为真mfilename 正在执行的M 文件的名字persistent 定义永久变量script MATLAB 命令文件4、宗量处理(Augument handling)inputname 实际调用变量名nargchk 输入变量个数检查nargin 函数输入宗量的个数nargout 函数输出宗量的个数nargoutchk 输出变量个数检查varagin 输入宗量varagout 输出宗量5、信息显示(Message display)disp 显示矩阵和文字内容display 显示矩阵和文字内容的重载函数error 显示错误信息fprintf 把格式化数据写到文件或屏幕lasterr 最后一个错误信息lastwarn 最后一个警告信息sprintf 按格式把数字转换为串warning 显示警告信息6 、交互式输入(Interactive input) input 提示键盘输入keyboard 激活键盘做为命令文件pause 暂停uicontrol 创建用户界面控制uimenu 创建用户界面菜单五Matlab基本矩阵函数和操作1、基本矩阵(Elementary matrices)eye 单位阵linspace 线性等分向量logspace 对数等分向量meshgrid用于三维曲面的分格线坐标ones 全1 矩阵rand 均匀分布随机阵randn 正态分布随机阵repmat 铺放模块数组zeros 全零矩阵: 矩阵的援引和重排2、矩阵基本信息(Basic array information)disp 显示矩阵和文字内容isempty 若是空矩阵则为真isequal 若对应元素相等则为1 islogical 尤其是逻辑数则为真isnumeric 若是数值则为真length 确定向量的长度logical 将数值转化为逻辑值ndims 数组A的维数size 确定矩阵的维数3、矩阵操作(Matrix manipulateion)blkdiag 块对角阵串接diag 创建对角阵,抽取对角向量end 数组的长度,即最大下标find 找出非零元素1 的下标fliplr 矩阵的左右翻转flipud 矩阵的上下翻转flipdim 交换对称位置上的元素ind2sub 据单下标换算出全下标reshape 矩阵变维rot90 矩阵逆时针90°旋转sub2idn 据全下标换算出单下标tril 抽取下三角阵triu 抽取上三角阵4、特殊变量和常数(Special variables and constants)ans 最新表达式的运算结果eps 浮点相对误差i,j 虚数单位inf 或Inf 无穷大isfinite 若是有限数则为真isinf 若是无穷大则为真isnan 若为非数则为真NaN 或nan 非数pi 3.1415926535897?. realmax 最大浮点数realmin 最小正浮点数why 一般问题的简明答案5、特殊矩阵(Specialized matrices)compan 伴随矩阵gallery 一些小测试矩阵hadamard Hadamard 矩阵hankel Hankel 矩阵hilb Hilbert 矩阵invhilb 逆Hilbert 矩阵magic 魔方阵pascal Pascal 矩阵rosser 典型对称特征值实验问题toeplitz Toeplitz 矩阵vander Vandermonde 矩阵wilkinson Wilkinson's 对称特征值实验矩阵六Matlab基本数学函数1、三角函数(Trigonometric)acos 反余弦acosh 反双曲余弦acot 反余切acoth 反双曲余切acsc 反余割acsch 反双曲余割asec 反正割asech 反双曲正割asin 反正弦asinh 反双曲正弦atan 反正切atanh 反双曲正切atan2 四象限反正切cos 余弦cosh 双曲余弦cot 余切coth 双曲余切csc 余割csch 双曲余割sec 正割sech 双曲正割sin 正弦sinh 双曲正弦tan 正切tanh 双曲正切2、指数函数(Exponential)exp 指数log 自然对数log10 常用对数log2 以2 为底的对数nestpow2 最近邻的2 的幂pow2 2 的幂sqrt 平方根3、复数函数(Complex)abs 绝对值angle 相角complex 将实部和虚部构成复数conj 复数共轭cplxpair 复数阵成共轭对形式排列imag 复数虚部isreal 若是实数矩阵则为真real 复数实部unwrap 相位角360°线调整4、圆整和求余函数(Rounding and remainder)ceil 朝正无穷大方向取整fix 朝零方向取整floor 朝负无穷大方向取整mod 模数求余rem 求余数round 四舍五入取整sign 符号函数 6 特殊函数(Specialized math functions) cart2pol 直角坐标变为柱(或极)坐标cart2sph 直角坐标变为球坐标cross 向量叉积dot 向量内积isprime 若是质数则为真pol2cart 柱(或极)坐标变为直角坐标sph2cart 球坐标变为直角坐标七Matlab矩阵函数和数值线性代数1、矩阵分析(Matrix analysis)det 行列式的值norm 矩阵或向量范数normest 估计2 范数null 零空间orth 值空间rank 秩rref 转换为行阶梯形trace迹subspace 子空间的角度2、线性方程(Linear equations)chol Cholesky 分解cholinc 不完全Cholesky 分解cond 矩阵条件数condest 估计1-范数条件数inv 矩阵的逆lu LU 分解luinc 不完全LU 分解lscov 已知协方差的最小二乘积nnls 非负二乘解pinv 伪逆qr QR 分解rcond LINPACK 逆条件数\、/ 解线性方程3、特性值与奇异值(Eigenvalues and singular values)condeig 矩阵各特征值的条件数eig 矩阵特征值和特征向量eigs 多个特征值gsvd 归一化奇异值分解hess Hessenberg 矩阵poly 特征多项式polyeig 多项式特征值问题qz 广义特征值schur Schur 分解svd 奇异值分解svds 多个奇异值4、矩阵函数(Matrix functions)expm 矩阵指数expm1 矩阵指数的Pade 逼近expm2 用泰勒级数求矩阵指数expm3 通过特征值和特征向量求矩阵指数funm 计算一般矩阵函数logm 矩阵对数sqrtm 矩阵平方根5、因式分解(Factorization utility)cdf2rdf 复数对角型转换到实块对角型balance 改善特征值精度的平衡刻度rsf2csf 实块对角型转换到复数对角型八数据分析和傅里叶变换1、基本运算(Basic operations)cumprod 元素累计积cumsum 元素累计和cumtrapz 累计积分hist 统计频数直方图histc 直方图统计max 最大值mean 平均值median 中值min 最小值prod 元素积sort 由小到大排序sortrows 由小到大按行排序std 标准差sum 元素和trapz 梯形数值积分var 求方差2、有限差分(Finite differentces)del2 五点离散Laplacian diff 差分和近似微分gradient 梯度3、相关(Correlation)corrcoef 相关系数cov 协方差矩阵subspace 子空间之间的角度4、滤波和卷积(Filtering and convoluteion)conv 卷积和多项式相乘conv2 二维卷积convn N 维卷积detrend 去除线性分量deconv 解卷和多项式相除filter 一维数字滤波器fliter2 二维数字滤波器5、傅里叶变换(Fourier transforms)fft 快速离散傅里叶变换fft2 二维离散傅里叶变换fftn N 维离散傅里叶变换fftshift 重排fft 和fft2 的输出ifft 离散傅里叶反变换ifft2 二维离散傅城叶反变换ifftn N 维离散傅里叶反变换ifftshift 反fftshift九音频支持1、音频硬件驱动(Audio hardware drivers)sound 播放向量soundsc 自动标刻并播放waveplay 利用系统音频输出设配播放waverecor 利用系统音频输入设配录音2、音频文件输入输出(Audio file import and export)auread 读取音频文件(.au) auwrite 创建音频文件(.au) wavread 读取音频文件(.wav) wavwrite 创建音频文件(.wav)3、工具(Utilities)lin2mu 将线性信号转换为μ 一律编码的信号mu2lin 将μ 一律编码信号转换为线性信号十插补多项式函数1、数据插补(Data Interpolation)griddata 分格点数据griddata3 三维分格点数据griddatan 多维分格点数据interpft 利用FFT 方法一维插补interp1 一维插补interp1q 快速一维插补interp2 二维插补interp3 三维插补intern N 维插补pchip hermite 插补2 、样条插补(Spline Interpolation)ppval 计算分段多项式spline 三次样条插补3 、多项式(Polynomials)conv 多项式相乘deconv 多项式相除poly 由根创建多项式polyder多项式微分polyfit 多项式拟合polyint 积分多项式分析polyval 求多项式的值polyvalm 求矩阵多项式的值residue 求部分分式表达roots 求多项式的根十一数值泛函函数和ODE 解算器1、优化和寻根(Optimization and root finding)fminbnd 非线性函数在某区间中极小值fminsearch 单纯形法求多元函数极值点指令fzero 单变量函数的零点2、优化选项处理(Optimization Option handling)optimget 从OPTIONS 构架中取得优化参数optimset 创建或修改OPTIONS 构架3、数值积分(Numerical intergration)dblquad 二重(闭型)数值积分指令quad 低阶法数值积分quadl 高阶法数值积分4、绘图(Plotting)ezcontour 画等位线ezcontourf 画填色等位线ezmesh 绘制网格图ezmeshc 绘制含等高线的网格图ezplot 绘制曲线ezplot3 绘制3 维曲线ezpolar 采用极坐标绘图ezsurf 画曲面图ezsurfc 画带等位线的曲面图fplot 画函数曲线图5、内联函数对象(Inline function object)argnames 给出函数的输入宗量char 创建字符传输组或者将其他类型变量转化为字符串数组formula 函数公式inline 创建内联函数6、差微分函数解算器(Differential equation solvers)ode113 变阶法解方程ode15s 变阶法解刚性方程ode23 低阶法解微分方程ode23s 低阶法解刚性微分方程ode23t 解适度刚性微分方程odet23tb 低阶法解刚性微分方程ode45 高阶法解微分方程十二二维图形函数1、基本平面图形(Elementary X-Y graphs)loglog 双对数刻度曲线plot 直角坐标下线性刻度曲线plotyy 双纵坐标图polar 极坐标曲线图semilogx X 轴半对数刻度曲线semilogy Y 轴半对数刻度曲线2 、轴控制(Axis control)axes 创建轴axis 轴的刻度和表现box 坐标形式在封闭式和开启词式之间切换grid 画坐标网格线hold 图形的保持subplot 创建子图zoom 二维图形的变焦放大3、图形注释(Graph annotation)gtext 用鼠标在图上标注文字legend 图例说明plotedit 图形编辑工具text 在图上标注文字texlabel 将字符串转换为Tex 格式title 图形标题xlabel X 轴名标注ylabel Y 轴名标注4、硬拷贝(Hardcopy and printing)orient 设置走纸方向print 打印图形或把图存入文件printopt 打印机设置十三三维图形函数1、基本三维图形(Elementary 3-D plots) fill3 三维曲面多边形填色mesh 三维网线图plot3 三维直角坐标曲线图surf 三维表面图2 、色彩控制(Color control)alpha 透明色控制brighten 控制色彩的明暗caxis (伪)颜色轴刻度colordef 用色风格colormap 设置色图graymon 设置缺省图形窗口为单色显示屏hidden 消隐shading 图形渲染模式whitebg 设置图形窗口为白底3、光照模式(Lighting)diffuse 漫反射表面系数light 灯光控制lighting 设置照明模式material 使用预定义反射模式specular 漫反射surfnorm 表面图的法线surfl 带光照的三维表面图4 、色图(Color maps)autumn 红、黄浓淡色bone 蓝色调灰度图colorcube 三浓淡多彩交错色cool 青和品红浓淡色图copper 线性变化纯铜色调图flag 红-白-蓝黑交错色图gray 线性灰度hot 黑-红-黄-白交错色图hsv 饱和色彩图jet 变异HSV 色图lines 采用plot 绘线色pink 淡粉红色图prism 光谱色图spring 青、黄浓淡色summer 绿、黄浓淡色vga 16 色white 全白色winter 蓝、绿浓淡色5、轴的控制(Axis control)axes 创建轴axis 轴的刻度和表现box 坐标形式在封闭式和开启式之间切换daspect 轴的DataAspectRatio 属性grid 画坐标网格线hold 图形的保持pbaspect 画坐标框的PlotBoxAspectRatio 属性subplot 创建子图xlim X 轴范围ylim Y 轴范围zlim Z 轴范围zoom 二维图形的变焦放大6、视角控制(Viewpoint control)rotate3d 旋动三维图形view 设定3-D 图形观测点viewmtx 观测点转换矩阵7、图形注释(Graph annotation)colorbar 显示色条gtext 用鼠标在图上标注文字plotedit 图形编辑工具text 在图上标注文字title 图形标题xlabel X 轴名标注ylabel Y 轴名标注zlabel Z 轴名标注8 、硬拷贝(Hardcopy and printing)orient 设置走纸方向print 打印图形或把图存入文件printopt 打印机设置verml 将图形保存为VRML2.0 文件十四特殊图形1、特殊平面图形(Specialized 2-D graphs)area 面域图bar 直方图barh 水平直方图comet 彗星状轨迹图compass 从原点出发的复数向量图errorbar 误差棒棒图ezplot 画二维曲线ezpolar 画极坐标曲线feather 从X 轴出发的复数向量图fill 多边填色图fplot 函数曲线图hist 统计频数直方图pareto Pareto图pie 饼形统计图plotmatrix 散点图阵列scatter 散点图stairs 阶梯形曲线图stem 火柴杆图2 、等高线及二维半图形(Contour and 2-1/2D graphs)clabel 给等高线加标注contour 等高线图contourf 等高线图contour3 三维等高线ezcontour 画等位线ezcontourf 画填色等位线pcolor 用颜色反映数据的伪色图voronoi Voronoi 图3、特殊三维图形(Specialized 3-D graphs)bar3 三维直方图bar3h 三维水平直方图comet3 三维彗星动态轨迹线图ezgraph3 通用指令ezmesh 画网线图ezmeshc 画等位线的网线图ezplot3 画三维曲线ezsurf 画曲面图ezsurfc 画带等位线的曲面图meshc 带等高线的三维网线图meshz 带零基准面的三维网线图pie3 三维饼图ribbon 以三维形式绘制二维曲线scatter3 三维散点图stem3 三维离散杆图surfc 带等高线的三维表面图trimesh 三角剖分网线图trisurf 三角剖分曲面图waterfall 瀑布水线图4、内剖及向量视图(Volume and vector visualization)coneplot 锥体图contourslice 切片等位线图quiver 矢量场图quiver3 三维方向箭头图slice 切片图5、图像显示及文件处理(Image display and file I/O)brighten 控制色彩的明暗colorbar 色彩条状图colormap 设置色图contrast 提高图像对比度的灰色图gray 线性灰度image 显示图像imagesc 显示亮度图像imfinfo 获取图像文件的特征数据imread 从文件读取图像的数据阵(和伴随色图))imwrite 把强度图像或真彩图像写入文件6、影片和动画(Movies and animation)capture 当前图的屏捕捉frame2im 将影片动画转换为编址图像getframe 获得影片动画图像的帧im2frame 将编址图像转换为影片动画movie 播放影片动画moviein 影片动画内存初始化rotate 旋转指令7、颜色相关函数(Color related function)spinmap 颜色周期性变化操纵8、三维模型函数(Solid modeling)cylinder 圆柱面patch 创建块sphere 球面Surf2patch 将曲面数据转换为块数据十五句柄图形1、图形窗的产生和控制(Figure window creation and control)clf 清除当前图close 关闭图形figure 打开或创建图形窗口gcf 获得当前图的柄openfig 打开图形refresh 刷新图形shg 显示图形窗2、轴的产生和控制(Axis creation and control)axes 在任意位置创建轴axis 轴的控制box 坐标形式在封闭式和开启式之间切换caxis 控制色轴的刻度cla 清除当前轴gca 获得当前轴的柄hold 图形的保持ishold 若图形处保持状态则为真subplot 创建子图3、句柄图形对象(Handle Graphics objects)axex 在任意位置创建轴figure 创建图形窗口image 创建图像light 创建光line 创建线patch 创建块rectangle 创建方surface 创建面text 创建图形中文本uicontextmenu 创建现场菜单对象uicontrol 用户使用界面控制uimenu 用户使用菜单控制4、句柄图形处理(Handle Graphics operations)copyobj 拷贝图形对象及其子对象delete 删除对象及文件drawnow 屏幕刷新findobj 用规定的特性找寻对象gcbf "正执行回调操作"的图形的柄gcbo "正执行回调操作"的控件图柄指令gco 获得当前对象的柄get 获得对象特性getappdat 获得应用程序定义数据isappdata 检验是否应用程序定义数据reset 重设对象特性rmappdata 删除应用程序定义数据set 建立对象特性setappdata 建立应用程序定义数据5 、工具函数(Utilities)closereq 关闭图形窗请求函数ishandle 若是图柄代号侧为真newplot 下一个新图十六图形用户界面工具align 对齐用户控件和轴cbedit 编辑回调函数ginput 从鼠标得到图形点坐标guide 设计GUI menu 创建菜单menuedit 菜单编辑propedit 属性编辑uicontrol 创建用户界面控制uimenu 创建用户界面菜单十七字符串1 、通用字符串函数(General)blanks 空格符号cellstr 通过字符串数组构建字符串的元胞数组char 创建字符传输组或者将其他类型变量转化为字符串数组deblank 删除最后的空格double 把字符串变成ASCII 码值eval 执行串形式的MATLAB 表达式2、字符串查询(String tests)iscellstr 若是字符串组成的元胞数组则为真ischar 若是字符串则为真isletter 串中是字母则为真isspace 串中是空格则为真isstr 若是字符串则为真3、字符串操作(String operations)base2dec X-进制串转换为十进制整数bin2dec 二进制串转换为十进制整数dec2base 十进制整数转换为X 进制串dec2bin 十进制整数转换为二进制串dec2hex 十进制整数转换为16 进制串findstr 在一个串中寻找一个子串hex2dec 16-进制串转换为十进制整数hex2num 16-进制串转换为浮点数int2str 将整数转换为字符串lower 把字符串变成小写mat2str 将数组转换为字符串num2str 把数值转换为字符串strcat 把多个串连接成长串strcmp 比较字符串strcmpi 比较字符串(忽略大小写)stringsMATLAB 中的字符串strjust 字符串的对齐方式strmatch 逐行搜索串strnomp 比较字符串的前N 个字符strncmpi 比较字符串的前N 个字符(忽略大小写)strrep 用另一个串代替一个串中的子串strtok 删除串中的指定子串strvcat 创建字符串数组str2mat 将字符串转换为含有空格的数组str2num 将字符串转换为数值upper 把字符串变成大写十八文件输入/输出clc 清除指令窗口disp 显示矩阵和文字内容fprintf 把格式化数据写到文件或屏幕home 光标返回行首input 提示键盘输入load 从磁盘中调入数据变量pause 暂停sprintf 写格式数据到串sscanf 在格式控制下读串十九时间和日期clock 时钟cputme MATLAB 战用CPU 时间date 日期etime 用CLOCK 计算的时间now 当前时钟和日期pause 暂停tic 秒表启动toc 秒表终止和显示二十数据类型1、数据类型(Data types)cell 创建元胞变量char 创建字符传输组或者将其他类型变量转化为字符串数组double 转化为16 位相对精度的浮点数值对象function handle 函数句柄inline 创建内联函数JavaArray 构建Java 数组JavaMethod 调用某个Java 方法JavaObject 调用Java 对象的构造函数single 转变为单精度数值sparse 创建稀疏矩阵struct 创建构架变量uint8(unit16、unit32) 转换为8(16、32)位无符号整型数int8(nit16、nit32) 转换为8(16、32)位符号整型数2、多维数组函数(Multi-dimensional array functions)cat 把若干数组串接成高维数组ndims 数组A 的维数ndgrid 为N-D 函数和插补创建数组ipermute 广义反转置permute 广义非共轭转置shiftdim 维数转换squeeze 使数组降维3、元胞数组函数(Cell array functions)cell 创建元胞变量celldisp 显示元胞数组内容cellfun 元胞数组函数cellplot 图示元胞数组的内容cell2struct 把元胞数组转换为构架数组deal 把输入分配给输出is cell 若是元胞则为真num2 cell 把数值数组转换为元胞数组struct2 cell 把构架数组转换为元胞数组4、构架函数(Structure functions)fieldnames 获取构架的域名getfield 获取域的内容isfield 若为给定构架的域名则为真isstruct 若是构架则为真rmfield 删除构架的域setfield 指定构架域的内容struct 创建构架变量5、函数句柄函数(Function handle functions)@ 创建函数句柄functions 列举函数句柄对应的函数func2str 将函数句柄数组转换为字符串str2func 将字符串转换为函数句柄6、面向对象编程(Object oriented programming functions)dlass 查明变量的类型isa 若是指定的数据类型则为真inferiorto 级别较低isjava 若是java 对象则为真isobject 若是对象则为真methods 显示类的方法名substruct 创建构架总量superiorto 级别较高二一示例demo 演示程序flow 无限大水体中水下射流速度数据intro 幻灯演示指令peaks 产生peaks 图形数据二二符号工具包1、微积分(Calculus)diff 求导数limit 求极限int 计算积分jacobian Jacobian 矩阵symsum 符号序列的求和trylor Trylor 级数2、线性代数(Linear Algebra)det 行列式的值diag 创建对角阵,抽取对角向量eig 矩阵特征值和特征向量expm 矩阵指数inv 矩阵的逆jordan Jordan 分解null 零空间poly 特征多项式rank 秩rref 转换为行阶梯形svd 奇异值分解tril 抽取下三角阵triu 抽取上三角阵3、化简(Simplification)collect 合并同类项expand 对指定项展开factor 进行因式或因子分解horner 转换成嵌套形式numden 提取公因式simple 运用各种指令化简符号表达式simplify 恒等式简化subexpr 运用符号变量置换子表达式subs 通用置换指令4、方程求解(Solution of Equation)compose 求复函数dsolve 求解符号常微分方程finverse 求反函数fminunc 拟牛顿法求多元函数极值点fsolve 解非线性方程组lsqnonlin 解非线性最小二乘问题solve 求解方程组5、变量精度(Variable Precision Arithmetic)digits 设置今后数值计算以n 位相对精度进行vpa 给出数值型符号结果6、积分变换(Integral Transforms)fourier Fourier 变换ifourier Fourier 反变换ilaplace Ilaplace 反变换iztrans Z 反变换laplace Ilaplace 变换ztrans Z 变换7、转换(Conversions)char 把符号对象转化为字符串数组double 把符号常数转化为16 位相对精度的浮点数值对象poly2sym 将多项式转换为符号多项式sym2poly 将符号多项式转换为系数向量8、基本操作(Basic Operation)ccode 符号表达式的C 码表达式findsym 确认表达式中符号"变量" fortran 符号表达式的fortran 表达式latex 符号表达式的LaTex 表示pretty 习惯方式显示sym 定义基本符号对象syms 定义基本符号对象9、串处理函数(String handling utilities)isvarname 检查是否为有效的变量名vectorize 将字符串表达式或内联函数对象向量化10 、图形应用(Pedagogical and Graphical Applications)ezcontour 画等位线ezcontourf 画填色等位线ezmesh 画网线图ezmeshc 带等位线的网线图ezplot 绘制符号表达式的图形ezplot2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
双曲型方程基于MATLAB 的数值解法(数学1201,陈晓云,41262022)一:一阶双曲型微分方程的初边值问题 精确解为 0,01,0 1.(,0)cos(),0 1.(0,)(1,)cos(),0 1.u u x t t x u x x x u t u t t t ππ∂∂-=≤≤≤≤∂∂=≤≤=-=≤≤()t x cos +π二:数值解法思想和步骤2.1:网格剖分为了用差分方法求解上述问题,将求解区域作剖分。
将空间区间作等分,将时间{}(,)|01,01x t x t Ω=≤≤≤≤[0,1]m 区间作等分,并记[0,1]n 。
分别称和为空间和时1/,1/,,0,,0j k h m n x jh j m t k k n ττ===≤≤=≤≤h τ间步长。
用两簇平行直线将分割成矩形,0,,0j k x x j m t t k n =≤≤=≤≤Ω网格。
2.2:差分格式的建立 0u u t x ∂∂-=∂∂2.2.1:Lax-Friedrichs 方法对时间、空间采用中心差分使得2h11111)(21u u x uu u u u tuk j k j k j k j k j k j -+-++-=+=-=∂∂∂∂ττ则由上式得到Lax-Friedrichs 格式111111()202k k k k k j j j j j u u u u u h τ+-+-+-+-+=截断误差为()[]k k k j h j j R u L u Lu =-111111()22k k k k k k k j j j j j j j u u u u u u u h t x τ+-+-+-+-∂∂=+-+∂∂232223(),(0,0)26k k j j u u h O h j m k n t x ττ∂∂=-=+≤≤≤≤∂∂所以Lax-Friedrichs 格式的截断误差的阶式2()O h τ+令:则可得差分格式为/s h τ=111111(),(0,0)222k k k k k j j j j j s s u u u u u j m k n +--++=-+++≤≤≤≤0cos()(0)j j u x j m π=≤≤0cos(),cos(),(0)k k k m k u t u t k n ππ==-≤≤其传播因子为: 化简可得:()()()e e G h i h i s h i h i σσσστσ---=-+e e 221, ()()()()()h s G h is h G στσσστσsin 11,sin cos ,222--=-=所以当时,,格式稳定。
1s ≤()1,≤τσG * 2.2.2:LaxWendroff 方法用牛顿二次插值公式可以得到LaxWendroff 的差分格式,在此不详细分析,它的截断误差为,是二阶精度;当时,()h 22+O τ2s ≤,格式稳定。
在这里主要用它与上面一阶精度的Lax-()1,≤τσG Friedrichs 方法进行简单对比。
2.3差分格式的求解因为时格式稳定,不妨取 ,则s=0.91s ≤1/90h 1/100==τ差分格式111111(),(0,0)222k k k k k j j j j j s s u u u u u j m k n +--++=-+++≤≤≤≤写成如下矩阵形式:10111212111100000222211000002222110000002222000000000000000k k k k k k m m k m k m s s u u s s u u u u s s u u +++---⎛⎫-+ ⎪⎛⎫⎛⎫ ⎪ ⎪ ⎪ ⎪-+ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪-+ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭ ⎪ ⎪⎝⎭ 则需要通过对k 时间层进行矩阵作用求出k+1时间层。
对上面的矩阵形式通过matlab 编出如附录的程序求出数值解、真实解和误差。
2.5 算法以及结果 function [P U E x t]=PDEHyperbolic(uX,uT,M,N,C,type)format long %一阶双曲型方程的差分格式 %[P U E x t]=PDEHyperbolic(uX,uT,M,N,C,phi,psi1,psi2,type) %方程:u_t+C*u_x=0 0 <= t <= uT, 0 <= x <= uX %初值条件:u(x,0)=phi(x)%输出参数:U -解矩阵% x -横坐标% t -纵坐标,时间 % 输入参数:uX -变量x 的上界% uT -变量t 的上界% M -变量x 的等分区间数% N -变量t 的等分区间数% C -系数% phi -初值条件函数,定义为内联函数% psi1,psi2 -边值条件函数,定义为内联函数 % type -差分格式,从下列值中选取% -type='LaxFriedrichs',采用Lax-Friedrichs差分格式求解% -type='LaxWendroff',采用Lax-Wendroff差分格式求解h=uX/M;%变量x的步长k=uT/N;%变量t的步长r=k/h;%步长比x=(0:M)*h; t=(0:N)*k;U=zeros(M+1,N+1);%初值条件for i=1:M+1U(i,1)=cos(pi*x(i));P(i,1)=cos(pi*x(i));E(i,1)=0;end%边值条件for j=1:N+1U(1,j)=cos(pi*t(j));E(1,j)=0;P(1,j)=cos(pi*t(j));U(M+1,j)=-cos(pi*t(j));P(M+1,j)=-cos(pi*t(j));E(M+1,j)=0;endswitch typecase'LaxFriedrichs'if abs(C*r)>1disp('|C*r|>1,Lax-Friedrichs差分格式不稳定!')end%逐层求解for j=1:Nfor i=2:MU(i,j+1)=(U(i+1,j)+U(i-1,j))/2-C*r*(U(i+1,j)-U(i-1,j))/2;P(i,j+1)=cos(pi*(x(i)+t(j+1)));E(i,j+1)=abs(U(i,j+1)-cos(pi*(x(i)+t(j+1))));endend%Lax-Wendroff差分格式case'LaxWendroff'if abs(C*r)>1disp('|C*r|>1,Lax-Wendroff差分格式不稳定!')end%逐层求解for j=1:Nfor i=2:MU(i,j+1)=U(i,j)-C*r*(U(i+1,j)-U(i-1,j))/2+C^2*r^2*(U(i+1,j)-2*U(i,j)+U(i-1,j))/2;P(i,j+1)=cos(pi*(x(i)+t(j+1)));E(i,j+1)=abs(U(i,j+1)-cos(pi*(x(i)+t(j+1))));endendotherwisedisp('差分格式类型输入有误!')return;endU=U';P=P';E=E';%作出图形精确解mesh(x,t,P);title('一阶双曲型方程的精确解图像');xlabel('空间变量x'); ylabel('时间变量t'); zlabel('一阶双曲型方程的解P')%作出图形数值解mesh(x,t,U);title([type '格式求解一阶双曲型方程的解的图像']);xlabel('空间变量 x'); ylabel('时间变量 t'); zlabel('一阶双曲型方程的解 U')return;命令窗口输入:>>uX=1;uT=1;M=90;N=100;C=-1;phi=inline('cos(pi*x)');psi1=inline('cos(pi*t)');psi2=inline('-cos(pi*t)');type='LaxFriedrichs'或type='LaxWendroff';>>[P U E x t]=PDEHyperbolic(uX,uT,M,N,C,type)从matlab的数值解法结果中抽出一部分数据进行比较表1LaxFriedrichs格式j k(x,t)数值解真实解误差4611(0.5,0.1)-0.308981-0.3090170.000036 4621(0.5,0.2)-0.587647-0.5877850.000138 4631(0.5,0.3)-0.808731-0.8090170.000286 4641(0.5,0.4)-0.950609-0.9510560.000448 4651(0.5,0.5)-0.999409-1.0000000.000591 4661(0.5,0.6)-0.950496-0.9510570.000560 4671(0.5,0.7)-0.808539-0.8090170.000478 4681(0.5,0.8)-0.587437-0.5877850.000348 4691(0.5,0.9)-0.308833-0.3090170.000184 46101(0.5,1.0)-0.000002-0.0000000.000002表2LaxWendroff 格式备注:本来,但是由于matlab 中下标必须从大于0开始,100k 090j 0≤≤≤≤,所以在程序中101k 191j 1≤≤≤≤,图像分析:jk (x,t )数值解真实解误差4611(0.5,0.1)-0.309005-0.3090170.0000124621(0.5,0.2)-0.587765-0.5877850.0000204631(0.5,0.3)-0.808995-0.8090170.0000224641(0.5,0.4)-0.951040-0.9510560.0000164651(0.5,0.5)-0.999999-1.0000000.0000014661(0.5,0.6)-0.951074-0.9510570.0000174671(0.5,0.7)-0.809051-0.8090170.0000344681(0.5,0.8)-0.587833-0.5877850.0000484691(0.5,0.9)-0.309074-0.3090170.00005746101(0.5,1.0)-0.000006-0.0000000.000006结果分析:从表1和表2可以看出LaxFriedrichs格式和LaxWendroff格式的真值得误差都比较小,而LaxWendroff格式虽然精度比LaxFriedrichs 的精度高,但是在网格点划分比较细的情况下,二者的差别不大。