matlab微积分基本运算
- 格式:doc
- 大小:1.41 MB
- 文档页数:63
caputo分数阶微分方程求解matlab 概述及解释说明1. 引言1.1 概述在科学和工程领域中,微分方程是一种常见的数学模型,用于描述物质或现象之间的相互关系。
传统的微分方程主要基于整数阶导数进行建模和求解。
然而,许多现实中的问题不能仅用整数阶微分方程来完全描述,因此引入了分数阶微积分的概念。
Caputo分数阶微积分是世界上最早发表的一种分数阶导数定义方法之一,它在描述长尾动力学、非平衡统计物理、带记忆材料等领域具有广泛应用。
使用Caputo分数阶微积分可以更准确地对现实世界中各种复杂过程进行建模和仿真。
1.2 文章结构本文将首先介绍Caputo分数阶微积分的基本概念和定义,然后重点关注Caputo分数阶微分方程及其特性。
接下来,我们将详细探讨MATLAB在求解Caputo分数阶微分方程中所起到的关键作用,并提供实际示例以说明其应用方法和步骤。
随后,我们将选择一个具体的Caputo分数阶微分方程案例进行研究和求解,并通过结果及讨论来评估算法的效率。
最后,我们将对本文进行总结,并提出现有问题和未来工作方向的展望。
1.3 目的本文的主要目的是介绍Caputo分数阶微分方程在MATLAB中的求解方法,并通过案例研究和讨论来验证其有效性和实用性。
通过本文的阐述,读者将能够理解Caputo分数阶微积分的基本概念、MATLAB在求解Caputo分数阶微分方程中所采用的方法以及其应用领域。
此外,本文还旨在鼓励读者进一步研究该领域并探索新的解决方案。
2. Caputo分数阶微分方程概述:2.1 分数阶微积分简介分数阶微积分是传统整数阶微积分的推广,它引入了非整数阶导数和非整数阶积分的概念。
与整数阶微积分不同,分数阶导数和积分可以表现出一种记忆性的特点,使得在描述复杂自然现象、非线性动力学系统、多尺度问题等方面具有更好的适用性。
2.2 Caputo分数阶导数定义与性质Caputo导数是一种常用的描述物理过程中记忆效应的方法。
第九章微积分基础1函数的极限(符号解法)一元函数求极限函数 limit格式 limit(F,x,a) %计算符号表达式F=F(x) 当x→a时的极限值。
limit(F,a) %用命令findsym(F)确信F中的自变量,设为变量x,再计算F当x→a时的极限值。
limit(F) %用命令findsym(F)确信F中的自变量,设为变量x,再计算F当x→0时的极限值。
limit(F,x,a,'right')或limit(F,x,a,'left') %计算符号函数F的单侧极限:左极限x →a- 或右极限x→a+。
【例1】>>syms x a t h n;>>L1 = limit((cos(x)-1)/x)>>L2 = limit(1/x^2,x,0,'right')>>L3 = limit(1/x,x,0,'left')>>L4 = limit((log(x+h)-log(x))/h,h,0)>>v = [(1+a/x)^x, exp(-x)];>>L5 = limit(v,x,inf,'left')>>L6 = limit((1+2/n)^(3*n),n,inf)计算结果为:L1 =L2 =infL3 =-infL4 =1/xL5 = [ exp(a), 0] L6 = exp(6)注:在求解之前,应该先声明自变量x,再概念极限表达式fun,假设0x 为∞,那么能够用inf 直接表示。
若是需要求解左右极限问题,还需要给出左右选项。
【例2】 试别离求出tan 函数关于pi/2点处的左右极限。
>> syms t;f=tan(t);L1=limit(f,t,pi/2,'left'), L2=limit(f,t,pi/2,'right') L1 = Inf L2 = -Inf【例3】求以下极限1)312lim20+-→x x x 2)x x x t 3)21(lim +∞→解:编程如下:>>syms x t ;L1 = limit((2*x-1)/(x^2+3)) >>L2 = limit((1+2*t/x)^(3*x),x,inf)回车后可得: L1 = -1/3 L2 = exp(6*t) 多元函数求极限求多元函数的极限能够嵌套利用limit()函数,其挪用格式为:limit(limit(f,x,x0),y,y0)或limit(limit(f,y,y0),x,x0)【例4】求极限:x xy y x )sin(lim 30→→>> syms x y;f=sin(x*y)/x;limit(limit(f,x,0),y,3)ans = 3注:若是x0或y0不是确信的值,而是另一个变量的函数,如)(y g x →,那么上述的极限求取顺序不能互换。
一.数值积分的实现方法1.变步长辛普生法基于变步长辛普生法,MA TLAB给出了quad函数来求定积分。
该函数的调用格式为:[I,n]=quad('fname',a,b,tol,trace)其中fname是被积函数名。
a和b分别是定积分的下限和上限。
tol用来控制积分精度,缺省时取tol=0.001。
trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。
返回参数I即定积分值,n为被积函数的调用次数。
例8-1 求定积分。
(1) 建立被积函数文件fesin.m。
function f=fesin(x)f=exp(-0.5*x).*sin(x+pi/6);(2) 调用数值积分函数quad求定积分。
[S,n]=quad('fesin',0,3*pi)S = 0.9008n = 772.牛顿-柯特斯法基于牛顿-柯特斯法,MA TLAB给出了quad8函数来求定积分。
该函数的调用格式为:[I,n]=quad8('fname',a,b,tol,trace)其中参数的含义和quad函数相似,只是tol的缺省值取10-6。
•该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。
(1) 被积函数文件fx.m。
function f=fx(x)f=x.*sin(x)./(1+cos(x).*cos(x));(2) 调用函数quad8求定积分。
I=quad8('fx',0,pi)I = 2.4674分别用quad函数和quad8函数求定积分的近似值,并在相同的积分精度下,比较函数的调用次数。
调用函数quad求定积分:format long;fx=inline('exp(-x)');[I,n]=quad(fx,1,2.5,1e-10)I = 0.28579444254766n = 65调用函数quad8求定积分:format long;fx=inline('exp(-x)');[I,n]=quad8(fx,1,2.5,1e-10)I = 0.28579444254754n = 333.被积函数由一个表格定义在MATLAB中,对由表格形式定义的函数关系的求定积分问题用trapz(X,Y)函数。
西北农林科技大学实验报告学院名称:理学院专业年级:2013级信计1班姓名:学号:课程:数学软件实验报告日期:2014年11月1日实验三MATLAB的符号矩阵运算与符号微积分一.实验目的MATLAB 不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包Symbolic Math Toolbox。
本次实验的目的对所学的符号矩阵的创建与修改、各种符号运算进行巩固,学会使用数学软件来求极限、微分、积分,解方程和解微分方程等。
二.实验要求理解符号变量、符号表达式、符号矩阵等概念,掌握符号矩阵和符号表达式的创建,了解符号运算与数值运算的不同点,会修改已有的符号矩阵,并会符号矩阵与数值矩阵的相互转换,掌握符号矩阵矩阵的运算。
熟练掌握符号求极限、符号求微分(导数)、符号求积分(不定积分和定积分),掌握符号代数方程(组)求解、符号微分方程(组)求解,了解符号积分变换。
三.实验内容符号运算一、符号变量、符号表达式、符号矩阵等概念MATLAB符号运算工具箱处理的对象主要是符号变量与符号表达式。
要实现MATLAB的符号运算,首先要将处理的对象定义为符号变量或符号表达式,其定义格式如下:1.sym ('变量名') 或sym ('表达式')2.syms 变量名1变量名. . . 变量名n二、符号运算与数值运算的不同点数值运算:求出具体的数值,不含符号。
(如解方程,求出未知数x=1.5 ,不是未知数=ab+c)符号运算:结果用符号表示。
许多问题,只有数值解,没有符号解。
三、修改已有的符号矩阵及符号矩阵与数值矩阵的相互转换1. 修改已有的符号矩阵(1).直接修改可用↑、←键找到所要修改的矩阵,直接修改(2)指令修改用A1=sym(A,*,*,'new') 来修改。
用A1=subs(A, 'new', 'old')来修改2. 符号矩阵与数值矩阵的相互转换(1)将数值矩阵转化为符号矩阵>> A=[1/3,2.5;1/0.7,2/5]A =0.3333 2.50001.4286 0.4000>> sym(A)ans =[0.333333333333333 2.50000000000000 ][ ][1.42857142857143 0.400000000000000](2) 将符号矩阵转化为数值矩阵函数调用格式:double(a)>> a=sym ('[1,3;4,6;3,4]')a =[1 3][ ][4 6][ ][3 4]>> double(a)ans =1 34 63 4四、符号运算1.符号矩阵和符号表达式的创建(1) 符号表达式的创建>> syms x y z>> x,y,zx =xy =yz =z>> f1=x^2+2*x+1f1 =2x + 2 x + 1>> f2=exp(y)+exp(z)^2f2 =2exp(y) + exp(z)>> f3=f1+f2f3 =2 2x + 2 x + 1 + exp(y) + exp(z)(2)符号矩阵创建a.用sym()创建>> exam=sym ('[1,x;y/x,1+1/y;3+3,4*r]')exam =[ 1 x ][ ][y/x 1 + 1/y][ ][ 6 4 r ] b.普通矩阵方法>> syms a1 a2 a3 a4>> A=[a1 a2;a3 a4]A =[a1 a2][ ][a3 a4] >> A(1),A(3)ans =a1ans =a2c.用矩阵元素通式创建>> syms x y c r>> a=sin((c+(r-1)*3));>> b=exp(r+(c-1)*4);>> c=(c+(r-1)*3)*x+(r+(c-1)*4)*y;>> A=symmat(3,3,a)A =[sin(1) sin(2) sin(3)][ ][sin(4) sin(5) sin(6)][ ][sin(7) sin(8) sin(9)]2.符号微积分(1)极限返回符号对象f当x→a时的极限>> limit(f,x,a)ans =[2 2][ ][4 4]返回符号对象f当x→a时的右极限>> limit(f,x,a,'right')ans =[2 2][ ][4 4]返回符号对象f当x→a时的左极限>> limit(f,x,a,'left')ans =[2 2][ ][4 4] (2).导数求符号对象f关于默认变量的微分diff(f)ans =2 2求符号对象f关于指定变量v的微分>> v=2v =2>> diff(f,v)ans =求符号对象f关于默认变量的n次微分,n为自然数1、2、3…>> n=4n =4求符号对象f关于指定变量v的n次微分>> diff(f,n)ans =[]>> diff(f, v,n)ans =Empty array: 2-by-2-by-1-by-0(3)积分求符号对象f关于默认变量的不定积分>> int(f)ans =[2 x 2 x][ ][4 x 4 x]求符号对象f关于指定变量v的不定积分>> f=v+3f =v + 3>> int(f,v)ans =21/2 v + 3 x 求符号对象f关于默认变量的从a到b的定积分>> f=v+3f =5>> a=2,b=3a =2b =3>> int(f,a,b)ans =53.符号线性代数(1).解符号代数方程>> solve('f=a*x^2+b*x+c',x)ans =[ 2 1/2 ][ -b + (-4 a c + 4 a f + b ) ][1/2 ----------------------------- ][ a ][ ][ 2 1/2][ b + (-4 a c + 4 a f + b ) ][- 1/2 ----------------------------][ a ](2).解微分方程>> dsolve('Dy=1+y^2')ans =tan(t + _C1)四、实验总结通过本次试验,我了解到MATLAB 不仅具有数值运算功能,还开发了在matlab 环境下实现符号计算的工具包Symbolic Math Toolbox。
第三章 微积分的数学实验3.1极限与一元微积分3.1.1 初等运算1.定义单个或多个符号变量:syms x y z t ;定义单个符号变量或者符号函数还可以用单引号定义,如x=’x ’,f=’sin(x^2)+2*x-1’。
符号表达式的反函数运算g=finverse(f),g 是返回函数f 的反函数。
例1 求sin(1)y x =-的反函数>>syms x>>y=sin(x-1); g=finverse(y),结果为 g=1+asin(t)2. f actor(f) 因式分解函数f3.Collect(f) 对函数f 合并同类项4. expand(f) 将函数f 表达式展开5. simple(f) 找出表达式的最简短形式(有时需要用2次)6. roots (p )对多项式p 求根函数。
7. solve(F) 一般方程的求根函数例2 解方程2510x x +-=解 >>syms x>>solve(x^2+5*x-1)结果为x =[ -5/2+1/2*29^(1/2) -5/2-1/2*29^(1/2)]8.fzero(f,x0)或fzero(f,[a,b]) 在初始点x0处开始或在区间[a,b]上搜索函数的零点,f(a)与f(b)需要符号相反。
3.1.2 Matlab计算函数的极限函数形式:1)limit(F,x,a),求函数F在 x ->a时的极限。
2)limit(F,a),默认其中的变量为极限变量.3)limit (F),默认其中的变量为极限变量且趋向于0.4)limit(F,x,a,'right')或limit(F,x,a,’left') 求函数F在x->a时的右、左极限.例3 >>syms x a t h; %syms作用是申明x,a,t,h是符号变量,不需先赋值再调用。
>>limit(sin(x)/x) %结果为 1>>limit((x-2)/(x^2-4),2) %结果为 1/4>>limit((1+2*t/x)^(3*x),x,inf) %结果为 exp(6*t)>>limit(1/x,x,0,'right') %结果为 inf>>limit(1/x,x,0,'left') %结果为 -inf>>limit((sin(x+h)-sin(x))/h,h,0) %结果为 cos(x)>>v = [(1 + a/x)^x, exp(-x)];limit(v,x,inf,'left') %结果为[exp(a),0]3.1.3 Matlab计算导数与微分1.一元导数和微分diff函数用以计算函数的微分和导数,相关的函数语法有下列4个:diff(f) 返回f对预设独立变量的一次导数值diff(f,'t')或diff(f,t) 返回f对独立变量t的一次导数(值)diff(f,n) 返回f对预设独立变量的n阶导数(值)diff(f,'t',n) 或diff(f,t,n)返回f对独立变量t的n阶导数(值)这里尽管自变量已经作为符号变量,可以不用syms说明,但是在具体执行diff(f)、diff(f,'t')和diff(f,t)会出现差异,有的能够执行,有的不能够,有的执行符号微分,有的执行数值微分,所以比较麻烦。
matlab 微积分基本运算§1 解方程和方程组解1. 线性方程组求解对于方程 AX = B ,其中 A 是( m ×n )的矩阵有三种情形:1)当n=m 且A 非奇异时,此方程为“恰定”方程组。
2)当 n > m 时,此方程为“超定”方程组。
3)当n<m 时,此方程为“欠定”方程组。
下面就三种情形的求解分别作一说明:(1) MATLAB 解恰定方程 A* X = B 的方法1)采用求逆运算解方程x=inv(A)*B2)采用左除运算解方程x=A\B例1 “求逆”法和“左除”法求下列方程组的解⎪⎪⎪⎩⎪⎪⎪⎨⎧=+=++=++=++=+150650650651655454343232121x x x x x xx x x x x x x 在Matlab 编辑器中建立M 文件fanex1.m :A=[5 6 0 0 01 5 6 0 00 1 5 6 00 0 1 5 60 0 0 1 5];B=[1 0 0 0 1]';R_A=rank(A) %求秩X1=A\B %用"左除"法解恰定方程所得的解X2=inv(A)*B %用"求逆"法解恰定方程所得的解运行后结果如下R_A =5X1 =2.2662-1.72181.0571-0.59400.3188X2 =2.2662-1.72181.0571-0.59400.3188两种方法所求方程组的解相同。
(2)MATLAB 解超定方程AX=B 的方法对于方程 AX = B ,其中 A 是( m ×n )的矩阵, n > m ,如果A 列满秩,则此方程是没有精确解的。
然而在实际工程应用中,求得其最小二乘解也是有意义的。
基本解法有:1)采用求伪逆运算解方程x=pinv(A)*B说明:此解为最小二乘解x=inv(A ’*A)*A*B,这里pinv(A) =inv(A ’*A)*A.2)采用左除运算解方程x=A\B例2 “求伪逆”法和“左除”法求下列方程组的解⎪⎩⎪⎨⎧=+=+=+12214212212121x x x x x x命令如下:>> a=[1 2;2 4;2 2];>> b=[1,1,1]';>> xc=a\b %用左除运算解方程运行得结果:xc =0.40000.1000>> xd=pinv(a)*b %用求伪逆运算解方程运行得结果:xd =0.40000.1000>> a*xc-b %xc 是否满足方程ax=b运行得结果:ans =-0.40000.20000.0000可见xc 并不是方程的精确解。
用matlab 计算积分4.1积分的有关理论定积分:积分是微分的无限和,函数)(x f 在区间],[b a 上的积分定义为∑∫=→∆∆==ni iix baxf dx x f I i 1)max()(lim)(ξ其中.,,2,1),,(,,1110n i x x x x x b x x x a i i i i i i n =∈−=∆=<<<=−−ξ从几何意义上说,对于],[b a 上非负函数)(x f ,记分值I 是曲线)(x f y =与直线b x a x ==,及x 轴所围的曲边梯形的面积。
有界连续(或几何处处连续)函数的积分总是存在的。
微积分基本定理(Newton-Leibniz 公式):)(x f 在],[b a 上连续,且],[),()('b a x x f x F ∈=,则有)()()(a F b F dx x f ba−=∫这个公式表明导数与积分是一对互逆运算,它也提供了求积分的解析方法:为了求)(x f 的定积分,需要找到一个函数)(x F ,使)(x F 的导数正好是)(x f ,我们称)(x F 是)(x f 的原函数或不定积分。
不定积分的求法有学多数学技巧,常用的有换元积分和分部积分法。
从理论上讲,可积函数的原函数总是存在的,但很多被积函数的原函数不能用初等函数表示,也就是说这些积分不能用解析方法求解,需用数值积分法解决。
在应用问题中,常常是利用微分进行分析,而问题最终归结为微分的和(即积分)。
一些更复杂的问题是含微分的方程,不能直接积分求解。
多元函数的积分称为多重积分。
二重积分的定义为∑∑∫∫∆∆=→∆+∆ijji jiy x Gy x f dxdy y x f i i ),(lim),(0)max(22ηξ当),(y x f 非负时,积分值表示曲顶柱体的体积。
二重积分的计算主要是转换为两次单积分来解决,无论是解析方法还是数值方法,如何实现这种转换,是解决问题的关键。
MATLAB的微积分基本运算第六章 MATLAB 的微积分基本运算学习⽬标:1、熟悉符号对象和表达式的创建;2、熟悉计算结果的类型与精度控制和转换3、掌握MATLAB 中符号微积分运算:极限、导数、积分的命令及格式。
第⼀节极限⼀、极限概念演⽰:数列极限是指当n ⽆限增⼤时,n u 与某常数⽆限接近或n u 趋向于某⼀定值,就图形⽽⾔,其点列以某⼀平⾏y 轴的直线为渐近线。
函数极限也是如此。
例1:观察数列?+1n n ,当∞→n 时的变化趋势。
输⼊程序:>> n=1:100;xn=n./(n+1); >> for i=1:100;plot(n(i),xn(i),'r') % plot 是⼆维图形作图命令。
hold onend % for ……..end 语句是循环语句,循环体内的语句被执⾏100次由图可看出,随n 的增⼤,点列与直线y=1⽆限接近,所以11lim=+∞→n nn 例2:观察函数 xx f 1sin)(=,当0→x 时的变化趋势。
输⼊程序:>> x=-1:0.01:1;y=sin(1./x);plot(x,y)从图可看到,当0→x 时,x1sin 在-1和1之间⽆限次振荡,极限不存在。
例3:观察函数 xxx f )11()(+=,当∞→x 时的变化趋势输⼊程序:>> x=-1:10:1000;y=(1+1./x).^x;plot(x,y)从图可看到,当∞→x 时,函数值与某常数⽆限接近,这个常数就是e 。
⼆、极限计算:如果符号表达式F中只有⼀个变量x,x可以省略,当a=0时0也可以省略。
例:阅读理解下列程序>> syms x n>> limit(x^2*exp(x))ans =>> limit(exp(-1/x),x,0,'left')ans =inf>> limit((1+2/n)^(3*n),n,inf)ans =exp(6)三、符号对象与表达式的建⽴微积分运算的对象为函数,MATLAB称为符号表达式, MATLAB进⾏微积分运算⾸先要建⽴符号表达式,然后才可以利⽤MATLAB符号数学⼯具箱提供的函数进⾏运算。
MATLAB中的微积分运算(数值符号)显然这个函数是单词differential(微分)的简写,⽤于计算微分。
实际上准确来说计算的是差商。
如果输⼊⼀个长度为n的⼀维向量,则该函数将会返回长度为n-1的向量,向量的值是原向量相邻元素的差,于是可以计算⼀阶导数的有限差分近似。
(1)符号微分1.常⽤的微分函数函数:diff(f) 求表达式f对默认⾃变量的⼀次微分值diff(f,x) 求表达式f对⾃变量x的⼀次积分值diff(f,n) 求表达式f对默认⾃变量的n次微分值diff(f,t,n)求表达式f对⾃变量t的n次微分值>> x=1:10x =1 2 3 4 5 6 7 8 9 10>> diff(x)ans =1 1 1 1 1 1 1 1 1例1:求矩阵中各元素的导数求矩阵[1/(1+a) (b+x)/cos(x)1/(x*y) exp(x^2)]对x的微分,可以输⼊以下命令A = sym('[1/(1+a),(b+x)/cos(x);1,exp(x^2)]');B = diff(A,'x')可得到如下结果:例2:求偏导数求的偏导数。
syms x y;f = x*exp(y)/y^2;fdx = diff(f,x)fdy = diff(f,y)可得到如下结果:例3:求复合函数的导数求的导数sym('x');y = 'x*f(x^2)'y1 = diff(y,'x')得到结果如下:例4:求参数⽅程的导数对参数⽅程求导syms a b tf1 = a*cos(t);f2 = b*sin(t);A = diff(f2)/diff(f1) %此处代⼊了参数⽅程的求导公式B = diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/diff(f1)^3 %求⼆阶导数可得到如下结果:例5:求隐函数的导数求的⼀阶导数syms x yp = 'x*y(x)-exp(x+y(x))'%隐函数可进⾏整体表⽰%注意y(x)这种写法,它代表了y是关于x的函数p1 = diff(p,x)可得到如下结果:2.符号积分1符号函数的不定积分函数:int功能:求取函数的不定积分语法:int(f)int(f,x)说明:第⼀个是求函数f对默认⾃变量的积分值;第⼆个是求⾃变量f对对⾃变量t的不定积分值。
八、微积分中的应用1、求极限(1)单变量函数极限: 极限:limit(fun,x,x0)左右极限:limit(fun, x, x0, ‘left ’或‘right ’) 例:lim (1)sinxx a b x xx→∞+ 程序:syms x a b;f=x*(1+a/x)^x*sin(b/x); L=limit(f,x,inf) 练习: 1) 32lim(1)xx t x→∞+2) 30tan sin limx x xx →-3) lim )x x →-∞4) limx x 5) 111lim()ln 1x x x→--6) limx π→(2)多变量函数极限:limit(limit(fun,x,x0),y,y0)或limit(limit(f,y,y0),x,x0)例:1222()sin 1(1)x y x a yx x y x y -+++程序:syms x y a;f=exp(-1/(y^2+x^2))*sin(x)^2/x^2*(1+1/y^2)^(x+a^2*y^2); limit(limit(f,x,1/sqrt(y)),y,inf) 练习:1) 00cos lim 1x x y e yx y →→++2) 22011limx y x xyx y →→-++2、求导数 求导数:dfdx, diff(f,x)求高阶导数:n nd fdx ,diff(f,x,n)例:syms x y;y=x^4;diff(y,x,2);diff(y,x,4);求偏导数:diff(diff(f,x,m),y,n) 或 diff(diff(f,y,n),x,m)例:222z x y xy =++,2zx y∂∂∂程序:syms x y;z=x^2+y^2+2*x*y;diff(diff(z,x,1),y,1); 练习:1) y =,求y ''2) 2sin y x x =,求(10)y3) x y z x y -=+,求22222,,z z zx y x y∂∂∂∂∂∂∂4) sin sin 2x t y t =⎧⎨=⎩,求22,dy d ydx dx3、求积分不定积分:int(f,x)例:syms x f;f=x^2;int(f,x)定积分和无穷积分:int(f,x,a,b)(注:a,b 可以是inf 或-inf) 例:syms x; syms x;int(exp(x),x,0,1)重积分:int(int(int(f,x,a,b),y,c,d),z,e,g)其中f 为x,y,z 的函数,x,y,z 为变量,a,b,c,d,e,g 是x,y,z 的上下限; 例:22204x y xzedzdydx ππ--⎰⎰⎰程序:syms x y z;int(int(int(4*x*z*exp(-x^2-y^2),x,0,2),y,0,pi),z,0,pi) 练习:1) sin 4cos2x x dx ⎰ 2) arctan x x dx ⎰ 3) cos ax e bx dx ⎰4)5) 21(1)x dx e +⎰6) 4dx ⎰7) 10⎰ 8) 1200sin()ydy y dx ⎰⎰9) 10dy ⎰10) 111220x x ydx dy xdz ---⎰⎰⎰4、 代数方程的求解(1) 多项式求根:roots(p)其中:p 为多项式的系数,按降幂方式形成的行向量 例如:求765422 5.2 4.8729.810x x x x x x -+-++++=的根 程序:p=[-2 5.2 -4.8 7 0 2 9.8 1] ;roots(p) 练习:求4322610x x x +++=的根 (2) 求一元函数零点:fzero(f,x0)表示求函数f 在x0附近零点;若x0为一个二维向量[a,b],则变成求函数f 在区间(a,b)内的零点;例如 :求方程30x e x --=在区间(1,2)内的一个实根 程序 :x0=[1,2] ;syms x ;f= 'exp(x)-x-3 ';fzero(f,x0) 练习 :1) 求方程3250x x --=在区间(0,3)内的实根 2) 求方程323220x x x +--=在区间(-1,0)内的实根 (3) 求代数方程组的解 solve(f1,f2,f3,……)例如:求方程组2222225x y z x y z x y z ++=⎧⎪++=⎨⎪++=⎩的解程序:syms x y z ;f1= 'x+y+z=2 ';f2= '2*x+y+2*z=2 ' ;f3= '2*x+2*y+z=5 '; [x,y,z]=solve(f1,f2,f3); 5、 Taylor 展开按x=0进行Taylor 幂级数展开:taylor(f,x,k)(注:k 表示显示前k 项,常数项,x 的一次项,x 的二次项,……x 的k-1次项) 按x=a 进行Taylor 幂级数展开:taylor(f,x,k,a) 例:syms x ;taylor(sin(x),x,5) 练习 :1) 求函数x f e =在0x =处前8项Taylor 展开式 2) 2) 求函数ln f x =在1x =处前6项Taylor 展开式6、 微分方程(组)的求解(1) 常微分方程的求解dsolve(‘e ’,’c ’,’v ’)其中:e 为微分方程,c 为初值条件,v 为微分方程中的自变量,省略时按缺省原则处理,以小写的t 为自变量。
matlab符号微积分微分⽅程符号极限、微积分和符号⽅程的求解1.语法:sym(‘表达式’)%创建符号表达式f1=sym('a*x^2+b*x+c')f1 =a*x^2+b*x+c2.使⽤syms命令创建符号变量和符号表达式语法:syms arg1 arg2 …,参数%把字符变量定义为符号变量的简洁形式syms a b c x %创建多个符号变量f2=a*x^2+b*x+c %创建符号表达式3.4.1符号极限假定符号表达式的极限存在,Symbolic Math Toolbox提供了直接求表达式极限的函数limit,函数limit的基本⽤法如表3.2所⽰。
【例3.14】分别求1/x在0处从两边趋近、从左边趋近和从右边趋近的三个极限值。
f=sym('1/x')limit(f,'x',0) %对x求趋近于0的极限ans =NaNlimit(f,'x',0,'left') %左趋近于0ans =-inflimit(f,'x',0,'right') %右趋近于0ans =inf程序分析:当左右极限不相等,表达式的极限不存在为NaN。
3.4.2符号微分函数diff是⽤来求符号表达式的微分。
语法:diff(f) %求f对⾃由变量的⼀阶微分diff(f,t) %求f对符号变量t的⼀阶微分diff(f,n) %求f对⾃由变量的n阶微分diff(f,t,n) %求f对符号变量t的n阶微分【例3.15】已知f(x)=ax2+bx+c,求f(x)的微分。
f=sym('a*x^2+b*x+c')f =a*x^2+b*x+cdiff(f) %对默认⾃由变量x求⼀阶微分ans =2*a*x+bdiff(f,'a') %对符号变量a求⼀阶微分ans =x^2diff(f,'x',2) %对符号变量x求⼆阶微分ans =2*adiff(f,3) %对默认⾃由变量x求三阶微分ans = 0微分函数diff 也可以⽤于符号矩阵,其结果是对矩阵的每⼀个元素进⾏微分运算。
MATLAB符号微积分的应用MATLAB是一种广泛使用的科学计算软件,它提供了许多强大的工具箱用于解决各种科学计算问题。
其中,MATLAB符号微积分工具箱在解决微分、积分、级数等数学问题方面具有重要作用。
本文将介绍MATLAB符号微积分工具箱的基本概念及其在科学计算中的应用。
MATLAB符号微积分工具箱提供了符号计算功能,包括微分、积分、级数等多方面的数学运算。
符号微分可以求解函数的导数,符号积分可以求解函数的定积分或不定积分,而级数则可以对函数进行展开和表示。
这些功能使得MATLAB符号微积分工具箱成为进行数学分析和计算的强大工具。
下面通过几个具体的应用实例来说明如何使用MATLAB符号微积分工具箱进行科学计算。
使用符号微分功能可以求解函数的导数。
例如,对于函数f(x) = x^3,可以使用以下MATLAB代码求解其导数:f = x^3; %定义函数f(x) = x^3df = diff(f, x); %求函数f的导数使用符号积分功能可以求解函数的积分。
例如,对于函数f(x) = x^2,可以使用以下MATLAB代码求解其不定积分:f = x^2; %定义函数f(x) = x^2indefinite_integral = int(f, x); %求函数f的不定积分使用级数功能可以对函数进行展开和表示。
例如,对于函数f(x) = 1/(1-x),可以使用以下MATLAB代码将其展开为级数:f = 1/(1-x); %定义函数f(x) = 1/(1-x)series_expansion = expand(f); %将f展开为级数使用MATLAB符号微积分工具箱进行科学计算具有以下优势:符号计算可以精确地表示数学公式和推导过程,从而提高计算的准确性和精度。
MATLAB符号微积分工具箱提供了丰富的数学函数和算法,可以解决各种复杂的数学问题。
通过使用符号微积分,可以更好地理解和掌握数学概念和原理。
然而,MATLAB符号微积分工具箱也存在一些不足之处:符号计算相比于数值计算通常更加耗时和占用资源,对于大规模的计算任务可能不适用。
在开始撰写文章之前,我首先对你提出的主题“Matlab解下列齐次微分方程”进行全面评估。
在接下来的文章中,我将以从简到繁、由浅入深的方式来探讨这一主题,让你能够更深入地理解。
文章将包含总结和回顾性的内容,同时我也会共享我的个人观点和理解。
现在让我们开始撰写这篇高质量、深度和广度兼具的文章。
齐次微分方程是微积分学中的一个重要概念,它在物理、工程、经济等领域有着广泛的应用。
在Matlab中,我们可以利用其强大的求解工具来解决齐次微分方程的问题,让我们先来了解一下齐次微分方程的基本概念。
一般形式的齐次微分方程可以表示为:\[a_n(t)y^{(n)} + a_{n-1}(t)y^{(n-1)} + ... + a_1(t)\frac{dy}{dt} + a_0(t)y = 0\]其中,\(y\)是未知函数,\(t\)是自变量,\(a_n(t)\)等是已知函数。
当常数\(a_n(t), a_{n-1}(t), ..., a_1(t), a_0(t)\)都是0时,齐次微分方程就是常系数齐次微分方程。
对于Matlab来说,解决齐次微分方程的过程通常包括定义方程、求解方程和绘制解析。
在这里,我将介绍如何使用Matlab来解下列齐次微分方程:\[y'' - 3y' + 2y = 0\]我们需要定义这个微分方程并将其转化为Matlab中的表达式。
在Matlab中,我们可以使用符号工具箱来表示微分方程。
定义这个微分方程的代码如下:```syms y(t)eqn = diff(y, t, 2) - 3*diff(y, t) + 2*y == 0;```接下来,我们使用dsolve来求解这个微分方程并得到其通解。
代码如下:```cond = y(0) == C1, Dy(0) == C2;ySol(t) = dsolve(eqn, cond);```在这里,y(t)即为方程的通解,并且我们也可以通过传入特定的初值条件来得到特解。
matlab 微积分基本运算§1 解方程和方程组解1. 线性方程组求解对于方程 AX = B ,其中 A 是( m ×n )的矩阵有三种情形:1)当n=m 且A 非奇异时,此方程为“恰定”方程组。
2)当 n > m 时,此方程为“超定”方程组。
3)当n<m 时,此方程为“欠定”方程组。
下面就三种情形的求解分别作一说明:(1) MATLAB 解恰定方程 A* X = B 的方法1)采用求逆运算解方程x=inv(A)*B2)采用左除运算解方程x=A\B例1 “求逆”法和“左除”法求下列方程组的解⎪⎪⎪⎩⎪⎪⎪⎨⎧=+=++=++=++=+150650650651655454343232121x x x x x xx x x x x x x在Matlab 编辑器中建立M 文件fanex1.m :A=[5 6 0 0 01 5 6 0 00 1 5 6 00 0 1 5 60 0 0 1 5];B=[1 0 0 0 1]';R_A=rank(A) %求秩X1=A\B %用"左除"法解恰定方程所得的解X2=inv(A)*B %用"求逆"法解恰定方程所得的解运行后结果如下R_A =5X1 =2.2662-1.72181.0571-0.59400.3188X2 =2.2662-1.72181.0571-0.59400.3188两种方法所求方程组的解相同。
(2)MATLAB 解超定方程AX=B 的方法对于方程 AX = B ,其中 A 是( m ×n )的矩阵, n > m ,如果A 列满秩,则此方程是没有精确解的。
然而在实际工程应用中,求得其最小二乘解也是有意义的。
基本解法有:1)采用求伪逆运算解方程x=pinv(A)*B说明:此解为最小二乘解x=inv(A ’*A)*A*B,这里pinv(A) =inv(A ’*A)*A.2)采用左除运算解方程x=A\B例2 “求伪逆”法和“左除”法求下列方程组的解⎪⎩⎪⎨⎧=+=+=+12214212212121x x x x x x命令如下:>> a=[1 2;2 4;2 2];>> b=[1,1,1]';>> xc=a\b %用左除运算解方程运行得结果:xc =0.40000.1000>> xd=pinv(a)*b %用求伪逆运算解方程运行得结果:xd =0.40000.1000>> a*xc-b %xc 是否满足方程ax=b运行得结果:ans =-0.40000.20000.0000可见xc 并不是方程的精确解。
(3) MATLAB 解欠定方程AX=B 的方法欠定方程从理论上说是有无穷多个解的,如果利用求“伪逆”法和“左除”法来求解,只能得到其中一个解。
基本方法:1)采用求伪逆运算解方程x=pinv(A)*B2)采用左除运算解方程x=A\B例3 求方程组⎪⎩⎪⎨⎧=--+=+--=--+0895443313432143214321x x x x x x x x x x x x的一个特解解:在Matlab 编辑器中建立M 文件:fanex2.mA=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];B=[1 4 0]';X=A\BX =-0.53330.6000(4) MATLAB 求线性齐次方程组的通解在Matlab 中,函数null 用来求解零空间,即满足AX=0的解空间,实际上是求出解空间的一组基(基础解系)。
基本格式:1)格式:z = null(A)说明: z 的列向量为方程组的正交规范基,满足I Z Z =⨯'2)格式:z = null(A ,’r ’)说明: z 的列向量是方程AX=0的有理基.例4 求解方程组的通解:⎪⎩⎪⎨⎧=---=--+=+++0340222022432143214321x x x x x x x x x x x x解:在Matlab 编辑器中建立M 文件:fanexmA=[1 2 2 1;2 1 -2 -2;1 -1 -4 -3];format rat %指定有理式格式输出B=null(A,'r') %求解空间的有理基运行后显示结果如下:B =2 5/3-2 -4/31 00 1写出通解:syms k1 k2X=k1*B(:,1)+k2*B(:,2) %写出方程组的通解pretty(X) %让通解表达式更加精美运行后结果如下:X =[ 2*k1+5/3*k2][ -2*k1-4/3*k2][ k1][ k2]% 下面是其简化形式[2k1 + 5/3k2 ][ ][-2k1 - 4/3k2][ ][ k1 ][ ][ k2 ](4)MATLAB 求非齐次线性方程组的通解非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解。
因此,步骤为:第一步:判断AX=b 是否有解,若有解则进行第二步第二步:求AX=b 的一个特解第三步:求AX=0的通解第四步:AX=b 的通解= AX=0的通解+AX=b 的一个特解。
例5 求解方程组⎪⎩⎪⎨⎧=-++=-+-=-+-32222353132432143214321x x x x x x x x x x x x解:在Matlab 编辑器中建立M 文件:fanex5.mA=[1 -2 3 -1;3 -1 5 -3;2 1 2 -2];b=[1 2 3]';B=[A b];n=4;R_A=rank(A)R_B=rank(B)format ratif R_A==R_B&R_A==n %判断有唯一解X=A\belseif R_A==R_B&R_A<n %判断有无穷解X=A\b %求特解C=null(A,'r') %求AX=0的基础解系else X='equition no solve' %判断无解end运行后结果显示:R_A =2R_B =3X =equition no solve说明该方程组无解例6 求解方程组的通解:⎪⎩⎪⎨⎧=--+=+--=--+0895443313432143214321x x x x x x x x x x x x解法一:在Matlab 编辑器中建立M 文件:fanex6.mA=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];b=[1 4 0]';B=[A b];n=4;R_A=rank(A)R_B=rank(B)format ratif R_A==R_B&R_A==nX=A\belseif R_A==R_B&R_A<nX=A\bC=null(A,'r')else X='Equation has no solves'end运行后结果显示为:R_A =2R_B =2X =-8/153/5C =3/2 -3/43/2 7/41 00 1所以原方程组的通解为X=k 1⎪⎪⎪⎪⎪⎭⎫ ⎝⎛012/32/3+k 2⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-104/74/3+⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-5/315/800 解法二:在Matlab 编辑器中建立M 文件:LX07212.mA=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];b=[1 4 0]';B=[A b];C=rref(B) %求增广矩阵的行最简形,可得最简同解方程组。
运行后结果显示为:C =1 0 -3/2 3/4 5/40 1 -3/2 -7/4 -1/40 0 0 0 0对应齐次方程组的基础解系为:⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=012/32/31ξ, ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-=104/74/32ξ 非齐次方程组的特解为:⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-=004/14/5*η 所以,原方程组的通解为:X=k 11ξ+k 22ξ+*η2.代数方程组求解在MMlab 中解方程组的命令有linsolve 和solve ,其中命令linsolve 专门用于求解线性方程组,而命令solve 可适用于所有的代数方程(组)。
下面分别加以介绍。
(1) 求解线性方程组linsolvelinsolve 命令对解形如AX=B 的线性方程组运用自如。
但在对矩阵A 的运算中有如下限制:A 必须至少是行满秩的。
Linsolve 具体使用格式为:X=linsolve(A,B)功能:得到线性方程组AX=B 的特解X 。
例7 求线性方程组⎪⎩⎪⎨⎧=+-=++=+-20141861234834483321321321x x x x x x x x x AX=b 的解。
命令如下:>>A=[3,-8,4;3,48,3;6,-18,14];>>b=[4;12;20];>>X=linsolve(A,b) %调用linsolve 函数求特解运行后结果显示为:X =[ -156/167][ 30/167][ 344/167]>>A\b %用另一种方法求特解运行后结果显示为:ans =-0.93410.17962.0599例8 求解方程组的特解:⎪⎩⎪⎨⎧=--+=+--=--+0895443313432143214321x x x x x x x x x x x x命令如下:>>A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];>>b=[1 4 0]';>>X=linsolve(A,b)运行后结果显示为:Warning: System is rank deficient. Solution is not unique.> In E:\MATLAB6p5\toolbox\symbolic\@sym\mldivide.m at line 38In E:\MATLAB6p5\toolbox\symbolic\linsolve.m at line 8X =[ 5/4][ -1/4][ 0][ 0](2) 一般符号表达式表示的代数方程求解在MATLAB 中,求解用符号表达式表示的代数方程可由函数solve 实现,其调用格式为:1) 格式:x=solve(S)功能:求解符号表达式S 的代数方程,求解变量为默认变量v=findsym(S),将结果赋给x 。
其中S 为包含方程(一个)等式的字符串(可以是函数名,或者是描述方程的字符串,关于方程组的输入在前面章节中有讨论);2) 格式:x=solve(S,v)功能:求解符号表达式S 的代数方程,求解变量为v, 将结果赋给x 。
3) 格式:[x1,x2, …,xn]=solve(S1,S 2,…,Sn)功能:求解符号表达式S1, S 2,…, Sn 组成的代数方程组,对n 个默认变量求解,将结果赋给[x1,x2, …,xn]。