南京理工大学计算方法上机实习报告题目1:方程求根的数值实验题目2:线性方程组求解的数值实验指导老师:李建良学生姓名:学号:学院:能源与动力工程学院专业:武器系统与发射工程班级:目录目录一、方程求根的数值实验...................................1(一)课程名称........................................1(二)摘要............................................1(三)引言...........................................1(四)计算公式(数学模型)..............................1(五)结构程序设计....................................2(六)部分程序分析....................................3(七)计算结果........................................5(八)结果分析和讨论..................................7二、方程求根的数值实验...................................8(一)课程名称........................................8(二)摘要............................................8(三)引言...........................................8(四)计算公式(数学模型)..............................8(五)结构程序设计....................................8(六)部分程序分析...................................10(七)计算结果.......................................11(八)结果分析和讨论.................................12方程求根的数值实验1一、课程名称:方程求根的数值实验二、摘要:本题用到Newton迭代法,求出函数的近似值。并讨论当公式中导数的取值不同对收敛效果的影响。三、引言:当用Newton迭代法求方程f(x)=0的根时,我们从Xo开始时,并用公式,....,2,1,0),('/)(1nxfxfxxnnnn计算序列X1,X2,…,为避免在每步都要计算导数,有人建议在每一步中都用)('0xf来代替)('nxf,也有人建议每隔一步计算一次Newton公式中的导数,这个方法由下式给出:),('/)(),('/)(222222222212nnnnnnnnxfxfxxxfxfxx对于以上建议的两种方法,以几个已知根的简单方程为例,与Newton法作数值比较,打印出每步迭代中每种方法的误差,以检查收敛性,这两种算法的效果如何?四、计算公式(数学模型):1、首先确定Xo的值且要使函数选取x^3+1或x^4导数值不为零。2、Newton法使用如下公式,....,2,1,0),('/)(1nxfxfxxnnnn计算出X1,X2,…,如果导数为零则弹出对话框,要求重新输入Xo。3、法二,....,2,1,0),('/)(01nxfxfxxnnn4、法三方程求根的数值实验2),('/)(),('/)(222222222212nnnnnnnnxfxfxxxfxfxx5、将用法二和法三算出的相对应的值求差,Y=b(k)-a(k)Z=c(k)-a(k)五、结构程序设计:1、数据流向图2、符号引用表符号类型数量入出作用n双精度型n*解的阶数k双精度型1*叠成系数x双精度型1*输出方程组的解a()数组nNewton法的解b()数组n法二的解c()数组n法三的解y双精度型1*法二与Newton法的误差z双精度型1*法三与Newton法的误差3、N-S流程图输入0x,n选取函数三种方法公式计算第二与第三种方法与Newton的误差Y,Z输出输入x和n方程求根的数值实验3六、部分程序分析:1、选取函数,x^3+1或x^4:IfOption1.Value=TrueThen……………………ElseIfOption2.Value=TrueThen……………………Endif2、判断是否函数导数为零:If3*a(0)*a(0)*a(0)=0ThenMsgBox(导数值为0,请重输)GoTo11EndIfIf4*a(0)*a(0)*a(0)=0ThenMsgBox(导数值为0,请重输)GoTo11判断是否导数为零重新输入方法一方法二方法三Text3.TextText4.TextText5.TextYN方程求根的数值实验4EndIf此处运用Goto语句将程序终止3、函数计算:(1)函数x^3+1:Text3.Text=x(&0&)=&a(0)&Chr(13)+Chr(10)Fori=0Tonk=(a(i)*a(i)*a(i)+1)/(3*a(i)*a(i))a(i+1)=a(i)-k=Text3.Text&x(&i+1&)=&a(i+1)&Chr(13)+Chr(10)NextText4.Text=x(&0&)=&b(0)&&y=&b(0)-a(0)&Chr(13)+Chr(10)Fori=0Tonk=(b(i)*b(i)*b(i)+1)/(3*b(0)*b(0))b(i+1)=b(i)-kText4.Text=Text4.Text&x(&i+1&)=&b(i+1)&&y=&b(i+1)-a(i+1)&Chr(13)+Chr(10)NextText5.Text=x(&0&)=&c(0)&&z=&c(0)-a(0)&Chr(13)+Chr(10)Fori=0Tonk1=(c(2*i)*c(2*i)*c(2*i)+1)/(3*c(2*i)*c(2*i))k2=(c(2*i+1)*c(2*i+1)*c(2*i+1)+1)/(3*c(2*i)*c(2*i))c(2*i+1)=c(2*i)-k1Text5.Text=Text5.Text&x(&2*i+1&)=&c(2*i+1)&&z=&c(2*i+1)-a(2*i+1)&Chr(13)+Chr(10)c(2*i+2)=c(2*i+1)-k2Text5.Text=Text5.Text&x(&2*i+2&)=&c(2*i+2)&&z=&c(2*i+2)-a(2*i+2)&Chr(13)+Chr(10)Next(2)函数x^4:Text3.Text=x(&0&)=&a(0)&Chr(13)+Chr(10)Fori=0Tonk=a(i)*a(i)*a(i)*a(i)/(4*a(i)*a(i)*a(i))a(i+1)=a(i)-kText3.Text=Text3.Text&x(&i+1&)=&a(i+1)&Chr(13)+Chr(10)NextText4.Text=x(&0&)=&b(0)&&y=&b(0)-a(0)&Chr(13)+Chr(10)方程求根的数值实验5Fori=0Tonk=b(i)*b(i)*b(i)*b(i)/(4*b(0)*b(0)*b(0))b(i+1)=b(i)-kText4.Text=Text4.Text&x(&i+1&)=&b(i+1)&&y=&b(i+1)-a(i+1)&Chr(13)+Chr(10)NextText5.Text=x(&0&)=&c(0)&&z=&c(0)-a(0)&Chr(13)+Chr(10)Fori=0Tonk1=c(2*i)*c(2*i)*c(2*i)*c(2*i)/(4*c(2*i)*c(2*i)*c(2*i))k2=c(2*i+1)*c(2*i+1)*c(2*i+1)*c(2*i+1)/(4*c(2*i)*c(2*i)*c(2*i))c(2*i+1)=c(2*i)-k1Text5.Text=Text5.Text&x(&2*i+1&)=&c(2*i+1)&&z=&c(2*i+1)-a(2*i+1)&Chr(13)+Chr(10)c(2*i+2)=c(2*i+1)-k2Text5.Text=Text5.Text&x(&2*i+2&)=&c(2*i+2)&&z=&c(2*i+2)-a(2*i+2)&Chr(13)+Chr(10)Next4、清空数据:PrivateSubCommand2_Click()Text1.Text=Text2.Text=Text3.Text=Text4.Text=Text5.Text=Option1.Value=FalseOption2.Value=FalseEndSub七、计算结果:1、Newton(x=2,n=7)(1)函数选x^3+1时(2)函数选x^4时方程求根的数值实验62、法二(x=2,n=7)(1)函数选x^3+1时(2)函数选x^4时3、法三(x=2,n=7)(1)函数选x^3+1时(2)函数选x^4时方程求根的数值实验7八、结果分析和讨论:1、三种方法总体上来看,Newton法是收敛最快的,而且计算过程中波动最小,法二在第四次计算后数值收敛十分缓慢,并且计算相同次数时Newton迭代法的误差最小,这表现出了Newton迭代法是一种收敛速度快准确度高的近似计算函数结果的方法。2、对于这三种方法,函数选x^3+1时,结果都越来越接近于-1,选x^4时,结果都越来越接近于0,即三种方法都能达到求根的目的。3、当函数选为x^3+1时,方法三比方法二收敛得快。但是当函数选x^4时,方法二又比方法三收敛得快,此现象分为幂的奇偶不同情况,当其为奇数时较快,这种现象可能是由于函数选x^4时引起的病态所产生的。4、Newton迭代法的缺点明显,需要每次求导数,计算工作量比较大,但因为Nweton迭代法得收敛速度极快,需要计算的步骤也比较少,所以计算量不是很大,计算结果也非常精确,在程序中的“性价比”较高。5、方法二中虽然只进行一次求导,但其收敛速度缓慢,达到所要求精度的计算次数过多,使得计算量加大,所以法二不适合用来方程求根运算。法三优点不突出也没有太大的缺点。收敛速度和计算量较为一般。6、所以我认为在实际应用中多用Newton迭代法。线性方程组求解的数值实验8一、课程名称:线性方程组求解的数值实验二、摘要:本题对于方程组用到Gauss消去法,求出方程组的解。并解释结果所发生的现象。三、引言:对于从2到9的每一个n值,解n阶方程组Ax=b。在这里A和b如下定义121(),(,,......,),(1),,1,2,...,,(1)(1),1,2,...,,TijnnnijiAabbbbaijijnbpnipiin其中,2()(227214(123)).24xpxxnnn解释发生的现象。四、计算公式(数学模型):1、首先确定n的值,n=2,3,4,5,6,7,8,92、系数1-ij1-jia)(,3、值)()(1-ip-1-inpbi,其中2()(227214(123)).24xpxxnnn4、进行Gauss消去法:5、解出最后结果五、结构程序设计:1、数据流向图线性方程组求解的数值实验92、符号引用表符号类型数量入出作用n双精度型8*阶数a()数组n*X的系数b()数组n*B的值x()数组n*输出的解p双精度型1求p调用过程aa双精度型1求b()调用过程3、N-S流程图输入确定n值运用消元计算相应的x值输出判断n是否在2~9之间输入n值YNa(i,j)=1/(i+j-1)b(i)=p(n+i-1)-p(i-1)x(n)=b(n)/a(n,n)线性方程组求解的数值实验10六、部分程序分析:1、判断n是否在2到9之间:n=Val(Text1.Text)Ifn2Orn9ThenMsgBox(请输入2到