文档库 最新最全的文档下载
当前位置:文档库 › matlab求解代数方程组解析

matlab求解代数方程组解析

matlab求解代数方程组解析
matlab求解代数方程组解析

第三讲 Matlab 求解代数方程组

理论介绍:直接法+迭代法,简单介绍相关知识和应用条件及注意事项 软件求解:各种求解程序

讨论如下表示含有n 个未知数、由n 个方程构成的线性方程组:

1111221121122222

1122n n n n n n nn n n

a x a x a x

b a x a x a x b a x a x a x b +++=??+++=???

?+++=? (1)

一、直接法 1.高斯消元法:

高斯消元法的基本原理: 在(1)中设110,a ≠将第一行乘以1

11

,k a a -

加到第(2,3,,),k k n = 得: (1)(1)(1)(1)11112211(2)(1)(2)

22112

(2)(2)(2)22n n n n n nn n n a x a x a x b a x a x b a x a x b ?+++=?++=???

?++=?

(2)

其中(1)

(1)1111,.k k a

a b b ==再设(2)22

0,a ≠将(2)式的第二行乘以(2)2

(2)22

,(3,,)k a k n a -= 加到第k 行,如此进行下去最终得到:

(1)(1)(1)(1)11112211(2)(1)(2)

22112(1)(1)(1)

1,111,1()()

n n n n n n n n n n n n n n n n nn n n a x a x a x b a x a x b a x a x b a x b --------?+++=?++=?

?

??+=?

?=?

(3) 从(3)式最后一个方程解出n x ,代入它上面的一个方程解出1n x -,并如此进行

下去,即可依次将121,,,,n n x x x x - 全部解出,这样在()

0(1,2,,)k kk a k n ≠= 的假设

下,由上而下的消元由下而上的回代,构成了方程组的高斯消元法. 高斯消元法的矩阵表示:

若记11(),(,,),(,,)T T ij n n n n A a x x x b b b ?=== ,则(1)式可表为.Ax b =于是高斯

消元法的过程可用矩阵表示为:

121121.n n M M M Ax M M M b --=

其中:

(1)21

(1)

11

1(1)

1

(1)11

111n a a M a a ?? ? ?- ?=

? ? ? ?- ??? (2)32

(2)222(2)

2(2)

221

111n a a M a a ??

?

? ?

-

?

=

? ? ?

?- ???

高斯消元法的Matlab 程序: %顺序gauss 消去法,gauss 函数 function[A,u]=gauss(a,n) for k=1:n-1

%消去过程 for i=k+1:n for j=k+1:n+1

%如果a(k,k)=0,则不能削去 if abs(a(k,k))>1e-6 %计算第k 步的增广矩阵 a(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j); else

%a(k,k)=0,顺序gauss 消去失败 disp (‘顺序gauss 消去失败‘); pause; exit; end end end end

%回代过程 x(n)=a(n,n+1)/a(n,n); for i=n-1:-1:1 s=0; for j=i+1:n s=s+a(i,j)*x(j); end

x(i)=(a(i,n+1)-s)/a(i,i); end

%返回gauss 消去后的增广矩阵 A=triu(a); %返回方程组的解 u=x ;

练习和分析与思考: 用高斯消元法解方程组:

12345124512345124512452471523814

476192536x x x x x x x x x x x x x x x x x x x x x x ++++=??+++=??

++++=??+++=?

+++=??

2.列主元素消元法

在高斯消元法中进行到第k 步时,不论()

k ik a 是否为0,都按列选择()

||(,,)k ik a i k n = 中最大的一个,称为列主元,将列主元所在行与第k 行交换再

按高斯消元法进行下去称为列主元素消元法。

列主元素消元法的matlab 程序 %列主元guass 消去函数 function[A,u]=gauss(a,n) %消去过程 for k=1:n-1 %选主元

c=0;

for q=k:n

if abs(a(q,k))>c

c=a(q,k);

l=q;

end

end

%如果主元为0,则矩阵A不可逆

if abs(c)<1e-10

disp(‘error’);

pause;

exit

end

%如果l不等于k,则交换第l行和第k行if l~=k

for q=k:n+1

temp=a(k,q);

a(k,q)=a(l,q);

a(l,q)=temp;

end

end

%计算第k步的元素值

for i=k+1:n

for j=k+1:n

a(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j);

end

end

end

%回代过程

x(n)=a(n,n+1)/a(n,n);

for i=n-1:-1:1 s=0; for j=i+1:n s=a+a(i,j)*x(j); end

x(i)=(a(i,n+1)-s)/a(i,i); end

%返回列主元gauss 消去后的增广矩阵 A=triu(a); %返回方程组的解 u=x ;

练习和分析与思考:

用列主元消去法重新求解gauss 消元法求解的上述问题。 二、迭代法

1.迭代法的总体思想 (1)迭代公式的构造:

对线性方程组Ax b =,可以构造迭代公式(1)(),k k X BX f +=+给出(0),X 由迭代公式的(),k X 如果()k X 收敛于*,X 则*X 就是原方程组的解。 (2)矩阵的分解:

设线性方程组Ax b =,其中A 非奇异,则可以把A 矩阵分解:A D L U =--,

1122[,,,]nn D diag a a a = ,

1213121

23231

321,1

2

3

0000000n n n n n n n a a a a a a L a a U a a a a -????

?

?

?

? ? ?=-=- ? ?

?

?

? ???

??

于是Ax b =化为11(),x D L U x D b --=++与之对应的迭代公式为:

(1)1()1().k k x D L U x D b +--=++

2.雅可比(Jacobian )迭代法公式:

11(),B D L U f D b --=+=

用A 矩阵的元素表示为:

()

1,(1),(1,2,,)n

k i ij j j j i

k i ii

b a x x i n a =≠+-=

=∑

Jacobian 迭代法的Matlab 程序

function [y,n]=jacobi(A,b,x0,eps) %误差

if nargin==3 eps=1.0e-6; elseif nargin<3 error return end

%求A 的对角矩阵,下三角阵,上三角阵

D=diag(A);diag(diag(A))? L=-tril(A,-1); U=-triu(A,1); B=D\(L+U); f=D\b; y=B*x0+f; %迭代的次数

n=1;

%当误差没有满足要求时继续迭代

while norm(y-x0)>=eps x0=y; y=B*x0+f; n=n+1; end

练习和分析与思考:

利用Jacobian 迭代法求解方程组:

13234

12324312263155248

x x x x x x x x x x +=??++=??

++=??+=? 3.高斯-塞德尔(Gauss-Seidel )迭代法公式:

将Jacobi 迭代公式(1)()()k k Dx L U x b +=++改进为(1)(1)()k k k Dx Lx Ux b ++=++,于是得到(1)1()1()()k k x D L Ux D L b +--=-+-.

11(),()B D L U f D L b --=-=-

用A 矩阵的元素表示为:

1

()

()1

1

(1),(1,2,,)i n

k k i ij j

ij

j j i k i ii

b a x

a

x i n a -==++--

=

=∑∑

Gauss-Seidel 迭代法的Matlab 程序

function [y,n]=gauseidel(A,b,x0,eps) %误差

if nargin==3 eps=1.0e-6; elseif nargin<3 error return end

%求A 的对角矩阵,下三角阵,上三角阵

D=diag(A);diag(diag(A))? L=-tril(A,-1); U=-triu(A,1); G=(D-L)\U; f=(D-L)\b; y=G*x0+f;

%迭代的次数

n=1;

%当误差没有满足要求时继续迭代

while norm(y-x0)>=eps x0=y; y=G*x0+f; n=n+1; end

4.超松弛(Successive Over Relaxation method )迭代法(SOR ) 三、求解非线性方程的方法 1.根的隔离——二分法

利用函数的性质确定根的大致范围(,),a b 取(,)a b 的中点0,2

a b

x +=

若0()0f x =,则0x 即是根,否则如果0()()0,f a f x ?<令1,a a =10,b x =如果0()()

0,f b f x ?<令10,a x =1,b b =则在11(,)a b 内至少有一根,

且11(,)(,),a b a b ?再取11(,)a b 的中点11

12

a b x +=

,如此进行下去,包含根的区间(,)(1,2,)n n a b n = 的长度每次缩小一半,n 足够大时即可获得满意精度。 2.切线法

对于方程()0f x =将()f x 在k x 作Taylor 展式保留线性项,即

'()()()(),k k k f x f x f x x x =+-

设'()0,k f x ≠然后用1k x +代替右端的x 就得到迭代公式:1'

()

()

k k k k f x x x f x +=-,这种方法称为牛顿(Newton )切线法。 3.割线法

在牛顿切线法中用差商

11

()()

k k k k f x f x x x ----代替'()k f x ,则

111()()

()()

k k k k k k k f x x x x x f x f x -+--=-

-(割线法)

练习和分析与思考:

求方程2()14f x x x =+-的一个正根。 四、求解非线性方程组的牛顿法

方程组记作()0,F x =其中112(,,),()((),(

),,()),

T T

n n x x x F x f x f x f x == 设()()()1(,,),k k k T

n x x x = 且方程组()0F x =的第k 步近似解,与牛顿切线法类似,在

()k x 作Taylor 展式,线性化后用(1)k x +代替x 可得:

()()(1)

()

(1)()(1)()

111()()()()()()(1,2,,)k k k k k k k k i i i i n n n

f x f x f x f x x x x x i n x x +++??=+-++-=??

1

1112222'1

21

2

()n n n n n n f f f x x x f f f x x x F x f f f x x x ????? ?

??? ? ????

????= ? ? ???? ? ??????

则有(1)()'()(1)()()()()()k k k k k F x F x F x x x ++=+-,若'()()k F x 可逆,我们得到解非线性方程组的牛顿迭代公式:(1)()'()1()[()]()k k k k x x F x F x +-=-.

注:实际上在计算过程的第k 步,往往先计算()()k F x 和'()()k F x ,再解方程组'()()()()()k k k F x x F x =- 得到()k x 后,令(1)()()k k k x x x +=+ 即可.迭代过程需要分析其收敛性、分支与混沌. 练习和分析与思考:

用牛顿迭代法解非线性方程组:

22

112322

12332221

22310702030

x x x x x x x x x x x x ?-+++=?+-=??+-+=? 五、Matlab 求解(非)线性方程组的内置工具箱 1.线性方程组求解

(1)直接求解:线性方程组Ax b =,解法\,x A b =(注意:此处\不是/符号)

若A 为方阵,()*x inv A b =,若A 不是方阵,()*.x pinv A b = 练习和分析与思考:

求方程组的解.

12123234345

45561560560560

51

x x x x x x x x x x x x x +=??++=??

++=??++=?+=?? (2)利用矩阵分解求解线性方程组

矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积.常见的矩阵分解有LU 分解、QR 分解、Cholesky 分解以及Schur 分解、Hessenberg 分解、奇异分解等.

LU 分解:矩阵的LU 分解就是将一个矩阵表示为一个交换下三角矩阵和一个上三角矩阵的乘积形式.只要方阵A 非奇异,矩阵的LU 分解总是可以进行的.

Matlab 提供的lu 函数用于对矩阵进行LU 分解,其调用格式为:

[L,U]=lu(A):产生一个上三角阵U 和一个变换形式的下三角矩阵L (行交换)使之满足A=LU ,注意:这里的矩阵A 必须是方阵.

[L,U,P]=lu(A): 产生一个上三角阵U 和一个变换形式的下三角矩阵L 以及一个置换矩阵P 使之满足PA=LU ,注意:这里的矩阵A 必须是方阵.

实现LU 分解后,线性方程组Ax b =的解为:\(\)\(\).x U L b x U L Pb ==或 QR 分解:矩阵的QR 分解就是将一个矩阵A 分解成一个正交矩阵Q 和一个上三角矩阵R 的乘积形式. QR 分解只能对方阵进行. Matlab 的函数qr 用于对矩阵进行QR 分解,其调用格式为:

[Q,R]=qr(A):产生一个正交矩阵Q 和一个上三角矩阵R 使之满足A=QR . [Q,R,E]=qr(A): 产生一个正交矩阵Q 和一个上三角矩阵R 以及一个置换矩 阵E 使之满足AE=QR 方阵.

实现QR 分解后,线性方程组Ax b =的解为:\(\)(\(\)).x R Q b x E R Q b ==或 Cholesky 分解:如果矩阵A 是对称正定的,则Cholesky 分解将矩阵A 分解成一个下三角矩阵R 和上三角矩阵的乘积R’(R 的转置),即A= R’R . Matlab 的函数

chol(A)用于对矩阵进行Cholesky 分解,其调用格式为:

R=chol(A):产生一个上三角矩阵R 使之满足A=R ’R .若矩阵A 不是对称正定 的,则输出一个出错信息.

[R,p]=chol(A): 这个命令格式不输出出错信息. 当A 是对称正定的,则p=0,R 与上述格式得到的结果相同,否则p 为一个正整数,如果A 为满秩矩阵,则R 为一个阶数为q=p-1的上三角阵,且满足R ’R=A(1:q,1:q).

实现Cholesky 分解后, Ax b =变为'R Rx b =,所以'\(\).x R R b = 2.单变量非线性方程求解

Matlab 的函数fzero 可用于对矩阵求单变量非线性方程的根,其调用格式为:z=fzero(‘fname’,x0,tol,trace)

其中fname 是待求根的函数文件名,x0为搜索起点,一个函数可能有多个根,但fzero 函数只给出离x0最近的那个根.tol 控制结果的相对精度,缺省时取tol=eps,trace 指定迭代信息是否在运算中显示,为1时显示,为0时不显示,缺省时trace=0. 练习和分析与思考:

求()102x f x x =-+在00.5x =附近的根. 3.非线性方程组的求解

对于非线性方程组()0F x =用fsolve 函数求其数值解.fsolve 函数的调用格式为:x=fsolve (‘f un ’,x0,option)

其中x 为返回的解,fun 用于定义需求解的非线性方程组的函数文件名,x0是求根过程的初值,option 为最优化工具箱的选项设定.最优化工具箱提供了20多个选项,用户可以使用optimset 命令将它们显示出来.如果想改变其中某个选项,可以调用optimset()函数来完成.例如optimset(‘display’,’off’). 六、实例赏析

matlab解方程组

matlab解方程组 lnx表示成log(x) 而lgx表示成log10(x) 1-exp(((log(y))/x^0.5)/(x-1)) 1、解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB 中有两种方法: (1)x=inv(A)*b —采用求逆运算解方程组; (2)x=A\B —采用左除运算解方程组 PS:使用左除的运算效率要比求逆矩阵的效率高很多~ 例: x1+2x2=8 2x1+3x2=13 >>A=[1,2;2,3];b=[8;13]; >>x=inv(A)*b x = 2.00 3.00 >>x=A\B x = 2.00 3.00; 即二元一次方程组的解x1和x2分别是2和3。 对于同学问到的用matlab解多次的方程组,有符号解法,方法是:先解出符号解,然后用vpa(F,n)求出n位有效数字的数值解.具体步骤如下: 第一步:定义变量syms x y z ...; 第二步:求解[x,y,z,...]=solve('eqn1','eqn2',...,'eqnN','var1','var2',...'varN'); 第三步:求出n位有效数字的数值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);...。 如:解二(多)元二(高)次方程组: x^2+3*y+1=0 y^2+4*x+1=0 解法如下: >>syms x y; >>[x,y]=solve('x^2+3*y+1=0','y^2+4*x+1=0'); >>x=vpa(x,4); >>y=vpa(y,4); 结果是:

试验5线性代数方程组的数值解法

实验6 线性代数方程组的数值解法 [实验目的] 1. 1. 学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析; 2. 2. 通过实例学习用线性代数方程组解决简化的实际问题。 [实验内容] 5-5 输电网络:一种大型输电网络可简化为图5.5(见书)所示电路, 其中R 1,R 2,…,R n 表示负载电阻,r 1,r 2,…,r n 表示线路内阻,I 1,I 2,…,I n 表示负载上的电流。设电源电压为V 。 (1)列出求各负载电阻R 1,R 2,…,R n 的方程; (2)设I 1=I 2=…=I n =I ,r 1=r 2=…=r n =r ,在r=1,I=0.5,V=18,n=10的情况下求R 1,R 2,…,R n 及总电阻R 0。 [问题分析、模型建立及求解] (1) 设电源负极为电势为0,电阻R 1上对应节点电压为V 1,对于任意节点,根据KCL 定律列出方程: 11 1++----=k k k k k k k k r V V r V V R V 而 k k k R V I =,可得: 111111)(++++--++-= k k k k k k k k k k k k R r I R r I r I R r I I k=2,3,……,n-1; k=1时 2221211R r I R r I I +- =,为与上式形式一致,化为 22212111111)(R r I R r I r I r V I +--=- k=m (12-≤≤n m )时 111111)(++++--+--+= m m m n m m m m m m m m R r I R r I r I R r I I k=n 时 n n n n n n n R r I R r I I -= --11 设以上方程组的矩阵形式为:b AR = 则 []T n R R R R 21=

第七讲 MATLAB中求方程的近似根(解)

第七讲MATLAB中求方程的近似根(解) 教学目的:学习matlab中求根命令,了解代数方程求根求解的四种方法,即图解法、准解析法、数值方法以及迭代方法,掌握对分法、迭代法、牛顿切法线求方程近似根的基本过程;掌握求代数方程(组)的解的求解命令. 教学重点:求方程近似解的几种迭代方法,代数方程(组)的解的求解命令的使用方法.利用所学的编程知识,结合具体的实例,编制程序进行近似求根.掌握相关的代数方程(组)的求解命令及使用技巧. 教学难点:方程的近似求解和非线性方程(组)的求解. 一、问题背景和实验目的 求代数方程0 x f的根是最常见的数学问题之一(这里称为代数方程,主要是想和 (= ) 后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当) f为线性方程,否则称之为非线性方程.(x (= x ) f是一次多项式时,称0 当0 (x f的多样性,尚无一般的解析解法可使用,但如f是非线性方程时,由于) ) x (= 果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.同时对于多未知量非线性方程(组)而言,简单的迭代法也是可以做出来的,但在这里我们介绍相关的命令来求解,不用迭代方法求解. 通过本实验,达到下面目的: 1. 了解对分法、迭代法、牛顿切线法求方程近似根的基本过程; 2. 求代数方程(组)的解. 首先,我们先介绍几种近似求根有关的方法: 1.对分法 对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根. 设) a f ?b f,即()0 f a>,()0 f a<,()0 f b<或()0 f b>.则 ) , (< (x [b f在] a上连续,0 ( ) 根据连续函数的介值定理,在) fξ=. a内至少存在一点ξ,使()0 , (b 下面的方法可以求出该根:

线性方程组的直接解法 实验报告

本科实验报告 课程名称:数值计算方法B 实验项目:线性方程组的直接解法 最小二乘拟合多项式 实验地点:ZSA401 专业班级:学号:201000 学生姓名: 指导教师:李志 2012年4月13日

线性方程组的直接解法 一、实验目的和要求 实验目的:合理利用Gauss 消元法、LU 分解法或追赶法求解方程组。 实验要求:利用高斯消元法,LU 分解法或追赶法进行编程,求解题中所给的方程组。 二、实验内容和原理 实验内容:合理利用Gauss 消元法、LU 分解法或追赶法求解下列方程组: ① ?? ?? ? ?????=????????????????????13814142210321321x x x ②??? ? ?? ??????=????????????????????? ?? ? ??--?-2178.4617.5911212592.1121130.6291.513 14 .59103.043 2115x x x x ③?? ??? ??? ? ???????----=????????????????????????????????-55572112112112121 n n x x x x (n=5,10,100,…) 实验原理:这个实验我选用的是高斯消元法。高斯消元法:先按照 L ik =a ik^(k-1)/a kk^(k-1) , a ij^(k)=a ij^(k-1)-l ik a kj^(k-1) [其中k=1,2,…,n-1;i=k+1,k+2,…,n;j=k+1,k+2,…,n+1] 将方程组变为上三角矩阵,再经过回代,即可求解出方程组的解。 三.计算公式 通过消元、再回代的求解方法称为高斯消元法。特点是始终消去主对角线 下方的元素。 四、操作方法与实验步骤 #include "Stdio.h" #define N 3 main() { double a[N][N+1],b[N]; int i,j,k,x=0; for(i=0;i

MATLAB 微分代数方程解法Microsoft Word 文档

微分代数方程(DAE)的Matlab解法 所谓微分代数方程,是指在微分方程中,某些变量满足某些代数方程的约束。假设微分方程的更一般形式 可以写成 前面所介绍的ODEs数值解法主要针对能够转换为一阶常微分方程组的类型,故DAE就无法使用前面介绍的常微分方程解法直接求解,必须借助DAE的特殊解法。 其实对于我们使用Matlab求解DAE时,却没有太大的改变只需增加一个Mass参数即可。描述f(t,x)的方 法和普通微分方程完全一致。 注意:ode15i没法设置Mass属性,换句话说除了ode15i外其他ode计算器都可以求解DAEs问题1.当M(t,y)非奇异的时候,我们可以将微分方程等效的转换为y'=inv(M)*f(t,y),此时就是一个普通的ODE(当 然我们可以将它当成DAEs处理),对任意一个给定的初值条件都有唯一的解 2.当m(t,y)奇异时,我们叫它为DAEs(微分代数方程),DAEs问题只有在同时提供状态变量初值y0和状态变量一阶导数初值py0,且满足M(t0,y0)*yp0=f(t0,y0)时才有唯一解,假如不满足上面的方程,DAEs解算器会将提供的y0和py0作为猜测初始值,并重新计算与提供初值最近的封闭初值 3.质量矩阵可是一个常数矩阵(稀疏矩阵),也可以是一个自定义函数的输出。但是ode23s只能求解Mass 是常数的DAEs 4.对于Mass奇异的DAEs问题,特别是设置MassSingular为yes时,只能ode15s和ode23t解算器 5.对于DAE我们还有几个参数需要介绍 a.Mass:质量矩阵,不说了,这个是DAE的关键,后面看例子就明白了 b.MStateDependence:质量矩阵M(t,y)是否是y的函数,可以选择none|{weak}|strong,none表示M与 y无关,weak和strong都表示与y相关 c.MvPattern:注意这个必须是稀疏矩阵,S(i,j)=1表示M(t,y)的第i行中任意元素都与第j个状态变量yi有 关,否则为0 d.MassSingular:设置Mass矩阵是否奇异,当设置为yes时,只能使用ode15s和ode23t e.InitialSlope:状态变量的一阶导数初值yp0,和y0具有相同的size,当使用ode15s和ode23t时,该属 性默认为0 下面我们以实例说明,看下面的例子,求解该方程的数值解 【解】 真是万幸,选取状态变量和求状态变量的一阶导数等,微分方程转换工作,题目已经帮我们完成。 可是细心的网友会发现,最后一个方程不是微分方程而是一个代数方程(这就是为什叫DAE的原因),其实 我们可以将它视为对三个状态变量的约束。 (1)用矩阵形式表示出该DAEs

matlab-解方程

1、解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MA TLAB中有两种方法: (1)x=inv(A)*b —采用求逆运算解方程组; (2)x=A —采用左除运算解方程组。 例: x1+2x2=8 2x1+3x2=13 >>A=[1,2;2,3];b=[8;13]; >>x=inv(A)*b x = 2.00 3.00 >>x=A x = 2.00 3.00; 即二元一次方程组的解x1和x2分别是2和3。 对于同学问到的用matlab解多次的方程组,有符号解法,方法是:先解出符号解,然后用vpa(F,n)求出n 位有效数字的数值解.具体步骤如下: 第一步:定义变量syms x y z ...; 第二步:求解[x,y,z,...]=solve('eqn1','eqn2',...,'eqnN','var1','var2',...'varN'); 第三步:求出n位有效数字的数值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);...。 如:解二(多)元二(高)次方程组: x^2+3*y+1=0 y^2+4*x+1=0 解法如下: >>syms x y; >>[x,y]=solve('x^2+3*y+1=0','y^2+4*x+1=0'); >>x=vpa(x,4); >>y=vpa(y,4); 结果是: x = 1.635+3.029*i 1.635-3.029*i -.283 -2.987 y = 1.834-3.301*i 1.834+3.301*i -.3600 -3.307。 二元二次方程组,共4个实数根;

matlab实验报告--求代数方程的近似根

数学实验报告 实验序号: 第二次 日期:2012 年 5月10日 班级 0920861 小组成员姓名 徐易斌;王勇 王康 学号 30 12 33 实验名称:求代数方程的近似根 问题背景描述: 求代数方程0)(=x f 的根是最常见的数学问题之一,当)(x f 是一次多项式时,称0)(=x f 为线性方程,否则称之为非线性方程. 当0)(=x f 是非线性方程时,由于)(x f 的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求. 本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间],[b a ,或给出某根的近似值0x .

实验目的: 1. 了解代数方程求根求解的四种方法:对分法、迭代法、牛顿切线法 2. 掌握对分法、迭代法、牛顿切线法求方程近似根的基本过程。 实验原理与数学模型: 1.对分法 对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根. 设)(x f 在],[b a 上连续,0)()(,()0f b <或()0f a <,()0f b >.则根据连续函数的介值定理,在),(b a 内至少存在一点 ξ,使()0f ξ=. 下面的方法可以求出该根: (1) 令02 a b x +=,计算0()f x ; (2) 若0()0f x =,则0x 是()0f x =的根,停止计算,输出结果0x x =. 若 0()()0f a f x ?<,则令1a a =,10b x =,若0()()0f a f x ?>,则令10a x =,1b b =;11 12 a b x +=. ……,有k a 、k b 以及相应的2 k k k a b x += . (3) 若()k f x ε≤ (ε为预先给定的精度要求),退出计算,输出结果2 k k k a b x +=; 反之,返回(1),重复(1),(2),(3). 以上方法可得到每次缩小一半的区间序列{[,]}k k a b ,在(,)k k a b 中含有方程的根. 当区间长k k b a -很小时,取其中点2 k k k a b x += 为根的近似值,显然有 1111111 ()()()2222 k k k k k k x b a b a b a ξ--+-≤-=??-==- 以上公式可用于估计对分次数k . 2. 迭代法 1) 迭代法的基本思想: 由方程()0f x =构造一个等价方程

用Matlab解代数方程

一般的代数方程 函数solve用于求解一般代数方程的根,假定S为符号表达式,命令solve (S)求解表达式等于0的根,也可以再输入一个参数指定未知数。例: syms a b c x S=a*x^2+b*x+c; solve(S) ans= [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))] b=solve(S,b) b = -(a*x^2+c)/x

线性方程组 线性方程组的求解问题可以表述为:给定两个矩阵A和B,求解满足方程AX=B或XA=B的矩阵X。方程AX=B的解用X=A\B或X=inv (A)*B表示;方程XA=B 的解用X=B/A或X=B*inv (A)表示。不过斜杠和反斜杠运算符计算更准确,占用内存更小,算得更快。

线性微分方程 函数dsolve用于线性常微分方程(组)的符号求解。在方程中用大写字母D表示一次微分,D2,D3分别表示二阶、三阶微分,符号D2y相当于y关于t的二阶导数。 函数dsolve的输出方式 格式说明 y=dsolve(‘Dyt=y0*y’) 一个方程,一个输出参数[u,v]=dsolve(‘Du=v’,’Dv=u’) 两个方程,两个输出 参数 S=dsolve(‘Df=g’,’Dg=h’,’Dh=-2*f ‘)方程组的解以S.f S.g S.h结构数组的形式输出

例1 求 2 1u dt du += 的通解. 解 输入命令:dsolve('Du=1+u^2','t') 结 果:u = tg(t-c) 例2 求微分方程的特解. ???íì===++15 )0(',0)0(029422 y y y dx dy dx y d 解输入命令: y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x') 结果为: y =3e -2x sin (5x )

线性代数方程组求解

线性代数方程组求解 一、实验要求 编程求解方程组: 方程组1: 方程组2: 方程组3: 要求: 用C/C++语言实现如下函数: 1.bool lu(double* a, int* pivot, int n); 实现矩阵的LU分解。 pivot为输出参数,pivot[0,n)中存放主元的位置排列. 函数成功时返回false,否则返回true。 2.bool guass(double const* lu, int const* p, double* b, int n);

求线代数方程组的解 设矩阵Lunxn 为某个矩阵anxn 的LU 分解,在内存中按行优先次序存放。p[0,n)为LU 分解的主元排列.b 为方程组Ax=b 的右端向量.此函数计算方程组Ax=b 的解,并将结果存放在数组b [0,n )中.函数成功时返回false ,否则返回true 。 3。 void qr(double* a , double * d, int n);矩阵的QR 分解 假设数组anxn 在内存中按行优先次序存放。此函数使用HouseHolder 变换将其就地进行QR 分解。 d 为输出参数,d [0,n) 中存放QR 分解的上三角对角线元素。 4。 bool hshld(double const*qr , double const*d, double*b , int n); 求线代数方程组的解 设矩阵qrnxn 为某个矩阵anxn 的QR 分解,在内存中按行优先次序存放。d [0,n ) 为QR 分解的上三角对角线元素。b 为方程组Ax=b 的右端向量。 函数计算方程组Ax=b 的解,并将结果存放在数组b[0,n)中。 函数成功时返回false ,否则返回true 。 二、问题分析 求解线性方程组Ax=b ,其实质就是把它的系数矩阵A 通过各种变换成一个下三角或上三角矩阵,从而简化方程组的求解。因此,在求解线性方程组的过程中,把系数矩阵A 变换成上三角或下三角矩阵显得尤为重要,然而矩阵A 的变换通常有两种分解方法:LU 分解法和QR 分解法。 1、LU 分解法: 将A 分解为一个下三角矩阵L 和一个上三角矩阵U,即:A=LU , 其中 L=??????? ?????1001 00 12121 n n l l l , U=? ? ??? ? ??????nn n n u u u u u u 000 00222112 11 2、QR 分解法: 将A 分解为一个正交矩阵Q 和一个上三角矩阵R,即:A=QR 三、实验原理 解Ax=b 的问题就等价于要求解两个三角形方程组: ⑴ Ly=b,求y; ⑵ Ux=y,求x 。 设A 为非奇异矩阵,且有分解式A=LU , L 为单位下三角阵,U 为上三角

实验报告—代数方程与微分方程求解

实 验 报 告 四 代数方程求解 1、【示例】以下命令可求出方程 (x +1)e –x +e x sin x =0在0附近的一个根: >>y=sym('(x+1)*exp(-x)+exp(x)*sin(x)'); % 用sym 命令定义符号表达式 >>x=solve(y,'x') % 用准解析方法求出方程最接近0的一个根 x =-0.86508244315736795185621568221837 或可用以下命令求解该方程以指定点为初始搜索点的数值解: >> y=inline('(x+1)*exp(-x)+exp(x)*sin(x) ', 'x'); % 用数值方法求解时,方程要用inline 命令定义 >> x=fsolve(y,0) % 用数值方法从初始点1开始搜索方程的近似解 x = -0.8651 注:准解析命令solve 只能求出方程最接近0的一个实数根,而数值解法fsolve 可以通过初始搜索点的变化,得到不同的解(如果方程有多个实数解)。 【要求】仿照示例,用准解析方法求出30.5sin(42)4cos(2)0.5t t e t e t --++=的一个根;再用数值方法分别求该方程在-0.6和3附近的两个根。 y=sym('exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5'); t=solve(y,'t') t =0.67374570500134756702960220427474 y=inline('exp(-3*t).*sin(4*t+2)+4*exp(-0.5*t).*cos(2*t)-0.5','t'); t=fsolve(y,0.6) t = 0.6737 y=inline('exp(-3*t).*sin(4*t+2)+4*exp(-0.5*t).*cos(2*t)-0.5','t'); t=fsolve(y,3) t = 2.5937 2、【示例】以下命令可求解非线性方程组339820 x y x x y ?+-=?+-=? >> eq1=sym('x^3+y^3-x-98'); % 定义第一个方程表达式 >> eq2=sym('x+y-2'); % 定义第二个方程表达式 >> [x,y]=solve(eq1,eq2) % 解方程组(用准解析方法) x = 13/12+1/12*2329^(1/2) 13/12-1/12*2329^(1/2) y = 11/12-1/12*2329^(1/2) 11/12+1/12*2329^(1/2) 或可用以下命令求解上述方程组以指定点为初始搜索点的数值解: >> f=inline('[x(1) ^3+x(2) ^3-x(1)-98; x(1)+x(2)-2]', 'x'); % 用inline 命令定义方程组 >> x=fsolve(f,[1;1]) % 用数值方法从初始点(1,1)开始搜索方程组的一个近似解 x =

线性代数方程组的直接解法赖志柱

第二章线性代数方程组的直接解法 教学目标: 1.了解线性代数方程组的结构、基本理论以及相关解法的发展历程; 2.掌握高斯消去法的原理和计算步骤,理解顺序消去法能够实现的条件,并在此基础上理解矩阵的三角分解(即LU分解),能应用高斯消去法熟练计算简单的线性代数方程组; 3.在理解高斯消去法的缺点的基础上,掌握有换行步骤的高斯消去法,从而理解和掌握选主元素的高斯消去法,尤其是列主元素消去法的理论和计算步骤,并能灵活的应用于实际中。 教学重点: 1. 高斯消去法的原理和计算步骤; 2. 顺序消去法能够实现的条件; 3. 矩阵的三角分解(即LU分解); 4. 列主元素消去法的理论和计算步骤。 教学难点: 1. 高斯消去法的原理和计算步骤; 2. 矩阵的三角分解(即LU分解); 3. 列主元素消去法的理论和计算步骤。 教学方法: 教具: 引言 在自然科学和工程技术中,许多问题的解决常常归结为线性方程组的求解,有的问题的数学模型中虽不直接表现为线性方程组,但它的数值解法中将问题“离散化”或“线性化”为线性方程组。例如,电学中的网络问题、船体数学放样中建立三次样条函数问题、最小二乘法用于求解实验数据的曲线拟合问题、求解非线性方程组问题、用差分法或有限元法求解常微分方程边值问题及偏微分方程的定解问题,都要导致求解一个或若干个线性方程组的问题。 目前,计算机上解线性方程组的数值方法尽管很多,但归纳起来,大致可以分为两大类:一类是直接法(也称精确解法);另一类是迭代法。例如线性代数中的Cramer法则就是一种直接法,但其对高阶方程组计算量太大,不是一种实用的算法。实用的直接法中具有代表性的算法是高斯(Gauss)消元法,其它算法都是它的变形和应用。 在数值计算历史上,直接法和迭代法交替生辉。一种解法的兴旺与计算机的硬件环境和问题规模是密切相关的。一般说来,对同等规模的线性方程组,直接法对计算机的要求高于迭代法。对于中、低阶(200 n )以及高阶带形的线性方程组,由于直接法的准确性和可靠性高,一般都用直接法求解。对于一般高阶方程组,特别是系数矩阵为大型稀疏矩阵的线性方程组用迭代法有效。

线性代数方程组的数值解法

线性代数方程组的数值解法 【实验目的】 1. 学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析; 2. 通过实例学习用线性代数方程组解决简化的实际问题。 【实验内容】 【题目1】 通过求解线性方程组11b x A = 和22b x A =,理解条件数的意义和方程组的性态对解 的影响。其中1A 是n 阶范德蒙矩阵,即 1A =???? ? ? ?????? ??------1121 1 112 111 2 00111n n n n n n x x x x x x x x x ,k x k 1.01+=,1, (1) 0-=n k 2A 是n 阶希尔伯特矩阵,1b ,2b 分别是1A ,2A 的行和。 (1)编程构造1A (2A 可直接用命令产生)和1b ,2b ;你能预先知道方程组1 1b x A =和22b x A = 的解吗?令n=5,用左除命令求解(用预先知道的解可检验程序) 。 (2)令n=5,7,9,…,计算1A ,2A 的条件数。为观察它们是否病态,做以下试验:1b ,2b 不变,1A 和2A 的元素),(1n n A ,),(2n n A 分别加扰动ε后求解;1A 和2A 不变,1b ,2b 的 分量)(1n b ,)(2n b 分别加扰动ε求解。分析A 和b 的微小扰动对解的影响。ε取1010-,810-,610-。 (3)经扰动得到的解记做x ~,计算误差 x x x ~-,与用条件数估计的误差相比较。 1.1构造1A ,2A 和1b ,2b 首先令n=5,构造出1A ,2A 和1b ,2b 。首先运行以下程序,输出1A 。

MATLAB Jacobi法解线方程组

Jacobi 法解线性代数方程组 Jacobi 法解线性代数方程组算法: Step 1取初始点)0(x ,精度要求eps Step 2若ε>-∞+) ()1(k k x x 转到Step 3 否则转到Step 4 Step 3用下式计算:b D x U L D x k k 1)(1)1()(--+++=转到Step 2 Step 4停止计算()1(+k x 作为线性方程组的解) Step 5 )22(6 43211k k k k h y y n n ++++ =+ Jacobi 法解线性代数方程组程序: function Jacobi(A,b,x0,eps) %A----线性方程组系数矩阵 %b----线性方程组的解(列向量) %x0---初始迭代点 %D----A 对角阵 %e----取误差(计算范数) D=diag(diag(A)); D=inv(D);%D 取自己的逆矩阵 L=tril(A,-1);%取下三角阵 U=triu(A,1);%取上三角阵 B=-D*(L+U); f=D*b; e=1000; while e>=eps x=B*x0+f; e=norm(x-x0); x0=x; end x

例:用Jacobi 迭代法解下列线性方程组 ???? ??????=????????????????????-1166122111221321x x x 输入:A=[1 2 -2;1 1 1;2 2 1]; b=[6;6;11]; x0=[0;0;0]; eps=1e-3; Jacobi(A,b,x0,eps) 得到: x = 2 3 1 指导教师: 年 月 日

matlab求解代数方程组解析

第三讲 Matlab 求解代数方程组 理论介绍:直接法+迭代法,简单介绍相关知识和应用条件及注意事项 软件求解:各种求解程序 讨论如下表示含有n 个未知数、由n 个方程构成的线性方程组: 1111221121122222 1122n n n n n n nn n n a x a x a x b a x a x a x b a x a x a x b +++=??+++=??? ?+++=? (1) 一、直接法 1.高斯消元法: 高斯消元法的基本原理: 在(1)中设110,a ≠将第一行乘以1 11 ,k a a - 加到第(2,3,,),k k n = 得: (1)(1)(1)(1)11112211(2)(1)(2) 22112 (2)(2)(2)22n n n n n nn n n a x a x a x b a x a x b a x a x b ?+++=?++=??? ?++=? (2) 其中(1) (1)1111,.k k a a b b ==再设(2)22 0,a ≠将(2)式的第二行乘以(2)2 (2)22 ,(3,,)k a k n a -= 加到第k 行,如此进行下去最终得到: (1)(1)(1)(1)11112211(2)(1)(2) 22112(1)(1)(1) 1,111,1()() n n n n n n n n n n n n n n n n nn n n a x a x a x b a x a x b a x a x b a x b --------?+++=?++=? ? ??+=? ?=? (3) 从(3)式最后一个方程解出n x ,代入它上面的一个方程解出1n x -,并如此进行 下去,即可依次将121,,,,n n x x x x - 全部解出,这样在() 0(1,2,,)k kk a k n ≠= 的假设 下,由上而下的消元由下而上的回代,构成了方程组的高斯消元法. 高斯消元法的矩阵表示: 若记11(),(,,),(,,)T T ij n n n n A a x x x b b b ?=== ,则(1)式可表为.Ax b =于是高斯

代数方程组和微分方程组的求解

代数方程组和微分方程组的求解

微分方程组和代数方程组的符号解代数方程组的符号求解代数方程组的符号求解函数为solve 函数,函数调用格式为 其中fun1, fun2,…为符号表达式。var1,var2,….为符号变量,指明所求解的变量。如果不指明所求解的变量,则系统根据变量在英文字母中与x 的接近程度选择。 ) var ,,2var ,1var ,,,2,1(m funm fun fun solve x =solve 函数还有另一种调用形式 其中是字符串,定义方程。也是字符串,指明所求解的变量。 ) var ,,2var ,1var ,,,2,1(m eqm eq eq solve x =

例:求解线性方程组 ?? ???=++=++=++32 1az y x z ay x z y ax 参考程序 syms x y z a [u,v,w]=solve(a*x+y+z-1,x+a*y+z-2,x+y+a*z-3,x,y,z) u = (a -4)/(a^2 + a -2) v = 2/(a + 2) w = (3*a)/(a^2 + a -2)

也可以利用下面的语句求解 >> s=solve('a*x+y+z-1','x+a*y+z-2','x+y+a*z-3','x','y','z') s = x: [1x1 sym] y: [1x1 sym] z: [1x1 sym] 其中,s是结构形数据。可以用下面的方法显示求得的解 >> s.x ans= (a -4)/(a^2 + a –2) 方程组的符号求解得到的是解析式。其优点是可以得到含未知参数的解,有利于进一步的分析。缺点是计算效率低,且复杂的问题一般得不到解析解。

matlab实验报告--求代数方程近似根1

数学实验报告 实验序号:第二次 日期:2012年5月10日班级0920861小组成员姓名徐易斌;王勇王康 学号 301233实验名称:求代数方程的近似根 问题背景描述: 求代数方程0)(=x f 的根是最常见的数学问题之一,当)(x f 是一次多项式时,称0)(=x f 为线性方程,否则称之为非线性方程. 当0)(=x f 是非线性方程时,由于)(x f 的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求. 本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间],[b a ,或给出某根的近似值0x .

实验目的: 1.了解代数方程求根求解的四种方法:对分法、迭代法、牛顿切线法 2.掌握对分法、迭代法、牛顿切线法求方程近似根的基本过程。 实验原理与数学模型: 1.对分法 对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根. 设)(x f 在],[b a 上连续,0)()(,()0f b <或()0f a <,()0f b >.则根据连续函数的介值定理,在),(b a 内至少存在一点ξ,使()0f ξ=. 下面的方法可以求出该根: (1)令02 a b x +=,计算0()f x ;(2)若0()0f x =,则0x 是()0f x =的根,停止计算,输出结果0x x =. 若0()()0f a f x ?<,则令1a a =,10b x =,若0()()0f a f x ?>,则令10a x =,1b b =;1112 a b x += .……,有k a 、k b 以及相应的2k k k a b x +=.(3)若()k f x ε≤(ε为预先给定的精度要求),退出计算,输出结果2 k k k a b x += ;反之,返回(1),重复(1),(2),(3).以上方法可得到每次缩小一半的区间序列{[,]}k k a b ,在(,)k k a b 中含有方程的根. 当区间长k k b a -很小时,取其中点2k k k a b x += 为根的近似值,显然有1111111()()()2222 k k k k k k x b a b a b a ξ--+-≤-=??-==- 以上公式可用于估计对分次数k .2.迭代法 1)迭代法的基本思想:

线性代数方程组数值解法及MATLAB实现综述汇总

线性代数方程组数值解法及MATLAB 实现综述 廖淑芳 20122090 数计学院 12计算机科学与技术1班(职教本科) 一、分析课题 随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。其数值计算中线性代数方程的求解问题就广泛应用于各种工程技术方面。因此在各种数据处理中,线性代数方程组的求解是最常见的问题之一。关于线性代数方程组的数值解法一般分为两大类:直接法和迭代法。 直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。 迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。迭代法包括Jacobi 法SOR 法、SSOR 法等多种方法。 二、研究课题-线性代数方程组数值解法 一、 直接法 1、 Gauss 消元法 通过一系列的加减消元运算,也就是代数中的加减消去法,以使A 对角线以下的元素化为零,将方程组化为上三角矩阵;然后,再逐一回代求解出x 向量。 1.1消元过程 1. 高斯消元法(加减消元):首先将A 化为上三角阵,再回代求解。 1112112122 2212n n n n nn n a a a b a a a b a a a b ?? ? ? ? ??? (1)(1)(1) (1)111213 11(2)(2)(2)(2 ) 222322(3)(3)(3) 3333()()000000n n n n n nn n a a a a b a a a b a a b a b ?? ? ? ? ? ? ??? 步骤如下:

数学实验 5:线性代数方程组的数值解法

实验 5:线性代数方程组的数值解法 习题3: 已知方程组Ax b =,其中20*20 A R ∈,定义为: 3 1/21/41/231/21/41/41/231/21/41/41/231/21/4 1/23--????---? ???---??-???? ---?? --? ? 试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对 收敛速度的影响。实验要求: (1) 选取不同的初始向量x0和不同的方程组右端向量b ,给定迭代误差要求,用雅可比 迭代法和高斯-赛德尔迭代法计算,观测得到的迭代向量序列是否均收敛?若收敛,记录迭代次数,分析计算结果并得出结论; (2) 取定右端向量b 和初始向量x0,将A 的主对角线元素成倍的增长若干次,非主对角 元素不变,每次用雅可比迭代法计算,要求迭代误差满足(1)()5 ||||10k k x x +-∞-<,比 较收敛速度,分析现象并得出结论。 1、 程序设计(可直接粘贴运行) 1) Jacobi 迭代法 function y=jacobi(a,b,x0,e,m) %定义jacobi 函数,其中:a,b 为线性方程组Ax b =中的矩阵和右端向量;x0为初始值; %e 和m 分别为人为设定的精度和预计迭代次数;运行结果y 为迭代的结果和所有中间值组成的 %矩阵 y=0; %对y 初始化 d=diag(diag(a)); %按雅可比迭代标准形形式取主对角元素作为矩阵D u=-triu(a,1); %取上三角矩阵u l=-tril(a,-1); %取下三角矩阵l bj=d^-1*(l+u); fj=d^-1*b; x=[x0,zeros(20,m-1)]; %初始化x,其中x1=x0,即初始值 for k=1:m %人为规定迭代次数,防止不收敛迭代导致死循环 x(:,k+1)=bj*x(:,k)+fj; %jacobi 迭代 if norm(x(:,k+1)-x(:,k),inf)

matlab中方程根的近似计算

实验一方程根的近似计算 一、问题 求非线性方程的根 二、实验目的 1、学会使用matlab中内部函数roots、solve、fsolve、fzero求解方程,并用之解决实际问题。 4、熟悉Matlab的编程思路,尤其是函数式M文件的编写方法。 三、预备知识 方程求根是初等数学的重要内容之一,也是科学和工程中经常碰到的数值计算问题。它的一般形式是求方程f(x)=0的根。如果有x*使得f(x*)=0,则称x*为f(x)=0的根,或函数f(x)的零点。并非所有的方程都能求出精确解或解析解。理论上已经证明,用代数方法可以求出不超过3次的代数方程的解析解,但对于次数大于等于5的代数方程,没有代数求根方法,即它的根不能用方程系数的解析式表示。至于超越方程,通常很难求出其解析解。不存在解析解的方程就需要结合具体方程(函数)的性质,使用作图法或数值法求出近似解。而计算机的发展和普及又为这些方法提供了广阔的发展前景,使之成为科学和工程中最实用的方法之一。下面介绍几种常见的求近似根的方法。 1. 求方程近似解的简单方法 1.1 图形方法—放大法求根

图形的方法是分析方程根的性态最简洁的方法。不过,不要总是想得到根的精确值。这些值虽然粗糙但直观,多少个根,在何范围,一目了然。并且还可以借助图形局部放大功能,将根定位得更加准确一些。 例1.1 求方程x5+2x2+4=0的所有根及其大致分布范围。 解 (1)画出函数f(x)=x5+2x2+4的图形,确定方程的实数根的大致范围。为此,在matlab命令窗中输入 clf ezplot x-x, grid on hold on ezplot('x^5+2*x^2+4',[-2*pi,2*pi]) 1-1 函数f(x)=x5+2x2+4的图形

相关文档
相关文档 最新文档