实验课程名称 数值计算方法I
开课实验室 数学实验室
学 院 理学院 年级11专业班 信息计算科学
学 生 姓 名 学 号
开 课 时 间 2013 2014 学年第 1 学期
评分细
评分
报告表述清晰程度完整性(20分)
程序设计正确性(40分)
实验结果分析(30分)
实验方法创新性(10分)
总成绩
教师签名
实验五 解线性方程组直接方法
实验51 (元选取算法稳定性)
问题提出:Gauss消法线性代数中已熟悉计算机数值运算限浮点数集合进行确保Gauss消法作数值算法稳定性呢?Gauss消法理算法数值算法关键元选择元选择数学理起数值分析中十分典型问题
实验容:考虑线性方程组
编制动选取元手动选取元求解线性方程组Gauss消程
实验求:
(1)取矩阵方程解取n10计算矩阵条件数程序动选取元结果?
(2)现选择程序中手动选取元功步消程总选取模模元素作元观察记录计算结果步消程总选取模元素作元结果?分析实验结果
(3)取矩阵阶数n20者更重复述实验程观察记录分析问题消程中选择元时计算结果差异说明元素选取消程中作
(4)选取感兴趣问题者机生成矩阵计算条件数重复述实验观察记录分析实验结果
实验52(线性代数方程组性态条件数估计)
问题提出:理线性代数方程组摄动满足
矩阵条件数确实矩阵病态性刻画实际应中直接计算显然现实计算通常求解方程困难
实验容:MATLAB中提供函数condest估计矩阵条件数出1范数条件数首先构造非奇异矩阵A右端方程精确求解引进系数矩阵右端摄动充分
实验求:
(1)假设方程Axb解x求解方程1范数出计算结果
(2)选择系列维数递增矩阵(机生成)较函数condest需机器时间差考虑干逆已知矩阵助函数eig容易出cond2(A)数值函数cond(A2)结果进行较
(3)利condest出矩阵A条件数估计针(1)中结果出理估计(1)出计算结果进行较分析结果注意果出cond(A)估计马出估计
(4)估计著名Hilbert矩阵条件数
思考题:(Vadermonde矩阵)设
中
(1)n258计算A条件数n增矩阵性态变化?
(2)n5解方程组Axb设A元素扰动104求解Axb
(3)计算(2)扰动相误差解相偏差分析条件数关系
(4)解释什插值函数存定理直接求插值函数拉格朗日牛顿插值法原?
相关MATLAB函数提示:
zeros(mn) 生成m行n列零矩阵
ones(mn) 生成m行n列元素全1矩阵
eye(n) 生成n阶单位矩阵
rand(mn) 生成m行n列(01)均匀分布机矩阵
diag(x) 返回量x元素构成角矩阵
tril(A) 提取矩阵A三角部分生成三角矩阵
triu(A) 提取矩阵A三角部分生成三角矩阵
rank(A) 返回矩阵A秩
det(A) 返回方阵A行列式
inv(A) 返回逆方阵A逆矩阵
[VD]eig(A) 返回方阵A特征值特征量
norm(Ap) 矩阵量p范数
cond(Ap) 矩阵条件数
[LUP]lu(A) 选列元LU分解
Rchol(X) 方根分解
Hihilb(n) 生成n阶Hilbert矩阵
实验程序:M文件程序:
function xgauss(nr)
ninput('请输入矩阵A阶数n')
Adiag(6*ones(1n))+diag(ones(1n1)1)+diag(8*ones(1n1)1)
bA*ones(n1)
pinput('条件数应范数p范数:p')
ppcond(Ap)
pause
[mn]size(A)
nbn+1Ab[A b]
rinput('请输入否手动手动输入1动输入0:r')
for i1n1
if r0
[pivotp]max(abs(Ab(ini)))
ipp+i1
if ip~i
Ab([i ip])Ab([ip i])disp(Ab) pause
end
end
if r1
ii
ipinput('输入i列选元素处行数:ip')
Ab([i ip])Ab([ip i])disp(Ab) pause
end
pivotAb(ii)
for ki+1n
Ab(kinb)Ab(kinb)(Ab(ki)pivot)*Ab(iinb)
end
disp(Ab) pause
end
xzeros(n1)x(n)Ab(nnb)Ab(nn)
for in111
x(i)(Ab(inb)Ab(ii+1n)*x(i+1n))Ab(ii)
end
(1)⑴取矩阵A阶数n10动选取元:
>> format long
>> gauss
请输入矩阵A阶数n10
n 10
条件数应范数p范数:p1
p 1
pp 2557500000000000e+003
请输入否手动手动输入1动输入0:r0
r 0
⑵取矩阵A阶数n10手动选取元:
①选取绝值元素元:
>> gauss
请输入矩阵A阶数n10
n 10
条件数应范数p范数:p2
p 2
pp 1727556024913903e+003
请输入否手动手动输入1动输入0:r1
r 1
ans 1 1 1 1 1 1 1 1 1 1
②选取绝值元素元:
>> gauss
请输入矩阵A阶数n10
n 10
条件数应范数p范数:p2
p 2
pp 1727556024913903e+003
请输入否手动手动输入1动输入0:r1
r 1
ans
100000000000000 100000000000000 100000000000000
100000000000000 100000000000000 100000000000000
099999999999999 100000000000001 099999999999998
100000000000003
(2)取矩阵A阶数n10手动选取元:
①选取绝值元素元:
>> gauss
请输入矩阵A阶数n10
n 10
条件数应范数p范数:p2
p 2
pp 1727556024913903e+003
请输入否手动手动输入1动输入0:r1
r 1
ans 1 1 1 1 1 1 1 1 1 1
②选取绝值元素元:
>> gauss
请输入矩阵A阶数n10
n 10
条件数应范数p范数:p2
p 2
pp 1727556024913903e+003
请输入否手动手动输入1动输入0:r1
r 1
ans
100000000000000 100000000000000 100000000000000
100000000000000 100000000000000 100000000000000
099999999999999 100000000000001 099999999999998
100000000000003
(3)取矩阵A阶数n20手动选取元:
① 选取绝值元素元:
>> gauss
请输入矩阵A阶数n20
条件数应范数p范数:p1
p 1
pp 2621437500000000e+006
ans 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
② 选取绝值元素元:
>> gauss
请输入矩阵A阶数n20
n 20
条件数应范数p范数:p2
p 2
pp 1789670565881683e+006
请输入否手动手动输入1动输入0:r1
r 1
ans
100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000001 099999999999997 100000000000006
099999999999989 100000000000023 099999999999955
100000000000090 099999999999821 100000000000352
099999999999318 100000000001273 099999999997817
100000000002910
(4)该题目M程序示
function xgauss(nr)
ninput('请输入矩阵A阶数n')
A hilb(n)
bA*ones(n1)
pinput('条件数应范数p范数:p')
ppcond(Ap)
pause
[mn]size(A)
nbn+1Ab[A b]
rinput('请输入否手动手动输入1动输入0:r')
for i1n1
if r0
[pivotp]max(abs(Ab(ini)))
ipp+i1
if ip~i
Ab([i ip])Ab([ip i])disp(Ab) pause
end
end
if r1
ii
ipinput('输入i列选元素处行数:ip')
Ab([i ip])Ab([ip i])disp(Ab) pause
end
pivotAb(ii)
for ki+1n
Ab(kinb)Ab(kinb)(Ab(ki)pivot)*Ab(iinb)
end
disp(Ab) pause
end
xzeros(n1)x(n)Ab(nnb)Ab(nn)
for in111
x(i)(Ab(inb)Ab(ii+1n)*x(i+1n))Ab(ii)
end
>>gauss
请输入矩阵A阶数:n7
n
7
A
6 1 0 0 0 0 0
8 6 1 0 0 0 0
0 8 6 1 0 0 0
0 0 8 6 1 0 0
0 0 0 8 6 1 0
0 0 0 0 8 6 1
0 0 0 0 0 8 6
b
7
15
15
15
15
15
14
pp
3174999999999999e+002
Ab
6 1 0 0 0 0 0 7
8 6 1 0 0 0 0 15
0 8 6 1 0 0 0 15
0 0 8 6 1 0 0 15
0 0 0 8 6 1 0 15
0 0 0 0 8 6 1 15
0 0 0 0 0 8 6 14
请输入否手动手动输入1动输入0:r1
r
1
条件数应范数p范数:p1
p
1
i
1
ans
099999999999869 100000000004337 099999999964299
100000000121143 099999999803038 100000000152825
099999999954491
显然该问题元选取算出结果着关系取绝值元素作元取绝值元素作元时产生结果较准确选取绝值元时结果产生较误差条件数越产生误差越
实验体会:
运高斯消法求解线性方程组问题时候元选取相应消法选取决定该算法稳定性选取绝值元素选取绝值较元素作元时结果产生误差影响较增加条件数反结果误差产生更影响运算中量避免出现运数作数数量级加令数吃掉数情况发生
实验52(线性代数方程组性态条件数估计)
问题提出:理线性代数方程组摄动满足
矩阵条件数确实矩阵病态性刻画实际应中直接计算显然现实计算通常求解方程困难
实验容:MATLAB中提供函数condest估计矩阵条件数出1范数条件数首先构造非奇异矩阵A右端方程精确求解引进系数矩阵右端摄动充分
实验求:
(1)假设方程Axb解x求解方程1范数出计算结果
(2)选择系列维数递增矩阵(机生成)较函数condest需机器时间差考虑干逆已知矩阵助函数eig容易出cond2(A)数值函数cond(A2)结果进行较
(3)利condest出矩阵A条件数估计针(1)中结果出理估计(1)出计算结果进行较分析结果注意果出cond(A)估计马出估计
(4)估计著名Hilbert矩阵条件数
程序代码:
⑴
保存M文件名:fanshum
ninput('please input nn')
afix(100*rand(n))+1
xones(n1)
ba*x
datarand(n)*000001
datbrand(n1)*000001
Aa+data
Bb+datb
xxgeshow(AB)
x0norm(xxx1)norm(x1)
保存M文件名:geshowm
function xgeshow(AB)
[mn]size(A)
nbn+1AB[A B]
for i1n1
pivotAB(ii)
for ki+1n
AB(kinb)AB(kinb)(AB(ki)pivot)*AB(iinb)
end
end
xzeros(n1)
x(n)AB(nnb)AB(nn)
for in111
x(i)(AB(inb)AB(ii+1n)*x(i+1n))AB(ii)
end
⑵
保存M文件名:cond2m
function cond2(A)
BA'*A
[V1D1]eig(B)
[V2D2]eig(B^(1))
cond2Asqrt(max(max(D1)))*sqrt(max(max(D2)))
end
保存M文件:shiyan52m
format long
for n1010100
nn
Afix(100*randn(n))
condestAcondest(A)
cond2(A)
condA2cond(A2)
pause
end
⑶
保存M文件:sy5_2m
ninput('please input nn') 输入矩阵阶数
afix(100*rand(n))+1 机生成矩阵a
xones(n1) 假设知道方程组解全1
ba*x
datarand(n)*000001
datbrand(n1)*000001
Aa+data
Bb+datb
xxgeshow(AB)
x0norm(xxx1)norm(x1)
x00cond(A)(1norm(inv(A))*norm(xxx))*(norm((xxx))(norm(A))+norm(datb)norm(B))
datxabs(x0x00)
(4)
format long
for n411
nn
Hihilb(n)
cond1Hicond(Hi1)
cond2Hicond(Hi2)
condinfHicond(Hiinf)
pause
end
实验结果分析:
(1)
>>fanshu
please input nn6
n
6
a
82 28 96 80 68 71
91 55 49 96 76 4
13 96 81 66 75 28
92 97 15 4 40 5
64 16 43 85 66 10
10 98 92 94 18 83
x
1
1
1
1
1
1
b
425
371
359
253
284
395
data
10e005 *
Columns 1 through 4
0694828622975817 0765516788149002 0709364830858073 0118997681558377
0317099480060861 0795199901137063 0754686681982361 0498364051982143
0950222048838355 0186872604554379 0276025076998578 0959743958516081
0034446080502909 0489764395788231 0679702676853675 0340385726666133
0438744359656398 0445586200710900 0655098003973841 0585267750979777
0381558457093009 0646313010111265 0162611735194631 0223811939491137
Columns 5 through 6
0751267059305653 0547215529963803
0255095115459269 0138624442828679
0505957051665142 0149294005559058
0699076722656686 0257508254123737
0890903252535799 0840717255983663
0959291425205445 0254282178971531
datb
10e005 *
0814284826068817
0243524968724989
0929263623187228
0349983765984809
0196595250431208
0251083857976031
A
Columns 1 through 4
82000006948286227 28000007655167881 96000007093648307 80000001189976814
91000003170994802 55000007951999009 49000007546866819 96000004983640522
13000009502220488 96000001868726045 81000002760250766 66000009597439586
92000000344460801 97000004897643961 15000006797026769 4000003403857266
64000004387443596 16000004455862008 43000006550980039 85000005852677504
10000003815584570 98000006463130106 92000001626117353 94000002238119393
Columns 5 through 6
68000007512670592 71000005472155294
76000002550951152 4000001386244429
75000005059570512 28000001492940054
40000006990767226 5000002575082541
66000008909032530 10000008407172560
18000009592914253 83000002542821790
B
10e+002 *
4250000081428483
3710000024352497
3590000092926362
2530000034998376
2840000019659525
3950000025108386
xx
1000000428381561
0999999831084732
1000002591353244
0999999600566705
0999998226539937
0999997826103164
x0
1255906711054392e006
计算结果:1255906711054392e006
(2)
N
condestA
cond2A
condA2
10
1152530883943102
e+002
3289054563075421
3289054563075420
20
3470959631940668
e+002
6554122384178966
6554122384178720
30
6050503865112835
e+002
1126539755706398
e+002
1126539755706322
e+002
40
3549487892582470
e+002
6137537569683448
6137537569683365
50
6855018184779408
e+002
8112138993753594
8112138993753482
60
1082004656409367
e+004
1704830815154781
e+003
1704830815108527
e+003
70
3234679145192132
e+003
3878481155980936
e+002
3878481155978439
e+002
80
8318226153918658
e+002
8623814299852513
8623814299853018
90
2063634143407935
e+003
2120696380331705
e+002
2120696380331079
e+002
100
1536592818758897
e+003
1559132035738491
e+002
1559132035738373
e+002
(3)
sy5_2
please input nn8
n
8
x0
3064664488849900e007
x00
5064016823313296e007
datx
1999352334463396e007
出估计5064016823313296e007
理结果:3064664488849900e007
结果相差:1999352334463396e007
(4)
n
cond1Hi
cond2Hi
condinfHi
4
2837499999999738
e+004
1551373873892786
e+004
2837499999999739
e+004
5
9436559999999364
e+005
4766072502414135
e+005
9436559999999336
e+005
6
2907027900294878
e+007
1495105864009243
e+007
2907027900294064
e+007
7
9851948897194700
e+008
4753673565864586
e+008
9851948897198483
e+008
8
3387279082022742
e+010
1525757545841988
e+010
3387279081949470
e+010
9
1099650993366047
e+012
4931544439891016
e+011
1099650991701052
e+012
10
3535372424347474
e+013
1602528637652488
e+013
3535372455375642
e+013
11
1230369955362001
e+015
5223946340715823
e+014
1230369938308720
e+015
讨:
线性代数方程组性态条件数着重关系矩阵条件数刻画矩阵性质重条件数越矩阵病态性越严重解线性代数方程组程中较容易产生较误差实际问题操作程中必须减少条件数求解条件数较矩阵化成条件数较矩阵进行求解
实验体会:
次实验中知道矩阵条件数线性代数方程组求解影响条件数越解影响越hilbert矩阵病态矩阵条件数着阶数增加增增加阶条件数增数量级求解程中量避免hilbert矩阵
实验六 解线性方程组迭代法
实验61(病态线性方程组求解)
问题提出:理分析表明求解病态线性方程组困难实际情况否会出现样现象呢?
实验容:考虑方程组Hxb求解中系数矩阵HHilbert矩阵
著名病态问题通首先定解(例取分量均1)计算出右端b办法出确定问题
实验求:
(1)选择问题维数6分Gauss消法J迭代法GS迭代法SOR迭代法求解方程组结果?计算结果问题解较结?
(2)逐步增问题维数然述方法解计算结果?计算结果说明什?
(3)讨病态问题求解算法
程序代码:
Gauss消法程序:
function xgauss(nr)
ninput('请输入矩阵阶数n')
Ahilb(n)构造Hilbert矩阵
pinput('条件数应范数p范数:p')
ppcond(Ap)
pause
[mn]size(A)
nbn+1Ab[A b]
rinput('请输入否手动手动输入1动输入0:r')
for i1n1
if r0
[pivotp]max(abs(Ab(ini)))
ipp+i1
if ip~i
Ab([i ip])Ab([ip i])disp(Ab) pause
end
end
if r1
ii
ipinput('输入i列选元素处行数:ip')
Ab([i ip])Ab([ip i])disp(Ab) pause
end
pivotAb(ii)
for ki+1n
Ab(kinb)Ab(kinb)(Ab(ki)pivot)*Ab(iinb)
end
disp(Ab) pause
end
xzeros(n1)x(n)Ab(nnb)Ab(nn)
for in111
x(i)(Ab(inb)Ab(ii+1n)*x(i+1n))Ab(ii)
end
J迭代法程序:
ninput('系数矩阵阶数')
Ahilb(n)构造Hilbert矩阵
for i1n
a0(i)1 定解
x(i)0
end
bA*a0' 定解算出相应b
进行迭代
for i1100
yx
for j1n
x(j)b(j)A(jj)
for k1j1
x(j)x(j)A(jk)*y(k)A(jj)
end
for kj+1n
x(j)x(j)A(jk)*y(k)A(jj)
end
end
endx
GS迭代程序:
ninput('系数矩阵阶数')
题中定矩阵进行消元
A2hilb(n)
for i1n
a02(i)1
x2(i)0
end
b2A2*a02'
for i1100000
for j1n
x2(j)b2(j)A2(jj)
for k1j1
x2(j)x2(j)A2(jk)*x2(k)A2(jj)
end
for kj+1n
x2(j)x2(j)A2(jk)*x2(k)A2(jj)
end
end
endx2
SOR迭代程序:
ninput('系数矩阵阶数')
ssinput('松弛子:')
题中定矩阵进行消元
A3hilb(n)
for i1n
a03(i)1
x3(i)0
end
b3A3*a03'
for i1100000
for j1n
rcx3(j)
x3(j)b3(j)A3(jj)
for k1j1
x3(j)x3(j)A3(jk)*x3(k)A3(jj)
end
for kj+1n
x3(j)x3(j)A3(jk)*x3(k)A3(jj)
end
x3(j)(1ss)*rc+ss*x3(j)
end
endx3
实验结果分析:
定分量1解计算出右端作问题
1. 选择问题维数6时:
Gauss消法求解精确解致
取初始量0J迭代方法迭代出现发散稳定现象法求解
取初始量0GS迭代方法迭代发散求解收敛非常缓慢迭代次数取相(100000次)时解精确解附波动
取初始量0SOR迭代方法迭代发散求解松弛子125左右时收敛较GS迭代快非常缓慢
2. 选择问题维数20时:
Gauss消法求解精确解相差相差10量级
取初始量0J迭代方法迭代发散法求解
取初始量0GS迭代方法迭代发散求解收敛非常缓慢迭代100000次算值精确值1相差0001量级
取初始量0SOR迭代方法迭代发散求解收敛非常缓慢
面结果出病态问题阶数升高时作直接法Gauss消法求解变成求解GSSOR迭代法阶数升高时求解阶数较低时直接法求精确解迭代发总存定误差见直接法迭代法优势足
关病态问题求解方法原方程作某预处理降低系数矩阵条件数采取系数矩阵A行适常数方法找逆角阵方程组化 理选择角阵满足:
实验七 非线性方程求根
实验71(迭代法初始值收敛性)
实验目:初步认识非线性问题迭代法线性问题迭代法差探讨迭代法初始值迭代收敛性关系
问题提出:迭代法求解非线性方程基思想方法线性方程情况样构造方法种样关键样迭代收敛较快收敛速度
实验容:考虑简单代数方程
针述方程构造种迭代法
实轴取初始值x0请分迭代(71)(73)作实验记录算法迭代程
实验求:
(1)取定某初始值分计算(71)(73)迭代结果收敛性?重复选取初始值反复实验请选设计种较形象记录方式(利Matlab图形功)分析三种迭代法收敛性初值选取关系
(2)三迭代法中某取初始值进行迭代结果?试分析迭代法初值否差异?
(3)线性方程组迭代法收敛性赖初始值选取较线性非线性问题迭代差异结问题
实验程:
71程序:
711 第迭代方程程序:
保存:diedai71h
Clc
clear
a15b25 y000 x00input('请输入第函数初值:x00')
xlinspace(ab80)
y0x 计算直线yx
y1diedai7f1(x) 计算迭代函数yf(x)
clear y
y[y0y1]
plot(xy'linewidth'1)
legend('yx''yf1')
title('x(n+1)[x(n)]^21') 输出标题
hold on
plot([a b][00]'k'[0 0][a b]'k')
axis([abab]) 画坐标轴
z[]
for i115 画蛛网图迭代程n15次
xt(1)x00yt(1)y00 决定始点坐标
xt(2)diedai7f1(xt(1)) 决定终点坐标
yt(2)diedai7f1(xt(1))
diedaiplot71(xtyt06) 画蛛网图
if i<5
pause 意键逐次观察前5次迭代蛛网图
end
x00xt(2)y00yt(2) 次迭代终点作次始点
z[zxt(1)] 保存迭代点
end
保存:diedai7f1h
function ydiedai7f1(x)
y(x*x1)
保存:diedaiplot71h
function outdiedaiplot72(xyp)画次迭代蛛网图改变p调节箭头
u(1)0v(1)(y(2)y(1)) 画出始点(x(1)y(1))终点(x(2)y(2))折线段
u(2)epsv(2)eps
X[x(1) x(1)]
Y[y(1) y(2)]
hquiver(XYuvp)
set(h'color''red')
hold on
u(1)(x(2)x(1))v(1)0
u(2)epsv(2)eps
hquiver([x(1) x(2)][y(2) y(2)]uvp)
set(h'color''red')
plot([x(1) x(1) x(2)][y(1) y(2) y(2)]'r')
711 第迭代方程程序运行结果:
(注:估计出方程根选取根附值开始迭代)
x15时程序运行图:
x1时程序运行图:
x05时程序运行图:
x05时程序运行图:
x0时程序运行图:
721 第二迭代方程程序:
保存diedai72h:
clear
clc
a01b65 y000 x00input('请输入第二函数初值:x00')
xlinspace(ab80)
y0x 计算直线yx
y1diedai7f2(x) 计算迭代函数yf(x)
clear y
y[y0y1]
plot(xy'linewidth'1)
legend('yx''yf1')
title('x(n+1)[x(n)]^21') 输出标题
hold on
plot([a b][00]'k'[0 0][a b]'k')
axis([abab]) 画坐标轴
z[]
for i115 画蛛网图迭代程n15次
xt(1)x00yt(1)y00 决定始点坐标
xt(2)diedai7f2(xt(1)) 决定终点坐标
yt(2)diedai7f2(xt(1))
diedaiplot72(xtyt06) 画蛛网图
if i<5
pause 意键逐次观察前5次迭代蛛网图
end
x00xt(2)y00yt(2) 次迭代终点作次始点
z[zxt(1)] 保存迭代点
end
保存迭代diedai7f2h:
function ydiedai7f2(x)
y(1+1x)
保存:diedaiplot72h
function outdiedaiplot72(xyp)画次迭代蛛网图改变p调节箭头
u(1)0v(1)(y(2)y(1)) 画出始点(x(1)y(1))终点(x(2)y(2))折线段
u(2)epsv(2)eps
X[x(1) x(1)]
Y[y(1) y(2)]
hquiver(XYuvp)
set(h'color''red')
hold on
u(1)(x(2)x(1))v(1)0
u(2)epsv(2)eps
hquiver([x(1) x(2)][y(2) y(2)]uvp)
set(h'color''red')
plot([x(1) x(1) x(2)][y(1) y(2) y(2)]'r')
722 第二迭代方程程序运行结果:
(注:估计出方程根选取根附值开始迭代)
x15时程序运行图:
x5时程序运行图:
x25时程序运行图:
x05时程序运行图:
731 第三迭代方程程序:
保存diedai73h:
clear
clc
a0b2 y000 x00input('请输入第三函数初值:x00')
xlinspace(ab80)
y0x 计算直线yx
y1diedai7f3(x) 计算迭代函数yf(x)
clear y
y[y0y1]
plot(xy'linewidth'1)
legend('yx''yf1')
title('x(n+1)[x(n)]^21') 输出标题
hold on
plot([a b][00]'k'[0 0][a b]'k')
axis([abab]) 画坐标轴
z[]
for i115 画蛛网图迭代程n15次
xt(1)x00yt(1)y00 决定始点坐标
xt(2)diedai7f3(xt(1)) 决定终点坐标
yt(2)diedai7f3(xt(1))
diedaiplot73(xtyt06) 画蛛网图
if i<5
pause 意键逐次观察前5次迭代蛛网图
end
x00xt(2)y00yt(2) 次迭代终点作次始点
z[zxt(1)] 保存迭代点
end
保存diedai7f3h:
function ydiedai7f3(x)
ysqrt(x+1)
保存diedaiplot73h:
function outdiedaiplot73(xyp)画次迭代蛛网图改变p调节箭头
u(1)0v(1)(y(2)y(1)) 画出始点(x(1)y(1))终点(x(2)y(2))折线段
u(2)epsv(2)eps
X[x(1) x(1)]
Y[y(1) y(2)]
hquiver(XYuvp)
set(h'color''red')
hold on
u(1)(x(2)x(1))v(1)0
u(2)epsv(2)eps
hquiver([x(1) x(2)][y(2) y(2)]uvp)
set(h'color''red')
plot([x(1) x(1) x(2)][y(1) y(2) y(2)]'r')
732 第三迭代方程程序运行结果:
(注:估计出方程根选取根附值开始迭代)
x15时程序运行图:
x04时程序运行图:
x08时程序运行图:
x12时程序运行图:
x18时程序运行图:
实验求分析:
通述三种迭代图判断出第迭代方程收敛第二第三迭代方程收敛时出初值选择决定收敛速度迭代方程言第二迭代方程选取初始点方程该点y轴差值越收敛速度越快第三迭代方程体第二迭代方程相似选取初始点两条曲线间间距越收敛越快
实验求二分析:
迭代法求解非线性方程根种迭代方程迭代方程求解会产生结果第迭代方程收敛第二第三收敛说明迭代方程选取会直接影响非线性方程求解果选取迭代方程话少收敛然然希收敛速度越快越说迭代方程选取坏两评价标准:(1)否收敛(2)收敛速度快慢:收敛速度快慢取决初始值选择果初始值选取较话够快收敛结束
根述原第二迭代方程进行讨:
(1) 否收敛:迭代图明显出第二迭代方程收敛初始化值选取少总会收敛定区域第迭代方程初始值选取收敛定区域第
(2) 收敛速度快慢:图初始值选取出收敛速度明显取决初始值选择初始值选取越贴解收敛速度越快否慢慢收敛第三迭代方程
实验求三分析:
解线性方程组迭代法收敛性取决迭代方法系数矩阵谱半径谱半径1收敛初值选取关解非线性方程根迭代法求解收敛性取决迭代方程斜率取定初始点斜率1收敛初值选取关
实验总结:
通实验解非线性方程迭代法求根种迭代方法迭代方程会实验结果成影响例面第迭代方程收敛仅浪费时间结果适选取迭代方程适合初值利提高迭代方程迭代速度减少计算量较快理想答案通常知道迭代方程收敛初值选取样够收敛较快
重 庆 交 通 学
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档