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 并不是方程的精确解。
- 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]。