MATLAB高级应用

发布 2021-04-26 15:06:28 阅读 1191

求解微分方程(组)的matlab命令。

1)常微分方程的符号解。其格式如下。

r=dsolve(‘eq1,eq2,…’cond1,cond2,…’v’)

说明:①该命令对给定的常微分方程(组)eq1,eq2,…中指定的符号自变量v,与给定的边界条件和初始条件cond1,cond2,…求符号解(即解析解)r;②若没有指定变量v,则缺省变量为t;在微分方程(组)的表达式eq中,大写字母d表示对自变量(设为x)的微分算子:dy=dy/dx,d2y=d2y/dx2,…微分算子d后面的字母则表示为因变量,即待求解的未知函数;③初始和边界条件由字符串表示:

y(a)=b,dy(c)=d,d2y(e)=f,等等,分别表示,,;若边界条件少于方程(组)的阶数,则返回的结果r中会出现任意常数c1,c2,…若该命令找不到解析解,则返回一警告信息,同时返回一空的sym对象,这时,用户可以用命令ode23或ode45求解方程组的数值解。

2)常微分方程的数值解法。

因为没有一种算法可以有效地解决所有的ode问题,为此,matlab提供了多种求解命令,对于不同的ode问题,采用不同的命令,具体如表3-5所示。

表3-5 不同求解命令的特点。

调用表3-5中的命令的一般格式为。

t,x]=solver(‘fun’,ts,,x0,options)

其中:solver是表3-5中的某个命令;t为自变量,x为函数值;fun为待解方程写成的m文件;ts=[t0,tf]为自变量的初值与终值;x0为函数初值;options用于设定误差限,命令为options=odeset(‘reltol’,rt,’abstol’,at),rt,at分别为设定的相对误差与绝对误差。

求解具体ode的基本过程如下。

根据问题所属学科中的规律、定律、公式,用微分方程与初始条件进行描述。

运用数学中的变量替换:,把高阶(大于2阶)的方程(组)写成一阶微分方程组。

根据①与②的结果,编写能计算导数的m函数文件odefile。

将文件odefile与初始条件传递给求解器solver中的一个,运行后就可得到ode在指定时间区间上的解列向量y(其中包含y及其不同阶的导数)。

矩阵运算的matlab命令。

在1.4节中介绍了矩阵的输入与一些基本操作,矩阵的函数运算命令参见表1.14。矩阵分解的函数命令见表4-1。

表4-1 矩阵分解的函数命令表。

线性方程组有解的判定与解的结构。

1)线性方程组有解的充分必要条件是它的系数矩阵的秩等于增广矩阵的秩,即。

2)齐次线性方程组有非零解的充分必要条件是。

3)对于方程组,若,那么该方程组的基础解系含有个解向量。

4) 若是基础解系,则该方程组的通解为。

其中为任意常数。

5) 若是非齐次线性方程组一个特解,是其导出组的一个基础解系,则的通解为。

其中为任意常数。

3. 解方程的matlab命令与程序。

1)对于方程组,可调用函数null用来求解出解空间的一组基,其调用格式如下。

z = null(a ) z的列向量为方程组的正交规范基,满足。

z = null(a,’r’ )z的列向量是方程ax=0的基向量。

2)对于线性方程组ax=b,

当rank(a)=rank([a,b])=n时,调用x=a\b或x=pinv(a)*b;

当rank(a)=rank([a,b])<n时, 调用a\b求出方程组的一个特解,用null(a,'r')求出该方程组所对应的齐次方程组的基础解系。

当rank(a)<rank([a,b])时,方程组无解,即没有x使得ax=b。应用向量范数理论即没有x,使得成||ax-b||2=0。由此可以想到,是否有x,使得||ax-b||2 取最小值,这个最小值问题是有解的,其解为x=a\b或x=pinv(a)*b,即a的伪逆矩阵与b的乘积。

3)根据(1)与(2),可设计求解线性方程组ax=b的函数文件如下:

function [x,y]=linesolution(a,b)

m,n]=size(a);y=[

if norm(b)>0非齐次方程组。

if rank(a)==rank([a,b方程组相容。

if rank(a)==m有唯一解。

x=a\b;

else方程组有无穷多个解,给出基础解系。

disp('原方程组有无穷多个解,其齐次方程组的基础解系为y,特解为x');

y=null(a,'r');

x=a\b;

endelse方程组不相容,给出最小二乘法解。

disp('方程组的最小二乘法解是:')

x=a\b;

endelse齐次方程组。

if rank(a)>=n列满秩。

x=zero(m,1零解。

elsedisp('方程组有无穷多个解,基础解系为x');

x=null(a,'r');

endend

return

将上面的文件保存在当前目录下,以备实验调用。

统计工具箱与常见命令介绍。

为了便于研究概率与统计的计算问题,matlab提供了专门的统计工具箱(statistics toolbox),其概率计算的主要功能有:计算相应分布的概率、累积概率、逆累积概率和产生相应分布的随机数。工具箱的统计计算的主要功能有:

统计量的数字特征、统计图形绘制、参数估计、假设检验、方差分析等。

在运用统计工具箱的命令时,可注意到命令函数的命名规律,一般来说,其名称构成是分布名字符后缀命令名字符,如:normpdf是分布名字符norm后缀命令名字符pdf,表示正态分布的概率密度函数;normcdf是分布名字符norm后缀命令名字符cdf,表示正态分布的分布函数。同样,normstat表示正态分布的均值与方差,norminv表示正态分布的逆累积概率。

常见分布的名称字符见表5-1。

表5-1 几种常见分布的名称字符表。

在统计工具箱中,每一种分布提供了五类命令函数,其命令字符分别为:pdf表示概率密度;cdf表示累积概率(或称概率分布函数);inv表示累积概率函数的逆函数;stat表示均值与方差;rnd表示生成相应分布的随机数。这样,当需要一种分布的某一类命令函数时,只要将表5-1中的分布名字符后缀命令函数字符并输入命令参数即可。

例如表5-2给出了常见分布的概率密度的命令调用形式,表5-3给出了常见分布的均值与方差的命令调用形式。

表5-2 常见分布的概率密度的命令调用。

除了表5-2给出的分布的概率密度外,还可以调用超几何分布(hygepdf)、伽马分布(gampdf)、贝塔分布(betapdf)、f分布(fpdf)、对数正态分布(lognpdf)、瑞利分布(raylpdf)、威布尔分布(weibpdf)等分布的概率密度,这些命令的调用形式请参考matlab的**帮助。

表5-3 常见分布的均值与方差命令(m为期望,v为方差)

设x服从自由度分别为的分布,绘出不同自由度下分布的概率密度函数图形,分别求出分布的分位数,求自由度为15 的分布的均值与方差。

第8章MATLAB高级应用

8.1 matlab应用接口。8.1.1 mex文件。mex文件具有以下几个方面的应用 1 对于已存在的c或fortran子程序,可以通过mex文件在matlab环境中直接调用,而不必重新编写m文件。2 由于matlab是解释性语言,运行如for等循环体时,会出现速度十分缓慢的现象,为了能提高速度,...

Matlab应用练习

matlab及应用 上机作业。作业一。1.矩阵的相乘与截取 作业1 1 a 1 2 3 4 2 3 5 7 1 3 5 7 3 2 3 9 1 8 9 4 b 1 4 i 4 3 6 7 7 2 3 3 5 5 4 2 i 2 6 7 i 5 3 4 2 1 8 9 5 4 3 c a bd c 4...

MATLAB的工程应用

第一章简介 o 1.1 计算机应用与工程问题 o 1.2 工程问题的解决方式 o 1.3 认识你 你的电脑工作环境 第二章 matlab 简介 o 2.1 什么是matlab o 2.2 基本功能 2.2.1 matlab 的视窗环境 2.2.2 简易数学 2.2.3 变数 2.2.4 其它功能 o...