matlab微积分基本运算
- 格式:doc
- 大小:1.41 MB
- 文档页数:63
第九章微积分基础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 →,那么上述的极限求取顺序不能互换。
matlab解微积分方程Matlab是一种功能强大的数值计算软件,可以用于解决各种数学问题,包括微积分方程。
微积分方程是描述自然界中许多现象的数学模型,它们在物理、化学、生物等领域有着广泛的应用。
本文将介绍如何使用Matlab解微积分方程。
我们需要明确什么是微积分方程。
微积分方程是包含未知函数及其导数的方程,通常可以写成形如y''(x) + p(x)y'(x) + q(x)y(x) = f(x)的形式。
其中y(x)是未知函数,p(x)、q(x)和f(x)是已知函数。
解微积分方程的过程可以分为两步:建立方程和求解方程。
建立方程是将实际问题转化为数学模型,而求解方程则是找到满足方程的函数。
在Matlab中,可以使用dsolve函数来求解微积分方程。
dsolve 函数可以根据方程的类型自动选择合适的求解方法,并给出满足方程的函数表达式。
例如,对于一阶线性微分方程dy/dx + p(x)y = q(x),可以使用以下代码求解:syms x y(x)p = input('请输入p(x)的表达式:'); % 输入p(x)的表达式q = input('请输入q(x)的表达式:'); % 输入q(x)的表达式eqn = diff(y,x) + p*y - q == 0; % 建立微分方程sol = dsolve(eqn); % 求解微分方程disp('方程的解为:');disp(sol);在以上代码中,首先使用syms命令定义符号变量x和y(x),然后使用input命令分别输入p(x)和q(x)的表达式。
接下来,使用diff 命令计算y'(x),然后将其代入微分方程中得到eqn。
最后,使用dsolve命令求解方程,并将结果存储在sol中,最后将结果打印出来。
对于更高阶的微积分方程,可以使用符号变量来表示未知函数及其导数的各阶,并按照相应的形式建立方程。
第三章 微积分的数学实验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 计算积分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的不定积分值。
matlab积分模块一、概述MATLAB是一种数学软件,它提供了许多强大的工具,包括积分模块。
积分是数学中的一个重要概念,它可以用于计算曲线下面积、求解微积分方程等问题。
MATLAB的积分模块提供了多种方法来计算不同类型的积分,使得用户可以方便地解决各种数学问题。
二、基本语法MATLAB的积分模块有两个主要函数:integral和quad。
其中integral函数用于计算定积分,quad函数用于计算一般积分。
下面是这两个函数的基本语法:1. integral函数y = integral(fun,a,b)其中fun是被积函数的句柄(handle),a和b是积分区间的上下限。
该函数将返回定积分的值y。
2. quad函数y = quad(fun,a,b)其中fun是被积函数的句柄(handle),a和b是积分区间的上下限。
该函数将返回一般积分的值y。
三、常见应用场景1. 计算曲线下面面积曲线下面面积可以通过定积分来求解。
例如,假设要计算曲线y=x^2在x=0到x=1之间所围成图形的面积,可以使用以下代码:fun = @(x) x.^2;a = 0;b = 1;y = integral(fun,a,b)该代码中,定义了被积函数fun,积分区间为a到b,使用integral函数计算定积分的值y。
2. 求解微积分方程微积分方程可以通过一些特定的方法转化为一般积分的形式。
例如,假设要求解微分方程y''+2y'+y=0的通解,在已知初始条件y(0)=1和y'(0)=0的情况下,可以使用以下代码:fun = @(t,y) [y(2); -2*y(2)-y(1)];tspan = [0 10];y0 = [1; 0];options = odeset('RelTol',1e-6,'AbsTol',1e-6);[t,y] = ode45(fun,tspan,y0,options);plot(t,y(:,1));该代码中,定义了微分方程的函数句柄fun,并使用ode45函数求解微分方程。
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]。