matlab微积分基本运算
caputo分数阶微分方程求解 matlab 概述及解释说明
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导数是一种常用的描述物理过程中记忆效应的方法。
matlab微分与积分
[I,n]=quadl('fname',a,b,tol,trace) 其中参数的含义和quad函数相似,只是用高
阶自适应递推法,该函数可以更精确地求 出定积分的值,且一般情况下函数调用的 步数明显小于quad函数,从而保证能以更 高的效率求出所需的定积分值。
(3) fft(X,[],dim)或fft(X,N,dim):这是对于矩 阵而言的函数调用格式,前者的功能与 FFT(X)基本相同,而后者则与FFT(X,N) 基本相同。只是当参数dim=1时,该函数 作用于X的每一列;当dim=2时,则作用于 X的每一行。
数值微积分以及数值分析
2020/5/17
1
数值微分
数值微分的实现 两种方式计算函数f(x)在给定点的数值导数:1.用多项式或
者样条函数 2. 利用数据的有限差分
在MATLAB中,没有直接提供求数值导数的函数,只有计 算向前差分的函数diff,其调用格式为:
DX=diff(X):计算向量X的向前差分,DX(i)=X(i+1)-X(i), i=1,2,…,n-1。
I=
2.4674
2020/5/17
8
3.Trapz : 计算梯形面积的和来计算定积分 在MATLAB中,对由表格形式定义的函数关系的求定积分
问题用trapz(X,Y)函数。其中向量X,Y定义函数关系 Y=f(X)。
例 用trapz函数计算定积分。 命令如下:
X=1:0.01:2.5; Y=exp(-X); %生成函数关系数据向量 trapz(X,Y) ans =
• Help dell2
2020/5/17
3
数值积分
数值积分基本原理 求解定积分的数值方法多种多样,如简单 的梯形法、辛普生(Simpson)•法、牛顿- 柯特斯(Newton-Cotes)法等都是经常采用 的方法。它们的基本思想都是将整个积分 区i积=1间分,2[问,a…,题b,n]分就,成分其n解中个为x子1=求区a和,间问x[nx+题1i,=x。bi+。1],这样求定
MATLAB课件第九篇微积分基础
第九章微积分基础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积分.
一.数值积分的实现方法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)函数。
MATLAB的符号矩阵运算与符号微积分
西北农林科技大学实验报告学院名称:理学院专业年级: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。
第三章-matlab求解微积分
第三章 微积分的数学实验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进行微积分的计算
Matlab的微积分符号运算都可以对数组进行。
函数的积分 积分符号运算的基本语句 int(F); %求函数表达式F的不定积分 int(F,v); %求函数表达式F关于变量v的不定积分 int(F,a,b); %求函数表达式F在区间[a,b]上的定积分 int(F,v,a,b); %求函数表达式F在区间[a,b]上的关于变量v的 定积分
elapsed time is 17.471170 seconds. s=
53362913282294785045591045624042980409652472280384260097101349248456268889497101757 50609790198503569140908873155046809837844217211788500946430234432656602250210027842 563285208140554494121044251014267277029477471270891796396777961045322469242686646888 828158207198489710511079687324931915552939701750893156451997608573447301418328401172 44122806490743077037366831700558002936592350885893602352858528081607595747378366554 13175508131522517/712886527466509305316638415571427292066835886188589304045200199115 432408758111149947644415191387158691171781701957525651298026406762100925146587100430 513107268626814320019660997486274593718834370501543445252373974529896314567498212823 69562328237940110688092623177088619795407912477545580493264757378299233527517967352 48042463638051137034331214781746850878453485678021888075373249921995672056932029099 390891687487672697950931603520000
matlab微积分例题精选
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计算定积分
用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 非负时,积分值表示曲顶柱体的体积。
二重积分的计算主要是转换为两次单积分来解决,无论是解析方法还是数值方法,如何实现这种转换,是解决问题的关键。
数值计算(一)
[x,fval]=fminbnd('sin(x)',-pi,pi) %求sinx在[-π,π]的极小值点 x= -1.5708 fval = -1.0000
2014-6-28
天津农学院基础科学系 朱文新
22
[x,fval]=fminsearch(' (x(1)-1)^2+(x(2)x(1)^2)^2',[0,0])
级数求和、幂级数展开的Matlab命令
命令格式 symsum(f) symsum(f,x) 含义 求符号表达式f对默认变量的不定和 求符号表达式f对自变量x的不定和
symsum(f,a,b)
求符号表达式f对默认变量的a到b的有限和
taylor(f) taylor(f,n,x) taylor(f,n,x,a)
24
练习
1.
求下列极限
1 x 1 lim x 0 x
n
xn 1 lim m , ( n, m为常数) x 1 x 1
ln x lim ( ) x x 1
x 1 lim( ) x0 x 1 ln x
2014-6-28
天津农学院基础科学系 朱文新
25
2、计算下列导数 (1) (2) (3) (4)
MATLAB数值计算(一)
主讲: 朱文新
2014-6-28
天津农学院基础科学系 朱文新
1
实验内容:
1. 微积分基本运算 2.非线性方程组的解法
2014-6-28
天津农学院基础科学系 朱文新
2
一、微积分基本运算
实验目的:
学会利用matlab 求解函数的极限、导数、极值、积分与级数运算
MATLAB的微积分基本运算
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中的微积分运算(数值符号)
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解法
>> syms x a >> f1=(cos(x) - 1) / x; >> f11=limit(f1) f11 = 0 >> f11=limit(f1,x,0) f11 = 0 >> f2 = 1 / x^3; >> f21 = limit(f2,'right') ??? Error using ==> sym.limit Limit point must be a scalar. >> f21 = limit(f2,x,0,'right') f21 = Inf >> f3 = [(1+a/x)^2,exp(-x)]; >> f21 = limit(f3,x,inf,'left') f21 = [ 1, 0]
-0.96 -0.965 -0.97 -0.975 -0.98 -0.985 -0.99 -0.995 -1 3 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4
例
f ( x, y) 100 ( y x 2 ) 2 (1 x) 2的 小 点 极 值 。
>> x0 = [-1.2,1]; >> h = @(x)100*(x(2)-x(1)^2)^2 + (1 - x(1))^2; >> [x,fval] = fminsearch(h,x0) x= 1.0000 1.0000 fval = 8.1777e-010
>> f = @(x)x^3-2*x - 5 f= f 1x1 16 function_handle array Grand total is 1 element using 16 bytes @(x)x^3-2*x – 5 >> [x,fval] = fminbnd(f,0,2) x= 0.8165 fval = -6.0887 >>fplot(f,[0 2])
MATLAB课件 第6讲
π
y′′ − µ 1 − y 2 y′ + y = 0 y (0) = 1, y′(0 ) = 0, µ = 2
函数ode23和ode45是对一阶常微分方程组设计的,因此,对高阶常微 和 是对一阶常微分方程组设计的, 函数 是对一阶常微分方程组设计的 因此, 分方程,需先将它转化为一阶常微分方程组,即状态方程。 分方程,需先将它转化为一阶常微分方程组,即状态方程。 则可写出Van der Pol 方程的状态方程形式: 方程的状态方程形式: 令 x1 = y , x2 = y ′, 则可写出
求解器 Ode23 Ode45 Ode113 Ode23t Ode15s Ode23s Ode23tb ode15i 采用方法 2-3阶Runge-Kutta算法,低精度 算法, 阶 算法 4-5阶Runge-Kutta算法,中精度 阶 算法, 算法 Adams算法,精度可到 10 −3 ~ 10 −6 算法, 算法 梯形算法 Gear’s方向数值微分算法,中精度 方向数值微分算法, 方向数值微分算法 2阶Rosebrock算法,低精度 阶 算法, 算法 梯形算法,低精度 梯形算法, 可变秩方法 适用场合 非刚性 非刚性 非刚性, 非刚性, 适度刚性 刚性 刚性 刚性 完全隐式微分方程
∫
1
0
ln xdx .
(1)建立被积函数文件 )建立被积函数文件feln.m. function y=feln(x) y=exp(x).*log(x); (2)调用数值积分函数 求定积分。 )调用数值积分函数quadgk求定积分。 求定积分 format long; I=quadgk(@ feln,0,1) 3.梯形积分法 梯形积分法 在MATLAB中,对由表格形式定义的函数关系的求定积分问题用梯 中 形积分函数trapz.该函数调用格式如下。 该函数调用格式如下。 形积分函数 该函数调用格式如下 ●T=trapz(Y).例如:trapz([1:5;2:6]’) 例如: 例如 ●T=trapz(X,Y).
MATLAB在微分方程中的应用
Abstract: In the article, we discuss the application of MATLAB in differential equations, including solving method by symbol and by numerical of ordinary differential equations, and finite element method of partial differentia equation. We provide some functional command of solving differential equations in MATLAB, in order to solve function we compile M file on the basis of algorithm, we get the result as same as theoretical estimate. Key words: MATLAB;Ordinary Differential Equation; Partial Differential Equation;Euler Method; Finite Element Method.
烟台大学毕业论文(设计) 前言
现代的科学、技术、工程中的大量数学模型都可以用微分方程来描述,很多近代自然 科学的基本方程本身就是微分方程。从微积分理论形成以来,人们就一直用微分方程来描 述、解释或预见各种自然现象,不断地取得显著成效。遗憾的是,绝大多数微分方程(特 别是偏微分方程)定解问题的解不能以实用的解析形式来表示,这就产生了理论与应用的 矛盾:一方面,人们建立了大量实用的数学模型,列出了反映客观现象的微分方程;另一 方面,人们又无法得到这些方程的准确解以定量地描述客观过程。 随着电子计算机的出现和发展,解决上述矛盾的一门学科−−微分方程的数值方法得 到了前所未有的发展和应用。今天,需要掌握和应用微分方程数值方法的已不再限于数学 专业人员和专门从事科学和工程计算的人员,大量从事力学、物理学、天文学方面的科研 人员,航空、土木、船舶、机械、电机、电子等领域的工程技术人员,甚至连金融工程、 风险投资等非科技领域都把这门学科作为自己领域的一种重要研究手段和方法。 从20世纪80年代以来,世界各国所开发的数学类科技软件多达几十种,在我国流行的 数学软件主要有四种:MATLAB、Mathematica、Maple和M athCAD。其中,MATLAB有 着其它几种数学软件无法比拟的优势和适用面,近几年,MATLAB已成为科学工作者首 选的数学软件。目前关于MAT LAB语言和应用的书籍在国际上数以千计,但从其覆盖面 和应用水平来说,往往难以达到日益增长的MATLAB使言在应用数学的各个分支的应用、计算和求解的书籍。本 文旨在填补就微分方程方面的空白,重点是微分方程数值解法方面,以帮助微分方程求解 工作者掌握MATLAB在这方面的功能,避免重复性的劳动,尽快地“站在巨人肩上”开 展工作。 本 文 把 微 分 方 程 求 解 和MATLAB有 机 的 结 合 起 来 , 全 面 介 绍 了 微 分 方 程 的 求 解 在MATLAB中的实现,使得让数学基础不深厚的读者同样能轻易利用MATLAB解决较 高深的微分方程问题。
MATLAB基本操作2
八、微积分中的应用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符号微积分微分方程
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符号微积分工具箱成为进行数学分析和计算的强大工具。
下面通过几个具体的应用实例来说明如何使用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解下列齐次微分方程”进行全面评估。
在接下来的文章中,我将以从简到繁、由浅入深的方式来探讨这一主题,让你能够更深入地理解。
文章将包含总结和回顾性的内容,同时我也会共享我的个人观点和理解。
现在让我们开始撰写这篇高质量、深度和广度兼具的文章。
齐次微分方程是微积分学中的一个重要概念,它在物理、工程、经济等领域有着广泛的应用。
在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)即为方程的通解,并且我们也可以通过传入特定的初值条件来得到特解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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]。