基于matlab的数学实验线代中的若干问题.docx

上传人:b****2 文档编号:2089406 上传时间:2022-10-26 格式:DOCX 页数:14 大小:226.57KB
下载 相关 举报
基于matlab的数学实验线代中的若干问题.docx_第1页
第1页 / 共14页
基于matlab的数学实验线代中的若干问题.docx_第2页
第2页 / 共14页
基于matlab的数学实验线代中的若干问题.docx_第3页
第3页 / 共14页
基于matlab的数学实验线代中的若干问题.docx_第4页
第4页 / 共14页
基于matlab的数学实验线代中的若干问题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

基于matlab的数学实验线代中的若干问题.docx

《基于matlab的数学实验线代中的若干问题.docx》由会员分享,可在线阅读,更多相关《基于matlab的数学实验线代中的若干问题.docx(14页珍藏版)》请在冰豆网上搜索。

基于matlab的数学实验线代中的若干问题.docx

基于matlab的数学实验线代中的若干问题

基于MATLAB的数学实验

——线性代数中的若干问题

(二)

2.1引言

用迭代法(Iteration)寻求问题的答案,是逐步逼近思想的具体体现,其基本思想是:

不追求“一下子”得到(非)线性方程(组)的解,而是在逐步逼近方程组的精确解的迭代过程中获得满足精度要求的近似解,这一点与直接法不同;通过对问题的转化,避免(困难的)矩阵求逆运算。

在不能或者很难一下子求得结果的情况下,使用迭代法就是一种自然的选择,因此了解并学会使用迭代法是十分有益的。

在本节你将了解到

1.什么是迭代;

2.什么样的迭代是可用的;

3.线性迭代、非线性迭代以及二者的差异;

2.2 (非)线性方程的场合

数列是我们熟知的数学概念和对象,下面就是一例

      

(1)

这个数列产生于这样的过程:

从开始,计算函数在点处的值得到数列的第一项,然后将计算结果再代入函数的表达式中得到数列的第二项,数列

(1)重复这种操作(迭代)的结果,其中称为迭代的初值。

迭代公式(定义了一种迭代算法)为:

由此可见,任何函数(包括一元函数和多元函数)在其定义域内都对应一种迭代,线性函数、非线性函数确定的迭代分别称为线性迭代和非线性迭代。

面对这无穷多的迭代算法,在实际使用时如何选择呢?

下面我们通过一个具体的代数方程求根的例子来说明选择的依据和准则,

例 用迭代法求代数方程根的例子:

让我们来求如下方程的根

   

(2)

首先要确定适当的包含根的区间,这可以依据闭区间上连续函数的介值定理来确定,例如,,,所以方程

(2)至少有一个实根属于区间,图1表明区间中只含有一个根,显然方程

(2)的根不易直接求得。

图1

下面,我们采用迭代法求方程

(2)位于区间中的根,为此构造迭代算法如下(原因稍后加以说明):

  ,(3)

在区间中任取一个迭代初值,如取初值。

执行下面的程序:

EqutIteration.m:

x=[];

x

(1)=2;

n=100;

fori=1:

100;

x(i+1)=(0.3+x(i)*sin(x(i)))/(x(i)*(2.3-x(i)));

ifabs(x(i+1)-x(i))<1e-15;

break

else

N=i+1;

end

end

N

x

plot([1:

length(x)],x)

title('ITERATIONFORSOLVINGEQUATION')

gtext('CurveofIteration')

共迭代42次,得到结果如下:

2.00003.53100.23940.72330.68280.66180.65190.64730.64530.64440.64410.64390.64380.6438

0.64380.64380.64380.64380.64380.64380.64380.64380.64380.64380.64380.64380.64380.6438

0.64380.64380.64380.64380.64380.64380.64380.64380.64380.64380.64380.64380.64380.64380.6438

可以看出n=13以后,在取4位有效数字时不再变化,下图也表明了这一事实,事实上(能够证明)用迭代所求方程的根,误差不超过9.91514e-020,这是相当精确的。

图2

以上我们已经看到,按迭代算法(3)生成的数列不仅收敛而且收敛于所求方程的根,这种收敛性是对迭代算法的基本要求,下面的定理给出了迭代算法收敛的一个充分条件:

定理 设方程在上存在唯一解,是方程的等价形式,如果

1、在上连续可微;

2、对任何,;

3、,

则对任何,由迭代算法  

,           (4)

生成的序列收敛于方程在上的唯一解。

问题与实验1:

用迭代算法(3)能否求出方程

(2)的所有解?

不妨用程序EqutIteration.m先做实验,再说明原因。

问题与实验2:

就方程

(2)或选择别的例子构造不同的收敛迭代法,通过实验和比较,你可能会有所感悟。

2.3 (非)线性方程组的场合

用迭代法求解线性方程组,首先要把线性方程组写成等价的形式

       (5)

式(5)的右端称为迭代格式,由迭代格式(5)确定如下的迭代算法:

      (6)

对于给定的线性方程组,可以写成不同的(无穷多)迭代格式,有意义的(可用的)迭代格式应具有收敛性―生成的解向量序列收敛于方程组的解;而好的迭代法应具有较高的收敛速度。

关于迭代法收敛性的两个判别条件:

a、充分必要条件是:

矩阵的谱半径

b、充分条件是:

矩阵的某个算子范数。

  设是方程组(5)的解,是迭代法(6)生成的任一序列,因为

所以

   (7)

设,其中矩阵是矩阵的Jordan标准型,那么容易验证,并且

     (8)

此外,因为

        (9)

所以

   (10)

注:

迭代格式(6)所确定的迭代法收敛与否,完全由系数矩阵决定,而与常数项无关.

例 用迭代法求线性方程组根的例子:

让我们来求5阶线性方程组:

其中

A=[4.39990.6686-1.60410.5287-1.0106;

0.69005.19080.25730.21930.6145;

0.8156-1.20254.0565-0.92190.5077;

0.7119-0.01981.41513.17071.6924;

1.2902-0.1567-0.8051-0.05925.5913]

b=[-0.4326;-1.6656;0.1253;0.2877;-1.1465]

构造迭代法(Jacobi迭代法)如下:

            (5)

其中,

=

 [0-0.15200.3646-0.12020.2297

-0.13290-0.0496-0.0422-0.1184

-0.20110.296400.2273-0.1252

-0.22450.0062-0.44630-0.5338

-0.23080.02800.14400.01060]

=[-0.0983

-0.3209

0.0309

0.0907

-0.2051]

使用程序

ITERA_J:

A=[4.39990.6686-1.60410.5287-1.0106;

0.69005.19080.25730.21930.6145;

0.8156-1.20254.0565-0.92190.5077;

0.7120-0.01981.41513.17071.6924;

1.2902-0.1567-0.8051-0.05925.5913];

b=[-0.4326;-1.6656;0.1253;0.2877;-1.1465]

D=diag(diag(A));

LU=D-A;

M=D\LU;

f=D\b;

x=[];

z=[];

x(:

1)=eye(5,1);

N=2000;

fori=1:

N;

ifnorm(A*x(:

i)-b)<1e-010;

m=i;

break

else

x(:

i+1)=M*x(:

i)+f;

z=x(:

i+1);

end

end

m

e=norm(A*z-b)

plot([1:

length(x)],x)

title('JACOBIITERATIONOFLINEAREQUATIONS')

gtext('x1')

gtext('x2')

gtext('x3')

gtext('x4')

gtext('x5')

迭代42次,误差向量<7.0162e-011,并且看出23以后,在取4位有效数字时不再变化,迭代过程如图3所示。

图3

 

问题与实验3:

一元线性迭代的收敛性条件怎样表述?

问题与实验4:

在本例中,,这时迭代序列是收敛的,就本例或选择别的例子,按和构造不同的迭代法,通过实验和比较,并给出你对实验结果的解释(如关于收敛性、收敛速度等),当然这需要你首先知道矩阵范数的概念,并且对它有比较好的理解。

1.4 不动点、k循环与混沌

我们已经知道任何函数(包括一元函数和多元函数)在其定义域内都对应一种迭代,对于非线性函数迭代来说,不动点是下面所定义的—循环的特例(1—循环):

定义:

 设由迭代算法,,生成的序列具有如下性质:

(自然数集合),,,当时,

,,         (6)

那么称是由迭代算法生成的—循环。

引例 关于迭代

         (7)

实验与讨论。

容易求得迭代(7)有两个不动点:

和,图4给出了及迭代初值分别取和时,迭代收敛于的情形:

使用程序(ITERA1:

a=2;

x=[];y=[];

x

(1)=input('pleaseinputthefirsevalueofiterationx

(1)=:

');%x

(1)=0.01

y

(1)=input('pleaseinputthefirsevalueofiterationy

(1)=:

');%y

(1)=0.9

n=input('pleaseinputthetotalnumberofiterationn=:

');%n=150

fori=1:

n-1;

x(i+1)=a-(x(i)-sqrt(a))^2;

y(i+1)=a-(y(i)-sqrt(a))^2;

end

subplot(2,1,1)

plot(1:

n,x,'bo')

title('ITERATIONFORSOLVINGEQUATION')

subplot(2,1,2)

plot(1:

n,y,'r*')

title('ITERATIONFORSOLVINGEQUATION')

图4

图5给出了时,出现4—循环的情形:

使用程序(ITERA2:

a=3;

x=[];

x

(1)=input('pleaseinputthefirsevalueofiterationx

(1)=:

');%2.5

n=input('pleaseinputthetotalnumberofiterationn=:

');%n=200

fori=1:

n-1;

x(i+1)=a-(x(i)-sqrt(a))^2;

end

plot(1:

n,x,'r*')

title('ITERATIONFORSOLVINGEQUATION')

图5

图6给出了时,出现8—循环的情形:

使用程序(ITERA3:

a=3.16;

x=[];

x

(1)=input('pleaseinputthefirsevalueofiterationx

(1)=:

');%1.5

n=input('pleaseinputthetotalnumberofiterationn=:

');%n=500

fori=1:

n-1;

x(i+1)=a-(x(i)-sqrt(a))^2;

end

plot(1:

n,x,'r*')

title('ITERATIONFORSOLVINGEQUATION')

 

图6

图7给出了时,出现混沌现象的情形,迭代初值分别取、、和。

使用程序(ITERA4:

a=4;

x=[];y=[];

x

(1)=input('please

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1