清华大学数值分析实验报告


    数值分析实验报告

    实验31
    题目:
    考虑线性方程组编制动选取元手动选取元求解线性代数方程组Gauss消程
    (1)取矩阵方程解取计算矩阵条件数分序Gauss消元列元Gauss消元完全选元Gauss消元方法求解结果?
    (2)现选择程序中手动选取元功步消程选取模模元素作元进行消元观察记录计算结果步消程总选取模元素作元结果?分析实验结果
    (3)取矩阵阶数n20者更重复述实验程观察记录分析问题消程中选择元时计算结果差异说明元素选取消程中作
    (4)选取感兴趣问题者机生成矩阵计算条件数重复述实验观察记录分析实验结果


    1 算法介绍
    首先分析种算法消程计算公式
    序高斯消法:
    第k步消中设增广矩阵中元素(等零判定系数矩阵奇异矩阵停止计算)k行行计算分增广矩阵第行加第行增广矩阵中第列中元素消零重复方法第1步进行第n1步终增广矩阵
    列元高斯消法:
    第k步消中增广矩阵中子方阵中选取时中第行第行交换然序消法相步骤进行重复方法第1步进行第n1步终增广矩阵
    完全元高斯消法:
    第k步消中增广矩阵中应子方阵中选取中第行第行第列第列交换然序消法相步骤进行重复方法第1步进行第n1步终增广矩阵
    接分析回代程求解公式容易出述种消元法均计算公式:

    2 实验程序设计
    输入实验求初始条件
    二计算系数矩阵A条件数方程组理解
    三方法编程计算输出终计算结果
    3 计算结果分析
    (1)
    先计算系数矩阵条件数结果
    知系数矩阵条件数较问题属病态问题 bA扰动引起解较误差
    采序高斯消法计算结果:

    终解x(1000000000000000 1000000000000000 1000000000000000 1000000000000001 0999999999999998 1000000000000004 0999999999999993 1000000000000012 0999999999999979 1000000000000028)T
    穷范数衡量误差2842170943040401e14发现采序高斯消元法求解精确解间误差较通进步观察发现序高斯消法计算时选取元值矩阵中元素相序高斯消法方式没结果造成特影响
    采列元高斯消元法结果:

    终解x(1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000)T
    样穷范数衡量误差0
    完全元高斯消元法结果

    终解x(1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000 1000000000000000)T
    样穷范数衡量误差0
    (2)
    步选取模元素元计算结果

    终解x(1000000000000000 1000000000000000 1000000000000000 1000000000000001 0999999999999998 1000000000000004 0999999999999993 1000000000000012 0999999999999979 1000000000000028)T
    穷范数衡量误差2842170943040401e14完全元消法误差0
    (1)(2)实验结果发现列元消法完全元消法精确解序高斯消法模量元素元消法没精确解两种消法中程序计算时舍入误差终结果产生定影响方程组维度较低元素间相差误差较
    进步分析计算述4种方法步选取元数值列表进行较结果:
    第n次消元

    列元
    完全元

    1
    6000000000000000
    8
    8
    6000000000000000
    2
    4666666666666667
    8
    8
    4666666666666667
    3
    4285714285714286
    8
    8
    4285714285714286
    4
    4133333333333333
    8
    8
    4133333333333333
    5
    4064516129032258
    8
    8
    4064516129032258
    6
    4031746031746032
    8
    8
    4031746031746032
    7
    4015748031496063
    8
    8
    4015748031496063
    8
    4007843137254902
    8
    8
    4007843137254902
    9
    4003913894324853
    8
    8
    4003913894324853
    10
    4001955034213099
    0015617370605469
    0015617370605469
    4001955034213099
    表发现方程组言序高斯消选取元恰事模量元素列元完全元选取元素84数量级差计算程中累积误差较终4种方法输出结果均较精确
    里具体解释序法模法计算结果完全致原该矩阵消元程中次选取元列两非零元素角线元素4左右正方元素8该列余位置元素均0样情况默认元该列元两种方法计算结果致
    理说完全高斯消法误差次列元高斯消法选取模元素作元时误差方程组特殊性(元素相差维度高)理现象里没充分体现出
    (3)
    时重复述实验程种方法计算结果示里采穷范数衡量绝误差

    序高斯消法
    列元高斯消
    完全元高斯消
    选取模元素作元消
    X
    1000000000000000 1000000000000000 1000000000000000 1000000000000001 0999999999999998 1000000000000004 0999999999999993 1000000000000014 0999999999999972 1000000000000057 0999999999999886
    1000000000000227 0999999999999547 1000000000000902 0999999999998209 1000000000003524 0999999999993179 1000000000012732 0999999999978173 1000000000029102
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1000000000000000 1000000000000000 1000000000000000 1000000000000001 0999999999999998 1000000000000004 0999999999999993 1000000000000014 0999999999999972 1000000000000057 0999999999999886
    1000000000000227 0999999999999547 1000000000000902 0999999999998209 1000000000003524 0999999999993179 1000000000012732 0999999999978173 1000000000029102

    2910205409989430e11
    0
    0
    2910205409989430e11
    出时列元完全元计算结果精确值序高斯消模方法然产生定误差两者误差致n10时候误差相n20时误差增长约1000倍计算程中舍入误差断累积致果进步增加矩阵维数应该出更明显现象
    (4)
    矩阵维度误差里方便起见选取2条件数维度系数矩阵进行较
    维度
    条件数
    序消
    列元
    完全元
    模量

    17e+3
    284e14
    0
    0
    284e14

    18e+6
    291e11
    0
    0
    291e11

    57e+7
    931e10
    0
    0
    931e10

    18e+9
    298e08
    0
    0
    298e08

    19e+12
    305e05
    0
    0
    305e05

    38e+16
    328e+04
    388e12
    388e12
    328e+04

    85e+16
    352e+13
    42e3
    42e3
    352e+13
    表出着维度增加方法计算误差影响逐渐体现增长较快舍入误差逐步累计造成方法二方法三维度40情况精确解两种方法累计误差远方法方法四慢样出前面相原方法方法四计算结果保持致方法二方法三计算结果保持致
    4 结
    文矩阵中元素差模模元素没数量级差异元选取方式计算结果影响维度较低情况明显四种方法足够精确
    四种方法发现采列元高斯消者完全元高斯消法量抑制误差算法精确低阶矩阵说四种方法求解出结果误差均较
    外完全选元方法选元程中计算量较发现列元法已达高精确程度实际计算中选列元法进行计算
    附录:程序代码
    clear
    clc
    format long

    方法选择
    ninput('矩阵A阶数n')
    disp('选取求解方式')
    disp('1 序Gauss消元法2 列元Gauss消元法3 完全选元Gauss消元法4 模元素作元')
    ainput('求解方式序号:')

    赋值Ab
    Azeros(nn)
    bzeros(n1)
    for i1n
    A(ii)6
    if i>1
    A(ii1)8
    end
    if i A(ii+1)1
    end
    end
    for i1n
    for j1n
    b(i)b(i)+A(ij)
    end
    end
    disp('定系数矩阵:')
    A
    disp('右端量:')
    b

    求条件数理解
    disp('线性方程组精确解:')
    X(A\b)'
    fprintf('矩阵A1条件数 f \n'cond(A1))
    fprintf('矩阵A2条件数 f \n'cond(A))
    fprintf('矩阵A穷条件数 f \n'cond(Ainf))



    序Gauss消元法
    if a1
    A1Ab1b
    for k1n
    if A1(kk)0
    disp('元零序Gauss消元法法进行')
    break
    end
    fprintf('第d次消元选取元:g\n'kA1(kk))
    disp('次消元系数矩阵:')
    A1
    for pk+1n
    lA1(pk)A1(kk)
    A1(pkn)A1(pkn)l*A1(kkn)
    b1(p)b1(p)l*b1(k)
    end
    end
    x1(n)b1(n)A1(nn)
    for kn111
    for wk+1n
    b1(k)b1(k)A1(kw)*x1(w)
    end
    x1(k)b1(k)A1(kk)
    end
    disp('序Gauss消元法解')
    disp(x1)
    disp('求解精确解差穷范数')
    norm(x1Xinf)
    end

    列元Gauss消元法
    if a2
    A2Ab2b
    for k1n
    [max_imax_j]find(A2(k)max(abs(A2(knk))))
    if max_i~k
    A2_changeA2(k)
    A2(k)A2(max_i)
    A2(max_i)A2_change
    b2_changeb2(k)
    b2(k)b2(max_i)
    b2(max_i)b2_change
    end
    if A2(kk)0
    disp('元零列元Gauss消元法法进行')
    break
    end
    fprintf('第d次消元选取元:g\n'kA2(kk))
    disp('次消元系数矩阵:')
    A2
    for pk+1n
    lA2(pk)A2(kk)
    A2(pkn)A2(pkn)l*A2(kkn)
    b2(p)b2(p)l*b2(k)
    end
    end
    x2(n)b2(n)A2(nn)
    for kn111
    for wk+1n
    b2(k)b2(k)A2(kw)*x2(w)
    end
    x2(k)b2(k)A2(kk)
    end
    disp('列元Gauss消元法解')
    disp(x2)
    disp('求解精确解差穷范数')
    norm(x2Xinf)
    end

    完全选元Gauss消元法
    if a3
    A3Ab3b
    for k1n
    VVeye(n)
    [max_imax_j]find(A3(knkn)max(max(abs(A3(knkn)))))
    if numel(max_i)0
    [max_imax_j]find(A3(knkn)max(max(abs(A3(knkn)))))
    end
    Weye(n)
    W(max_i(1)+k1max_i(1)+k1)0
    W(kk)0
    W(max_i(1)+k1k)1
    W(kmax_i(1)+k1)1
    Veye(n)
    V(kk)0
    V(max_j(1)+k1max_j(1)+k1)0
    V(kmax_j(1)+k1)1
    V(max_j(1)+k1k)1
    A3W*A3*V
    b3W*b3
    VVVV*V

    if A3(kk)0
    disp('元零完全选元Gauss消元法法进行')
    break
    end
    fprintf('第d次消元选取元:g\n'kA3(kk))
    disp('次消元系数矩阵:')
    A3
    for pk+1n
    lA3(pk)A3(kk)
    A3(pkn)A3(pkn)l*A3(kkn)
    b3(p)b3(p)l*b3(k)
    end
    end
    x3(n)b3(n)A3(nn)
    for kn111
    for wk+1n
    b3(k)b3(k)A3(kw)*x3(w)
    end
    x3(k)b3(k)A3(kk)
    end
    disp('完全选元Gauss消元法解')
    disp(x3)
    disp('求解精确解差穷范数')
    norm(x3Xinf)
    end

    模元素作元
    if a4
    A4Ab4b
    for k1n
    AAA4
    AA(AA0)NaN
    [min_ij]find(AA(knk)min(abs(AA(knk))))
    if numel(min_i)0
    [min_ij]find(AA(knk)min(abs(AA(knkn))))
    end
    Weye(n)
    W(min_i(1)+k1min_i(1)+k1)0
    W(kk)0
    W(min_i(1)+k1k)1
    W(kmin_i(1)+k1)1
    A4W*A4
    b4W*b4
    if A4(kk)0
    disp('元零模Gauss消元法法进行')
    break
    end
    fprintf('第d次消元选取元:g\n'kA4(kk))
    A4
    for pk+1n
    lA4(pk)A4(kk)
    A4(pkn)A4(pkn)l*A4(kkn)
    b4(p)b4(p)l*b4(k)
    end
    end
    x4(n)b4(n)A4(nn)
    for kn111
    for wk+1n
    b4(k)b4(k)A4(kw)*x4(w)
    end
    x4(k)b4(k)A4(kk)
    end
    disp('模Gauss消元法解')
    disp(x4)
    disp('求解精确解差穷范数')
    norm(x4Xinf)
    end
    二实验33
    题目:
    考虑方程组解中系数矩阵HHilbert矩阵:

    著名病态问题通首先定解(例取分量均1)计算出右端办法出确定问题
    (1)选择问题维数6分Gauss消法(LU分解)J迭代法GS迭代法SOR迭代法求解方程组结果?计算结果问题解较结
    (2)逐步增问题维数述方法解计算结果?计算结果说明什?
    (3)讨病态问题求解算法
    1 算法设计
    意线性方程组分析种方法计算公式
    (1)Gauss消法:
    首先系数矩阵进行LU分解原方程转化令原方程分两步回代求解:

    具体方法里赘述
    (2)J迭代法:
    首先分解构造迭代矩阵中 进行迭代计算直误差满足求
    (3)GS迭代法:
    首先分解构造迭代矩阵 中 进行迭代计算直误差满足求
    (4)SOR迭代法:
    首先分解构造迭代矩阵 中进行迭代计算直误差满足求
    2 实验程
    根维度n确定矩阵H元素b分量值
    二选择计算方法( Gauss消法J迭代法GS迭代法SOR迭代法)迭代法设定初值外SOR方法需设定松弛子
    三进行计算直满足误差求(迭代法设定相邻两次迭代结果差穷范数00001SOR方法设定输出迭代100次结果误差值)输出实验结果
    3 计算结果分析
    (1)时问题具体定义

    计算结果
    Gauss消法
    第1次消元选取元:1
    第2次消元选取元:00833333
    第3次消元选取元:000555556
    第4次消元选取元:0000357143
    第5次消元选取元:226757e05
    第6次消元选取元:143155e06
    解X(0999999999999228 1000000000021937 0999999999851792 1000000000385369 0999999999574584 1000000000167680)T
    穷范数衡量误差4254160357319847e10
    J迭代法
    设定迭代初值零计算 J法迭代矩阵B谱半径430853>1J法收敛
    GS迭代法
    设定迭代初值零计算GS法迭代矩阵G谱半径:0999998<1GS法收敛541次迭代计算结果X(1001178105812706 0999144082651860 0968929093984902 1047045569989162 1027323158370281 0954352032784608)T
    穷范数衡量误差0047045569989162
    SOR迭代法
    设定迭代初值零量设定计算SOR法迭代矩阵谱半径0999999433815223100次迭代计算结果
    X(1003380614145078 0962420297458423 1031857023134559 1061814901289881 1014037815827164 0917673642493527)T
    穷范数衡量误差0082326357506473
    SOR方法变改变值计算结果列表





    迭代次数
    100
    100
    100
    100
    迭代矩阵谱半径
    0999999433815223
    0999998867083155
    0999996830135013
    0999982309342386
    X
    1003653917714694 0974666041209353 1011814573842440 1042837929171827 1017190220902681 0945462001336268
    1014676015634604
    0896636864424096
    1090444578936265
    1107070542628148
    1006315452225331
    0873244842279255
    1028022215505147
    0790604920509843
    1267167365524072
    1061689730857891
    0990084054872602
    0846005956774467
    1051857392323966
    0653408758549156
    1486449891152510
    0783650360698119
    1349665420488270
    0664202350634588

    0054537998663732
    0126755157720745
    0267167365524072
    0486449891152510
    发现松弛子取值迭代速度造成影响述四种方法中松弛子05时收敛相较快
    综四种算法结果列表:
    算法
    Gauss消法
    Jacobi法
    GS法
    SOR法(取)
    迭代次数

    收敛
    541
    100
    迭代矩阵谱半径

    430853
    0999998
    0999999433815223
    X
    0999999999999228 1000000000021937 0999999999851792 1000000000385369 0999999999574584 1000000000167680

    1001178105812706 0999144082651860 0968929093984902 1047045569989162 1027323158370281 0954352032784608
    1003380614145078 0962420297458423 1031857023134559 1061814901289881 1014037815827164 0917673642493527

    4254160357319847e10

    0047045569989162
    0082326357506473
    计算矩阵H条件数>>1病态问题表出四种方法求解存定误差面分析误差源:
    LU分解方法误差存Hilbert矩阵元素分数形式转换数形式时情况会出现舍入误差进行LU分解时存问题结果方程精确解 结果显示该方法误差非常
    Jacobi迭代矩阵谱半径430853迭代法收敛
    GS迭代法迭代次数541次时方程似解误差约005 较GS迭代矩阵谱半径0999998接1GS迭代法收敛速度较慢
    SOR迭代法迭代次数100次时误差约008误差较SOR迭代矩阵谱半径0999999接1时SOR迭代法收敛速度快相GS法迭代速度方面已明显提高外SOR方法迭代速度会相应变化果选佳松弛子实现更快收敛
    (2)
    考虑维度情况时
    算法
    Gauss消
    J法
    GS法
    SOR法(w05)
    计算结果

    0999999999966269 1000000001809060 0999999976372676 1000000127868103 0999999655764116 1000000487042164 0999999653427125 1000000097774747

    0997829221945349
    1037526203106839
    0896973261976015
    1020345136375036
    1069071166932576
    1051179995036612
    0996814757185364
    0926343237325536
    1012938972275634
    0939713836855171
    0988261805073081
    1064637090535154
    1083633345093974
    1045060177115514
    0970603024778469
    0880212649657655
    迭代次数


    356
    100
    谱半径

    604213
    1
    0999999999208776






    算法
    Gauss消法
    Jacobi法
    GS法
    SOR法(w05)
    计算结果

    0999999994751197 1000000546746354 0999985868343700 1000157549468631 0999063537004329 1003286333127805 0992855789229370 1009726486881556 0991930155925812 1003729850349020 0999263885025643

    0997442073306751
    1019069909358409
    0992278247786739
    0956441858313237
    0986420333361353
    1021301611956591
    1038701026806608
    1035942773498533
    1016693763149422
    0985716454946250
    0947181287500697
    1015776039786572
    0966429147064483
    0928674868157910
    0996931548482727
    1066737803913537
    1097792430596468
    1088030440855069
    1048110620811192
    0989919418572424
    0922840813704142
    0853252417221922
    迭代次数


    1019
    100
    谱半径

    864964
    1
    0999999999999966






    算法
    Gauss消法
    Jacobi法
    GS法
    SOR法(w05)
    计算结果

    0999999968723799 1000002417094896 0999994922439769 0998640261957706 1025668111139297 0781933485305194 2066840925345890 2279036697492128 7532393125791018 7355047567109081 7380667063930484
    1129041418095142 0425748747257065 1733284233971601 0817952344733362

    收敛
    1004385740641590
    1046346067877554
    0907178347707729
    0905763455949053
    0972521802788457
    1043731445367903
    1091535169448764
    1110090020703944
    1103129684679768
    1077168651146056
    1038514736265176
    0992259990832041
    0942151390478003
    0890785366684065
    0839876442493220
    迭代次数


    262
    100
    谱半径

    604213
    >1
    1000000000000000

    8355047567109082


    0160123557506780
    分析结果发现着n值增加Gauss消法误差逐渐增误差增速度快维数等10情况Gauss消法结果误差较维数达15时计算结果误差已达精确解倍
    J法迭代收敛n取值谱半径始终1J法收敛J迭代法Hilbert矩阵求解
    GS迭代法SOR迭代法两种方法均收敛GS迭代法SOR迭代法松弛子取值1特例SOR方法受取值影响会收敛情况出GS迭代矩阵谱半径1接1收敛速度慢然着维数增需迭代次数逐渐减少维数达15时候GS法已收敛出结GS迭代方法Hilbert矩阵维数较低时够定程度满足迭代求解需求迭代速度慢外着矩阵维数增加 SOR法误差水基稳定误差接受范围
    较出结果求解较低维度Hibert矩阵问题Gauss消法GS迭代法SOR迭代法均Gauss消法结果精确度较高果需求解较高维度Hibert矩阵问题采SOR迭代法
    (3)
    系数矩阵条件数较时病态方程实验知Gauss法解述方程时结果存误差收敛迭代法通选取优松弛子方法求解然迭代次数相较结果较精确
    总体般病态方程组求解采方式:
    1 低维度采Gauss消法直接求解行
    Jacobi迭代方法适宜求解病态问题
    GS迭代方法解决维数较低病态问题谱半径非常趋1导致迭代算法收敛速度慢维数较时候GS法收敛
    SOR方法较适合求解病态问题特矩阵维数较高时候优势更明显
    2 采高精度运算选双倍更倍字长运算提高收敛速度
    3 原方程组作某预处理效降低系数矩阵条件数
    4 实验结
    (1)Hibert矩阵问题条件数会着维度增加迅速增加病态性会越越明显维度较低时候Gauss消法GS迭代法SOR迭代法均优先Gauss消法果需求解较高维度Hibert矩阵问题SOR迭代法够求解
    (2)SOR方法较适合求解病态问题特矩阵维数较高时候优点更明显次实验出着矩阵维数增SOR方法需迭代次数减少误差基稳定解决病态问题适宜方法
    附录:程序代码
    clear all
    clc
    format long

    矩阵赋值
    ninput('矩阵H阶数n')
    for i1n
    for j1n
    H(ij)1(i+j1)
    end
    end
    bH*ones(n1)
    disp('H矩阵:')
    H
    disp('量b:')
    b

    方法选择
    disp('选取求解方式')
    disp('1 Gauss消法2 J迭代法3 GS迭代法4 SOR迭代法')
    ainput('求解方式序号:')

    Gauss消法
    if a1
    H1Hb1b
    for k1n
    if H1(kk)0
    disp('元零Gauss消法法进行')
    break
    end
    fprintf('第d次消元选取元:g\n'kH1(kk))
    for pk+1n
    m5H1(pk)H1(kk)
    H1(pkn)H1(pkn)+m5*H1(kkn)
    b1(p)b1(p)+m5*b1(k)
    end
    end
    x1(n)b1(n)H1(nn)
    for kn111
    for vk+1n
    b1(k)b1(k)H1(kv)*x1(v)
    end
    x1(k)b1(k)H1(kk)
    end
    disp('Gauss消法解')
    disp(x1)
    disp('解精确解差穷范数')
    norm((x1a)inf)
    end

    Ddiag(diag(H))
    Ltril(H1)
    Utriu(H1)


    J迭代法
    if a2
    定初始x0
    iniinput('初始值设定x0')
    x0(1)ini*diag(ones(n))
    disp('初始解量')
    x0
    xj(1)x0(1)
    B(D^(1))*(L+U)
    f(D^(1))*b
    fprintf('(J法B矩阵谱半径:g\n'vrho(B))
    if vrho(B)<1
    for m215000
    xj(m2+1)B*xj(m2)+fj
    if norm((xj(m2+1)xj(m2))inf)<00001
    break
    end
    end
    disp('J法计算结果')
    xj(m2+1)
    disp('解精确解差穷范数')
    norm((xj(m2+1)diag(ones(n)))inf)
    disp('J迭代法迭代次数')
    m2
    else
    disp('B矩阵谱半径1J法收敛')
    end
    end


    GS迭代法
    if a3
    定初始x0
    iniinput('初始值设定x0')
    x0(1)ini*diag(ones(n))
    disp('初始解量')
    x0

    xG(1)x0(1)
    Ginv(DL)*U
    fGinv(DL)*b
    fprintf('GS法G矩阵谱半径:g\n'vrho(G))
    if vrho(G)<1
    for m315000
    xG(m3+1)G*xG(m3)+fG
    if norm((xG(m3+1)xG(m3))inf)<00001
    break
    end
    end
    disp('GS迭代法计算结果')
    xG(m3+1)
    disp('解精确解差穷范数')
    norm((xG(m3+1)diag(ones(n)))inf)
    disp('GS迭代法迭代次数')
    m3
    else
    disp('G矩阵谱半径1GS法收敛')
    end
    end

    SOR迭代法
    if a4
    定初始x0
    iniinput('初始值设定x0')
    x0(1)ini*diag(ones(n))
    disp('初始解量')
    x0
    AH
    for i1n
    b(i)sum(A(i))
    end

    x_starones(n1)
    format long
    winput('松弛子w')
    Lwinv(Dw*L)*((1w)*D+w*U)
    fw*inv(Dw*L)*b
    disp('迭代矩阵谱半径:')
    pvrho(Lw)
    time_max100迭代次数
    xzeros(n1)迭代初值
    for i1time_max
    xLw*x+f
    end
    disp('SOR迭代法解')
    x
    disp('解精确解差穷范数')
    norm((x_starx)inf)
    end

    pause

    三实验41
    题目:
    牛顿法拟牛顿法进行非线性方程组数值求解
    (1)述两种方法分计算面两例子达精度相前提较迭代次数CPU时间等

    (2)取初值结果?反复选取初值较结果
    (3)总结纳实验结果试说明种方法适问题
    1 算法设计
    需求解非线性方程组言牛顿法拟牛顿法迭代公式
    (1)牛顿法:

    牛顿法单步迭代法需取初值
    (2)拟牛顿法:(Broyden秩1法)


    拟牛顿法需求解导数节省量运算时间需定矩阵初值取
    2 实验程
    输入初值
    二根误差求公式进行迭代计算
    三输出数
    3 计算结果分析
    (1)首先求解方程组(1)里设定精度求
    方法
    牛顿法
    拟牛顿法
    初始值


    计算结果X
    x1
    0905539609855914
    0905539493347151
    x2
    1085219168370031
    1085218882394940
    x3
    0672193668718306
    0672193293825304
    迭代次数
    3
    13
    CPU计算时间s
    3777815
    2739349
    出初始值相情况牛顿法拟牛顿法达样计算精度情况结果基相牛顿法迭代次数明显少次迭代需求解矩阵逆牛顿法次迭代CPU计算时间更长
    求解方程组(2)样设定精度求
    方法
    牛顿法
    拟牛顿法
    初始值


    计算结果X
    x1
    0500000000009699
    0499999994673600
    x2
    0000000001063428
    0000000572701856
    x3
    0523598775570483
    0523598762908871
    迭代次数
    4
    12
    CPU计算时间s
    2722437
    3920195
    样出初始值相情况牛顿法拟牛顿法达样计算精度情况结果基相牛顿法迭代次数明显少样次迭代中求解矩阵逆运算牛顿法次迭代CPU计算时间较长
    (2)方程组(1)取初值计算结果列表样设定精度求
    初始值
    方法
    牛顿法
    拟牛顿法

    计算结果
    0905539609855914
    1085219168370031
    0672193668718305
    9211852562357894
    5574005400255346
    18118173639381205
    迭代次数
    4
    58
    CPU计算时间s
    3907164
    4818019

    计算结果
    0905539609855914
    1085219168370031
    0672193668718305
    9211849682114591
    5573999165383549
    18118182491302807
    迭代次数
    4
    2735
    CPU计算时间s
    8127286
    5626023

    计算结果
    0905539609855914
    1085219168370031
    0672193668718306
    0905539493347151
    1085218882394940
    0672193293825304
    迭代次数
    3
    13
    CPU计算时间s
    3777815
    2739349

    计算结果
    0905539609855914
    1085219168370031
    0672193668718306
    0905548384395773
    1085220084502458
    0672219278250136
    迭代次数
    4
    188
    CPU计算时间s
    3835697
    2879070

    计算结果
    9211852448563722
    5574005155684773
    18118173976918605
    Matlab警告矩阵接奇异值程序进入长期循环计算中
    迭代次数
    19

    CPU计算时间s
    4033868


    计算结果
    0905539609857335
    1085219168371536
    0672193668734922
    Matlab警告矩阵接奇异值程序进入长期循环计算中
    迭代次数
    13

    CPU计算时间s
    12243263

    表发现方程组(1)存(92 56 181)T附动点初值选取会直接影响牛顿法拟牛顿法收敛点
    总说设定初值离动点越远需迭代次数越初始值选取非常重合适初值更快收敛果初始值偏离精确解较远会出现迭代次数增加直法收敛情况
    拟牛顿法种似方法拟牛顿法需迭代次数明显更收敛情况牛顿法(初值够接时甚会出现奇异矩阵情况)牛顿法求解较复杂计算时间较长
    样方程组(2)取初值计算结果列表样设定精度求
    初始值
    方法
    牛顿法
    拟牛顿法

    计算结果
    0500000000009699
    0000000001063428
    0523598775570483
    0499999994673600
    0000000572701856
    0523598762908871
    迭代次数
    4
    12
    CPU计算时间s
    2722437
    3920195

    计算结果
    0500000000011085
    0000000001215427
    0523598775566507
    0331099293590753
    0260080189442266
    76532092226437129
    迭代次数
    5
    57
    CPU计算时间s
    5047111
    5619752

    计算结果
    0500000000000916
    0000000000100410
    0523598775595672
    10e+02 *
    0001221250784775
    0000149282572886
    1754185881622843
    迭代次数
    6
    62
    CPU计算时间s
    3540668
    3387829

    计算结果
    0500000000000152
    0000000000016711
    0523598775597862
    10e+04 *
    0000026556790770
    0000020396841295
    1280853105748650
    迭代次数
    7
    55
    CPU计算时间s
    2200571
    2640901

    计算结果
    0500000000000005
    0000000000000503
    0523598775598286
    矩阵奇异值法输出准确结果
    迭代次数
    8

    CPU计算时间s
    1719072


    计算结果
    0500000000002022
    0000000000221686
    0523598775592500
    矩阵奇异值法输出准确结果
    迭代次数
    149

    CPU计算时间s
    2797116


    计算结果
    矩阵奇异值法输出准确结果
    矩阵奇异值法输出准确结果
    迭代次数


    CPU计算时间s


    里前文类似发现赘述
    里出牛顿法更区间实现压缩映射原理更范围选取初值终收敛精确解附
    初始值较接动点时牛顿法拟牛顿法计算结果基相然迭代次数差计算总需时间相
    (3)
    牛顿法迭代程中矩阵求逆迭代收敛充分条件迭代满足区间映性矩阵求逆程较简单较区间满足映性问题适合应牛顿法进行计算般言函数单调者具单值特性函数适合应牛顿法初始值敏感程度较低算法具收敛性
    外需说明次计算出CPU时间计算机时运行状态关时代码运行时间定致数具参考价值
    4 实验结
    牛顿法拟牛顿法存初始值越接精确解需迭代次数越现象
    应牛顿法拟牛顿法优势迭代次数说牛顿法更加精确需迭代次数更少单次迭代说牛顿法计算步骤更计算更加复杂次迭代需时间更长拟牛顿法采简化似公式次迭代更加迅速非线性方程组求逆程较简单时方程组1情况时拟牛顿法具明显优势非线性方程组求逆程较复杂时方程组2情况拟牛顿法体现出优势然循环次数增加CPU耗时反更少
    外方程组压缩映射区间说般言区间函数呈现单调者具单值特性函数适合应牛顿法初始值敏感程度较低算法具收敛性拟牛顿法需迭代程中矩阵求逆利差商代矩阵求导初始误差较时倒数矩阵差商偏差较初始值敏感程度较
    附录:程序代码
    方程1牛顿法
    tic
    format long
    初值
    disp('请输入初值')
    ainput('第1分量:')
    binput('第2分量:')
    cinput('第3分量:')
    disp('选定初值')
    x[abc]

    误差求
    E00001
    迭代
    i0
    e2*E
    while e>E
    F[12*x(1)x(2)^24*x(3)7x(1)^2+10*x(2)x(3)11x(2)^3+10*x(3)8]
    f[122*x(2)42*x(1)10103*x(2)^210]
    det_x((f)^(1))*(F)
    xx+det_x
    emax(norm(det_x))
    ii+1
    end
    disp('迭代次数')
    i
    disp('迭代次数')
    x
    toc

    方程1拟牛顿法
    tic
    format long
    初值
    初值
    disp('请输入初值')
    ainput('第1分量:')
    binput('第2分量:')
    cinput('第3分量:')
    disp('选定初值')
    x0[abc]
    误差求
    E00001
    迭代
    i0
    e2*E
    A0eye(3)
    while e>E
    F0[12*x0(1)x0(2)^24*x0(3)7x0(1)^2+10*x0(2)x0(3)11x0(2)^3+10*x0(3)8]
    x1x0A0^(1)*F0
    sx1x0
    F1[12*x1(1)x1(2)^24*x1(3)7x1(1)^2+10*x1(2)x1(3)11x1(2)^3+10*x1(3)8]
    yF1F0
    A1A0+(yA0*s)*s'(s'*s)
    x0x1
    A0A1
    emax(norm(s))
    ii+1
    end
    disp('迭代次数')
    i
    disp('迭代次数')
    x0
    toc

    方程2牛顿法
    tic
    format long
    初值
    disp('请输入初值')
    ainput('第1分量:')
    binput('第2分量:')
    cinput('第3分量:')
    disp('选定初值')
    x[abc]
    误差求
    E00001
    迭代
    i0
    e2*E
    while e>E
    F[3*x(1)cos(x(2)*x(3))05x(1)^281*(x(2)+01)^2+sin(x(3))+106exp(1)^(x(1)*x(2))+20*x(3)+(10*pi3)3]
    f[3x(3)*sin(x(2)*x(3))x(2)*sin(x(2)*x(3))2*x(1)162*x(2)815cos(x(3))x(2)*exp(1)^(x(1)*x(2))x(1)*exp(1)^(x(1)*x(2))20]
    det_x((f)^(1))*(F)
    xx+det_x
    emax(norm(det_x))
    ii+1
    end
    disp('迭代次数')
    i
    disp('迭代次数')
    x
    toc

    方程2拟牛顿法
    tic
    format long
    初值
    初值
    disp('请输入初值')
    ainput('第1分量:')
    binput('第2分量:')
    cinput('第3分量:')
    disp('选定初值')
    x0[abc]
    误差求
    E00001
    迭代
    i0
    e2*E
    A0eye(3)
    while e>E
    F0[3*x0(1)cos(x0(2)*x0(3))05x0(1)^281*(x0(2)+01)^2+sin(x0(3))+106exp(1)^(x0(1)*x0(2))+20*x0(3)+(10*pi3)3]
    x1x0A0^(1)*F0
    sx1x0
    F1[3*x1(1)cos(x1(2)*x1(3))05x1(1)^281*(x1(2)+01)^2+sin(x1(3))+106exp(1)^(x1(1)*x1(2))+20*x1(3)+(10*pi3)3]
    yF1F0
    A1A0+(yA0*s)*s'(s'*s)
    x0x1
    A0A1
    emax(norm(s))
    ii+1
    end
    disp('迭代次数')
    i
    disp('迭代次数')
    x0
    toc

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    《数值分析》课程实验报告

    《数值分析》课程实验报告姓 名: 学 号: 学 院: 机 电 学 院 日 期: 2015 年 X 月X...

    3年前   
    2057    0

    数值计算方法实验报告

    学 生 实 验 报 告实验课程名称 数值计算方法I 开课实验室 数学实验室 学 院 理学院 年...

    1年前   
    396    0

    数值分析答案

    习题二2-1 已知y=f(x)的数值如下:(1) x0123y2312147(2)x-2-101y154524求Lagrange插值多项式并写出截断误差。解:(1)(2)2-2 已知函数lnx...

    2年前   
    631    0

    数值积分上机实验报告

    数值积分上机实验报告题一:数学上已经证明了0141+x2dx=π成立,所以可以通过数值积分来求π的近似值。1.分别使用复合梯形、复合Simpson求积公式计算π的近似值。选择不同的h,对每种求...

    1年前   
    531    0

    数值分析试题及答案

    数值分析试题一、 填空题(2 0×2′)1. 设x=0。231是精确值x*=0.229的近似值,则x有 2 位有效数字.2. 若f(x)=x7-x3+1,则f[20,21,2...

    1年前   
    2429    0

    数值分析选择题

    数值计算方法选择题1 设某数,那么的有四位有效数字且绝对误差限是的近似值是( B )(A)0.693 (B)0.6930 (C)0.06930 (D)0.0069302 已知n对观测...

    1年前   
    1062    0

    数值分析选择题

    数值分析选择题 (1)1. 以下误差限公式不正确的是( ) A. B。 C. D. 2. 步长为的等距节点的插值型求积公式,当时的牛顿-科茨求积公式为( ...

    1年前   
    409    0

    数值分析复习题及答案

    数值分析复习题一、选择题1. 3.142和3.141分别作为的近似数具有( )和( )位有效数字.   A.4和3          B.3和2    C.3和4          D....

    1年前   
    571    0

    数值分析计算实习题

     《数值分析》计算实习题姓名: 学号: 班级: ...

    2年前   
    748    0

    数值分析检测题

    数值分析第一章检测题(黄)一、 填空题(每空4')1. 已知x=62.1341是由准确数a经四舍五入得到的a的近似值,试给出x的绝对误差限_______________.2. 设x和y的相对误...

    1年前   
    1139    0

    数值线性代数上机习题第四章实验报告

    第四章上机习题1考虑两点边值问题容易知道它的精确解为为了把微分方程离散化,把[0,1]区间n等分,令h=1/n,得到差分方程简化为从而离散化后得到的线性方程组的系数矩阵为对分别用Jacobi迭...

    1年前   
    379    0

    数值分析题库不含答案

    一. 单项选择题(每小题2分,共10分)1. 在下列四个数中,有一个数具有4位有效数字,且其绝对误差限为 ,则该数是( )A 0.001523 ...

    1年前   
    1125    0

    数值分析测试题答案

    测 试 题——数值分析一、选择题 1. 设近似值有位有效数字,,则其相对误差限为 A. B. C. 2. 要使的...

    1年前   
    1155    0

    数值分析模拟试卷(七)

     数值分析模拟试卷(七)班级 学号 姓名 一、填空(共30分,每空3分)1 设,则A的谱半径____...

    3年前   
    706    0

    数值分析模拟试卷(九)

    数值分析模拟试卷(九)班级 学号 姓名 一、 填空题(每空3分,共30分)1. 设,则差商 __________...

    3年前   
    785    0

    数值分析模拟试卷(六)

    数值分析模拟试卷(六)班级 学号 姓名 一、 填空题(每空2分,共30分)1. 近似数关于真值有...

    3年前   
    719    0

    数值分析题库填空部分

    数值分析题库-填空部分一. 填空 2.Gauss型求积公式不是 插值型求积公式。(限填“是”或“不是”)3.设lk(x)是关于互异节点x0, x1,…, xn, 的Lagrange 插...

    1年前   
    449    0

    数值分析各算法流程图

    数值分析各算法流程图 一、插值 1、 拉格朗日插值流程图:( 相应程序:lagrintp(x,y,xx)) ...

    5年前   
    1727    0

    数值分析部分填空练习

    数值分析-部分填空练习1 绪论(1). 要使的近似值的相对误差限£0.1%, 应至少取___4____位有效数字。=0.4…´10, a1=4, er£´10-(n-1)< 0.1% ,故可取...

    1年前   
    316    0

    数值分析模拟试卷(四)

    数值分析模拟试卷(四)班级 学号 姓名 一、 填空题(每空2分,共20分) 1、已知数 e = 2.718281828......

    3年前   
    708    0

    文档贡献者

    文***享

    贡献于2020-12-15

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档