Matlab8数值积分及数值微分
Matlab用法简介

量对应元素的运算
x.*y=[x1*y1 x2*y2 x3*y3] (乘积) x./y=[x1/y1 x2/y2 x3/y3] (右除,右 边的y做分母) x.\y=[y1/x1 y2/x2 y3/x3] (左除,左 边的x做分母) x.^5=[x1^5 x2^5 x3^5] (乘幂) 2.^x=[2^x1 2^x2 2^x3] x.^y=[x1^y1 x2^y2 x3^y3]
左除“ \ ”:
求矩阵方程AX=B的解;( A 、B的行要保持一致) 解为 X=A\B; 当A为方阵且可逆时有X=A\B=inv(A)*B;
右除“ / ”:
求矩阵方程XA=B的解 (A 、B的列要保持一致) 解为 X=B/A , 当A为方阵且可逆时有X=B/A=B*inv(A)
矩阵的运算(左除和右除)
1. meshgrid指令:生成网格点
观察meshgrid指令的效果。 程序:
a=-3;b=3;c=-3;d=3;n=10; x=linspace(a,b,n); y=linspace(c,d,n); [X,Y]=meshgrid(x,y); plot(X,Y,'+')
观察结果
2. 计算函数值
3. 绘图指令
两个坐标系,用于绘制不同尺度的函数。
绘制平面曲线(线型、点形和颜色的控制)
plot(x,y,‘颜色+线型+点形’) plot(x,y,‘颜色+线型+点形’,x,y,‘颜 色+线型+点形’,… ) 句柄图形和 set 命令改变属性值,可套 用:
h=plot(x,y), set(h,‘属性’,属性值,‘属性’,属性值,…) 或plot(x,y,'属性','属性值')设置图形对象 的属性。
第二讲道客巴巴MATLAB的数值计算

例 在区间[20,50]内均匀分布的5阶随机 矩阵。
命令如下:
x=20+(50-20)*rand(5) 此外,常用的函数还有reshape(A,m,n), 它在矩阵总元素保持不变的前提下,将 矩阵A重新排成m×n的二维矩阵。
也可用linspace函数产生行向量。其调用 格式为: linspace(a, b, n) 其中a和b是生成向量的第一个和最后一 个元素,n是元素总数。 例 》a=linspace(1 , 10 , 10)
当一个指令或矩阵太长时,可用••• 续行
冒号的作用 用于生成等间隔的向量,默认 间隔为1。 用于选出矩阵指定行、列及元 素。 循环语句
2.用matlab函数创建矩阵
空阵 [ ] — matlab允许输入空阵,当一 项操作无结果时,返回空阵。 rand —— 随机矩阵 eye —— 单位矩阵 zeros ——全部元素都为0的矩阵 ones ——全部元素都为1的矩阵 diag ——产生对角矩阵
a=[1,2,3;4,5,6;7,8,9];a^2 ans =30 36 42
66 81 96 102 126 150
※当一个方阵有复数特征值或负实 特征值时,非整数幂是复数阵。
a^0.5
ans =
0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0.2717i
3.conv多项式乘运算(向量卷积)
例:a(x)=x2+2x+3; b(x)=4x2+5x+6; c = (x2+2x+3)(4x2+5x+6) a=[1 2 3];b=[4 5 6]; c=conv(a,b)或c=conv([1 2 3],[4 5 6]) c = 4.00 13.00 28.00 27.00 18.00 p=poly2str(c,‘x’) 其中x表示自变量 p = 4 x^4 + 13 x^3 + 28 x^2 + 27 x + 18
数学建模实验二:微分方程模型Matlab求解与分析

实验二: 微分方程模型Matlab 求解与分析一、实验目的[1] 掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析; [2] 熟悉MATLAB 软件关于微分方程求解的各种命令;[3] 通过范例学习建立微分方程方面的数学模型以及求解全过程; [4] 熟悉离散 Logistic 模型的求解与混沌的产生过程。
二、实验原理1. 微分方程模型与MATLAB 求解解析解用MATLAB 命令dsolve(‘eqn1’,’eqn2’, ...) 求常微分方程(组)的解析解。
其中‘eqni'表示第i 个微分方程,Dny 表示y 的n 阶导数,默认的自变量为t 。
(1) 微分方程 例1 求解一阶微分方程 21y dxdy+= (1) 求通解 输入:dsolve('Dy=1+y^2')输出:ans =tan(t+C1)(2)求特解 输入:dsolve('Dy=1+y^2','y(0)=1','x')指定初值为1,自变量为x 输出:ans =tan(x+1/4*pi)例2 求解二阶微分方程 221()04(/2)2(/2)2/x y xy x y y y πππ'''++-=='=-原方程两边都除以2x ,得211(1)04y y y x x'''++-= 输入:dsolve('D2y+(1/x)*Dy+(1-1/4/x^2)*y=0','y(pi/2)=2,Dy(pi/2)=-2/pi','x')ans =- (exp(x*i)*(pi/2)^(1/2)*i)/x^(1/2) +(exp(x*i)*exp(-x*2*i)*(pi/2)^(3/2)*2*i)/(pi*x^(1/2))试试能不用用simplify 函数化简 输入: simplify(ans)ans =2^(1/2)*pi^(1/2)/x^(1/2)*sin(x) (2)微分方程组例3 求解 d f /d x =3f +4g ; d g /d x =-4f +3g 。
如何使用MATLAB求解微分方程(组)ppt课件

差,输出参数,事件等,可缺省。 9
使用ODE?时如何编 写微分方程 ?
方式一:带额外参数,使用时需对参数进行赋值
function odefun(t,x,flag,R,L,C) %用flag说明R、L、C为变 量
xdot=zeros(2,1);
%表明其为列向量
xdot(1)=-R/L*x(1)-1/L*x(2)+1/L*f(t);
2
Where ?
工程控制
ODE
医学生理
航空航天
金融分析
3
Where ?
算法开发 数据分析
数值计算 MAT LAB
数据可视化
4
When ?
当对问题进行建模后,有常微分方程 需要求解时。
在生物建模中,经常需要求解常微分 方程。如药物动力学的房室模型的建模 仿真。
5
方法 ode23
ode45
数 ode113
当无法藉由微积分技巧求 得解析解时,这时便只能利 用数值分析的方式来求得其 数值解了。实际情况下,常 微分方程往往只能求解出其
数值解。
在数学中,刚性方程是指一 个微分方程,其数值分析的解 只有在时间间隔很小时才会稳 定,只要时间间隔略大,其解 就会不稳定。
目前很难去精确地去定义哪 些微分方程是刚性方程,但是 大体的想法是:这个方程的解
y(1)=x(2);
y1
y2
y(2)= -t*x(1)+exp(t)*x(2)+3*sin(2*t);
end
1000
求解程序ห้องสมุดไป่ตู้键步骤
[t,y]=ode45('odefun',[3.9 4.0],[2 8])
y
matlab quad函数用法

MATLAB是一种用于算法开发、数据分析、可视化和数值计算的高级技术计算语言和交互式环境。
在MATLAB中,quad函数是用于数值积分的一个非常重要的函数,被广泛应用于工程、科学和数学领域。
本文将介绍quad函数的用法,帮助读者更好地理解和使用这一函数。
一、quad函数概述quad函数是MATLAB中用于数值积分的函数,可以用于计算一元函数的定积分。
其调用格式为:\[q = \text{quad}(fun, a, b)\]其中fun为要积分的函数句柄,a和b为积分的区间,q为积分的结果。
二、quad函数的基本用法在使用quad函数时,首先需要定义要积分的函数fun,并将其作为参数传递给quad函数。
假设要计算函数f(x) = x^2在区间[0, 1]上的定积分,可以按照以下步骤进行:```matlabfun = @(x) x.^2;a = 0;b = 1;q = quad(fun, a, b);disp(q);```运行以上代码可以得到函数f(x) = x^2在区间[0, 1]上的定积分结果。
三、quad函数的高级用法除了基本的用法外,quad函数还可以处理一些复杂的积分计算情况。
可以通过设置参数选项来控制积分的精度和其他计算参数。
quad函数的调用格式为:\[q = \text{quad}(fun, a, b, \text{'Name1',Value1,...})\]其中Name1、Value1等为参数选项及其取值。
可以通过设定'AbsTol'选项来控制积分的绝对误差容限,通过设定'RelTol'选项来控制积分的相对误差容限。
具体示例代码如下:```matlabfun = @(x) x.^2;a = 0;b = 1;q = quad(fun, a, b, 'AbsTol', 1e-8, 'RelTol', 1e-6);disp(q);```通过设置AbsTol和RelTol选项,可以提高积分的精度和稳定性。
matlab_常微分方程数值解法

dt 2
简朴问题可以求得解析解,多数实际问题靠数值求解 。
第4页
一阶常微分方程(ODE )初值问题 : ODE :Ordinary Differential Equation
dy
f
(x,
y)
dx
x0 x xn
y(x0 ) y0
数值解法就是求y(x)在某些分立旳节点 xn 上旳近似值 yn,用以近似y(xn)
x0
y0
x1 f y(x), x dx
x0
x2 f y(x), x dx
x1
y(x1) f y(x1), x1 h
第17页
同样,在[x0,xn+1] ,积分采用矩形近似,得:
y(xn1) y0
f xn1
x0
y(x), x dx
y(xn ) f y(xn ), xn h
yn y(xn )
第5页
2、欧拉近似办法
2.1 简朴欧拉(L.Euler, 1707-1783)办法。
dy
dx
f
(y, x)
y(x0 ) y0
欧拉数值算法就是由初值通过递推求解,递推求解
就是从初值开始,后一种函数值由前一种函数值得到。核 心是构造递推公式。
y0 y1 y2 yn
第6页
i 1,2,...
第36页
没有一种算法可以有效地解决所有旳 ODE 问题,因此 MATLAB 提供了多种ODE函数。
函数 ODE类
特点
阐明
型
ode45
非刚性 单步法;4,5 阶 R-K 措施;合计 大部分场合旳首选措施
截断误差为 (△x)3
ode23
非刚性 单步法;2,3 阶 R-K 措施;合计 使用于精度较低旳情形
MATLAB实验报告

MATLAB实验报告姓名:专业:学号:实验一MATLAB环境的熟悉与基本运算一、实验目的:1.熟悉MATLAB开发环境2.掌握矩阵、变量、表达式的各种基本运算二、实验基本知识:1.熟悉MATLAB环境:MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器文件和搜索路径浏览器。
2.掌握MATLAB常用命令3.MATLAB变量与运算符变量命名规则如下:(1)变量名可以由英语字母、数字和下划线组成(2)变量名应以英文字母开头(3)长度不大于31个(4)区分大小写MATLAB中设置了一些特殊的变量与常量,列于下表。
MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符表2MATLAB算术运算符表3MATLAB关系运算符表4MATLAB逻辑运算符表5MATLAB特殊运算4.MATLAB的一维、二维数组的寻访表6子数组访问与赋值常用的相关指令格式5.MATLAB的基本运算表7两种运算指令形式和实质内涵的异同表6.MATLAB的常用函数表8标准数组生成函数表9数组操作函数三、实验内容1、学习安装MATLAB软件。
2、学习使用help命令,例如在命令窗口输入helpeye,然后根据帮助说明,学习使用指令eye(其它不会用的指令,依照此方法类推)3、学习使用clc、clear,观察commandwindow、commandhistory和workspace等窗口的变化结果。
4、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、exerc2、exerc3……),学习使用MATLAB的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。
注意:每一次M-file的修改后,都要存盘。
四、实验结果练习A:(1)helprand,然后随机生成一个2×6的数组,观察commandwindow、commandhistory和workspace等窗口的变化结果。
matlab解常微分方程

matlab解常微分⽅程1. ODE常微分⽅程ordinary differential equation的缩写,此种表述⽅式常见于编程,如MATLAB中Simulink求解器solver已能提供了7种微分⽅程求解⽅法:ode45(Dormand-Prince),ode23(Bogacki-Shampine),ode113(Adams),ode15s(stiff/NDF),ode23s(stiff/Mod. Rosenbrock),ode23t(mod.stiff/Trapezoidal),ode23tb(stiff/TR-BDF2)。
微分⽅程、微分⽅程组⾃标量 因变量 ⼀元 多元 函数 映射⼀元:只有⼀个因变量多元:有多个因变量导数 偏导:谁对谁的导数,因变量对⾃变量的导数,默认或缺省⾃变量为t 、x ?⼀元⽅程 多元⽅程 多元⽅程组 n个⽅程解n个未知量微分⽅程 ⼀阶 ⾼阶微分⽅程 ⼀阶微分⽅程组⼀阶常微分⽅程:Dx/dt + x = e^t⾼阶常微分⽅程:d^2x/dt^2+dx/dt+x=e^2t⼀阶微分⽅程组(多元):dy/dt+x=e^2tdx/dt+2y-x=e^t初始条件:dy/dt0=... dx/dt0=... y0=... x0=...可以解出:y=f(t)=.... x=f(t)=.... 两个⽅程解两个未知数(因变量)⼀个N阶(多元)微分⽅程可以写成(分解成)N个⼀阶微分⽅程(即微分⽅程组)如:x.. + 2x. -x = u令x.=x2; x=x1 则...微分⽅程的精确解: r=dsolve('eqn1','eqn2',...,'cond1','cond2',...,'var').数值解: [t,y]=solver('odefun',tspan,y0,options)1. 求精确解1.微分⽅程r=dsolve('eqn1','eqn2',...,'cond1','cond2',...,'var').该命令中可以⽤D表⽰微分符号,其中D2表⽰⼆阶微分,D3表⽰三阶微分,以此类推。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab8数值积分及数值微分 1 M a t l a b 数 值 积 分 与 数 值 微 分 Matlab数值积分 一重数值积分的实现方法 变步长辛普森法、高斯 -克朗罗德法、梯形积分法 变步长辛普森法 Matlab供给了quad函数和quadl函数用于实现变步长辛普森法求数值积分.调用格式为:[I,n]=Quad(@fname,a,b,tol,trace)
[I,n]=Quadl(@fname,a,b,tol,trace) Fname是函数文件名,a,b 分别为积分下限、积分上限; tol 为精度控制,默以为×10-6,trace 控制能否展
开积分过程,若为0则不睁开,非0则睁开,默认不睁开. 返回值I为积分数值;n为调用函数的次数 . --------------------------------------------------------------------- 比如:求
的值. 先成立函数文件
function f=fesin(x) f=exp(-0.5*x).*sin(x+(pi/6));
再调用quad函数Matlab8数值积分及数值微分
2 [I,n]=quad(@fesin,0,3*pi,1e-10) I=
n= 365 --------------------------------------------------------------------- 比如:分别用 quad函数和quadl 函数求积分
的近似值,比较函数调用的次数 . 先成立函数文件
function f=fesin(x) f=exp(-0.5*x).*sin(x+(pi/6)); formatlong
[I,n]=quadl(@fesin,0,3*pi,1e-10) I= n= 198 [I,n]=quad(@fesin,0,3*pi,1e-10) I= n= 365 --------------------------------------------------------------------- 能够发现quadl函数调用原函数的次数比quad少,而且比quad函数求得的数值解更精准.
高斯-克朗罗德法Matlab8数值积分及数值微分
3 Matlab 供给了自适应高斯 -克朗罗德法的 quadgk 函数来 求震荡函数的定积分,函数的调用格式为: [I,err]=quadgk(@fname,a,b) Err返回近似偏差范围,其余参数的意义与quad函数同样,积分上下限能够是-Inf或Inf,也能够是复数,若为复数则在复平面上求积分. ---------------------------------------------------------------------
比如:求积分
的数值. 先编写被积函数的 m文件
function f=fsx(x) f=x.*sin(x)./(1+cos(x).^2); 再调用quadgk 函数 I=quadgk(@fsx,0,pi) I=
--------------------------------------------------------------------- 比如:求积分
的值. 先编写被积函数的 m文件
function f=fsx(x) f=x.*sin(x)./(1+cos(x).^2); 再调用quadgk 函数 I=quadgk(@fsx,-Inf,Inf)Matlab8数值积分及数值微分
4 I= -9.0671e+017 --------------------------------------------------------------------- 梯形分法
于一些不知道函数关系的函数,只有得的一 本点和本,由表格定的函数关系求定分 用梯形分法,其函数是 trapz 函数,用格式: I=Traps(X,Y)
X,Y 等的两向量,着函数关系 Y=f(X)
X=(x 1,x 2, ⋯,x n)(x 1,
分区是 [x 1,x n]
---------------------------------------------------------------------比如:已知某次物理得以下表所示的两本点 .
x1. 1. 2. 3. 11. 13.
38 56 21 97 1 9 9 12 39 y3. 3. 5. 8. 11. 17. 24. 29, 32.
35 96 12 98 46 63 41 83 21 已知量 x和量y足必定的函数关系,但此关系 未知,y=f(x) ,求分
的数. Matlab8数值积分及数值微分
5 X=[1.38,1.56,2.21,3.97,5.51,7.79,9.19,11 .12,13.39]; Matlab8数值积分及数值微分
6 ,29.83,32.21]; I=trapz(X,Y) I=
--------------------------------------------------------------------- 比如:用梯形积分法求积分:
的数值. x=1:0.01:2.5; y=exp(-x); I=trapz(x,y) I=
---------------------------------------------------------------------2. 多重数值积分的实现 重积分的积分函数一般是二元函数 f(x,y,z) ;形如: f(x,y)
或三元函数
Matlab 中有dblquad 函数和triplequad 函数来对上述 两个积分实现.调用格式为: I=dblquad(@fun,a,b,c,d,tol)Matlab8数值积分及数值微分
7 I=triplequad(@fun,a,b,c,d,e,f,tol) Fun 为被积函数, [a,b] 为 x 的积分区间; [c,d] 为 y 的积
分区间; [e,f] 为 z 的积分区间 .
Dblquad 函数和 triplequad 函数不一样意返回调用的次数,
假如需要知道函数调用的次数,则在定义被积函数的 m文件
中增添一个计数变量,统计出被积函数被调用的次数 . --------------------------------------------------------------------- 比如:计算二重积分
的值. 先编写函数文件 function f=fxy(x,y) global k; k=k+1; f=sqrt(x.^2+y.^2); 再调用函数 dblquad globalk; k=0; I=dblquad(@fxy,-pi/2,pi/2,-pi/2,pi/2,1.0e-10) I=
k k= 37656 --------------------------------------------------------------------- 比如:求三重积分
的值. 编写函数文件 function f=fxyz1(x,y,z)Matlab8数值积分及数值微分
8 global j; j=j+1; f=4*x.*z.*exp(-z.*z.*y-x.*x); 调用triplequad 函数 edit globalj; j=0; I=triplequad(@fxyz1,0,pi,0,pi,0,1,1.0e-10) I=
j j= 1340978 --------------------------------------------------------------------- Matlab数值微分
数值微分与差商
导数的三种极限制义
上述公式中假定h>0,引进记号: 称上述 、 、 为函数在x点处以h(h>0) 为 步长的向前差分、向后差分、中心差分,当步长 h足够小 时,有:Matlab8数值积分及数值微分 9 、 、 也分被称函数在 x点以h(h>0) 步的向前差商、向后差商、中心差商 .当h足小,函 数f(x)在x点的数靠近于在点的随意一种差商,微分靠近于在点的随意一种差分. 函数数的求法 用多式或条函数 g(x) 函数f(x) 行迫近(插 或合),而后用迫近函数 g(x) 在点x的数作 f(x) 在点的数. 用f(x) 在点x的差商作其数 . 数微分的方法 Matlab 中,只有算向前差分的函数 diff ,其用格式 : DX=diff(X):算向量X的向前差分,
DX=diff(X,n):算向量X的n向前差分,比如 diff(X,2)=diff(diff(X)) DX=diff(A,n,dim):算矩A的n向前差分, dim=1( 默)按列算差分,dim=2按行算差分.