萧伟崎计算方法作业_第1页
萧伟崎计算方法作业_第2页
萧伟崎计算方法作业_第3页
萧伟崎计算方法作业_第4页
萧伟崎计算方法作业_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上机实验用二分法求非线性方程的实根算法思路:找到方程根可能存在的解区间,然后循环的取区间中值,将原解区间一分为二, 然后判断两个小区间解的存在性,藉此缩小解区间的范围,达到逼近解的效果。算法流程图:开始源程序代码:def f(x):return x*xfcx - 2*x -5 5left = input (打二r)right = input。Qx0.0 =酶01if left)*f(right)00: 岛13= while f(x) ! = 0 ; print xG5 .:xYldt+ri前G/316:lil.7 :iF f (x) *f (left) & IISright=x19:: if

2、abstright-leFt) e:的;20;:break必2T 电:与工工 :iJxontlnueJ,else ::j24:j =Left=x“25If ab5(riht-lGt) A/yAA/XA/X/pcontinue29=; i :.30 print x实验结果:_ O Console 及CTi4 |terminateda spidcnpy DjVyth(HApythonxw司鼻堂人蓝司:23乐2.252.125 2.B&25 203” 31 日 9375 2.1015625 .09765625 5.0557031352.0947265625 2.0342362S125 2.0wa24

3、2Laa 2.05460449219 2.09454345703结果分析:二分法可以粗略确定解所在的区间,然而要想真正的逼近并且达到一定的精度,关键在 二分的次数,以及解区间的大小,由实验可见,实验执行了很多次二分的过程,最后的区间 范围小于要求的误差限即可。由实验结果可见,后面几个实验数据,前面几位基本上固定不动了。上机实验二用迭代法求非线性方程的实根算法思路:x 1=(x),因为此等价方程的一阶倒数 将x1代入等价方程后的新结果x2 =(x1)将方程f (x) = 0 ,化为一个等价的方程 的绝对值必须小于1,可以由泰勒级数公式发现, 更加逼近真实值算法流程图:开始K=1X1 =(x0)结

4、束源程序代码: -150即idu黑iinport math- def fa(K):return (natti .exp( -x)+l5 x input (F =士H )6 匕二 ,0005iuhi le abs( f a k) - k) c :M =干m (耳)! 9print xx fa(x)print x实验结果:曰 Console 图 spider.py (D:Pythonpython.exe 害常人才代朝:二:卡|i.e1.367879441171.2546463 Se641.2B5176G7456l-27650L7ieS51.27853375see1.278319997021.27B

5、50479654实验结果分析:由实验结果可见,这种解法比二分法要快的多,可以更快的收敛到根,但初始迭代值,必须坐落在其收敛域中。上机实验三用牛顿法求非线性方程的实根算法思路:真实值x*是y=f (x)与x轴的交点,由计算(xk, f (xk)的切线与x轴的交点xk+1, 重复上述过程,可以使 xk+n逼近x*算法流程图:源程序代码:p s.pider 第UCGfl 1 nC-UlTT qimport 时mth- def f(xj!return )c*niath. exp( -x)51 def fa (x):Eturn 1-Hrath. exp( -x)7S x = input(,:一 * )9

6、 e - 0.0O0QLIS |11 whil abstf(x)/f3(k) & : .,12x = ic-f (x)yf a(K)L13print xx = x-i(x)/fa(x)print x实验结果:mpr r jur rvV 0 J了 jAle Edit Refactoring Source Navigate Search Fr3 r叁;a Console 笈9 spider.py D:Pythonpyth o n .exe才蛤人生代枕6 5|&r 56631131970.56714316503556714325041实验结果分析:牛顿迭代法拥有比上述迭代法更快的迭代速度,因其牛顿迭

7、代法为至少二阶收敛,故比实验二收敛的速度更加快。上机实验一用高斯列主消元法求解线性方程组 算法思路:型同与矩阵的行消元变换,只不过,消元变换之前,先用初等行变换将主对角线上 的元素变为列元素的绝对值最大的那个元素。算法用递归的方法实现的 算法流程图:开始 import math源程序代码:#coding=utf-8回代求出解结束输出 解def major (x,y,A,n,b): if (x=n or y=n): returnmax = abs(Axy) row = xfor i in range(x,n, 1):if abs(Aiy) max: max =abs(Aiy) row = ite

8、mp = AxAx = ArowArow = temptemp = bxbx = brow brow=tempmajor(x+ 1 ,y+ 1,A,n,b)#递归寻找主元素return def eliminate (x,y,A,n,b): if (x=n or y=n): return TOC o 1-5 h z if Axy=0:print error returnforiinrange(x+1 ,n,1):R = Aiy/Axy forkinrange(y+1 ,n,1):Aik = round(Aik - R*Axk ,6)bi = round(bi - R*bx ,6)Aiy=0eli

9、minate(x+ 1, y+ 1, A, n,b) #递归进行消元return def back (x,y,A,X,n,b): if (x 0or yi- dp- h 虹 lc(K,y,n,bj :37jt y43return4445 A =47也也1.1.自*1,仇L8,LL优L.上国J 屈.49菠电,g】,/、ZL5111.0,1531仇上“a.L 仇L电.凯 L 孔Ldl.at.由j-Mil.%2.%1.0,L%L%L 露 1.苞,.31.%1.可,553%明工41也工.*1.也1如1*%1.%修士S657 b 3、.R.&d吊应也旌也后1肛小咒附户耳风下了-日产5-打赤 X 一曲.0

10、避浦乱日,心为我露乱射心力力心0m节 major ft a % 1 % 的EG elininaE(0jO,AlGb)口工 backf.A.K.ie.b、曰anta1 口箕遂0r厨wlermirmledA Tpid 白r.py【OtPythorAponMEi.e, 3, 5也 %a 5,e, fl.e,九电*机* q.也 二肌叼结果分析:列主元素高斯消去法,其计算主要在于消去过程的乘法,由于将主对角线上的元素都变 成了列主元素,因此减少了有小数被大数吃掉的情况上机实验五用雅克比迭代法解线性方程组Max|xi -yi| e ):if k 100 :print(迭代失败)breakk += 1for

11、 i in range( 0, 3):sum = 0.0for j in range( 0, 3):if i != j :sum += aij * xjyi = (bi - sum) / aii d = 0.0for j in range( 0, 3):#计算无穷阶范数if d d :norm = dfor j in range( 0, 3):xj = yjprint k print x实验结果:,门4 - k += 11 15 for i in rarge(0,3: sum - 0.0, 17:for j in range(fi,3):rl8:=if 1 1= j :S5MI k- ji j

12、j / X2:yi - (bi bum) / ai61 d = ti.o.for j in rargE(0,i): 心3i+(1 ri ;nJ6 ::norn - d27 for j in rarige(0j33:xj = yjj2g print k30 print x口 Me业 E3 M / G | 事eler Ein 峨d % sp 诂lerpy IDaPythorApWlroiLw鼠w18L3 99999G419g$165G, 2.999973&S379S1&4, 1,999996938339203结果分析:由结果可知,总共迭代 18次,结果都在误差范围之内,与高斯消元法不同的是,迭代

13、法每一次迭代执行 n (n -1)次乘法,也不一定比高斯消元法速度快上机实验六用拉格朗日插值多项式求函数的近似值算法思路:构造一个唯一的高次多项式,使所有样本点( xi , yi)都有f (xi) = yi 算法流程图:开始输入(xi,yi) ,ni=0,1.n源程序代码:k=k+1import math1.02652 x= 0.4 , 0,55 , 0.65 , 0.8 , 0,9 y= 0,4175 , 0.57815 , 0.69657 , 0.88811x1= 0,5 , 0,85 , 1.05 TOC o 1-5 h z foriinx1:z= 0.0forkinrange(0,5)

14、:t= 1.0forlinrange(0,5):ifl!= k :t=t*(i - xl) / (xk - xl)z += t*ykprint p(x) =+ str(z)实验结果:J-1 日 一-1 inport math3苒=10,4押,50.65乱名.酊刃d y= 0.4175 , 0.S781S ,0.6g657 , 0.RS811 /1.02652*1-弧 5j0.B5J.85 For i in wl 7Z-0.0Hfar k in rangc(5,S):3t=T.。10far 1inrange(0j5);Sil:if1 I- k ;*17_ t-t*(l - *1) / (4N -

15、 x(l)i t- t*yfkprint p(x) 1r 4- str(z)如田1k国. X派R皇| spider.py Djhcsnyiiin-mLexsp(x)二日.52Mlb” 1429p(x) =6.956049971429p(x) 1.2582257143结果分析:实验根本不会计算出高次多项式的参数,每次将输入的x代入到各个基函数中运算即可,插值结果分别为 p(0.5) = 0.522 ,p(0.85) = 0.956,p(1.05) = 1.258上机实验七用牛顿插值多项式求函数的近似值算法思路:构造一个唯一的高次多项式,使所有样本点( xi , yi)都有f (xi) = yi,

16、但是多项式 系数不需要每次重新计算,添加一个样本点,计算一次差商即可,本题运用滚动数组而非矩阵的方式计算差商算法流程图:Fi =Ti=yi牛顿插值法#coding=utf-8x= 0.4 , 0,55 , 0.65 , 0.8 , 0,9 y= 0,4175 , 0.57815 , 0.69657 , 0.88811 , 1.02652 x1= 0,5 , 0,85 , 1.05 F = y:T = y:def f (a):z =0.0for i in range( 0, 5):t= 1.0for k in range( 0,i):t=t*(a-xk)z += t*Fireturn zfor i in range( 0, 5):if i% 2 = 0:Fi = Tielse :Ti = Fifor k in range(i+ 1, 5):if i % 2 = 0:Fk = (Tk - Tk- 1) / (xk- xk-i- 1)else :Tk = (Fk - Fk- 1) / (xk- xk-i- 1)for i in x1:print f(i)运行结果4 y= q.4175 ,H*57815 ,电.69657 1KP25524 xl=Oi5JO.O5JlH05& F viT =def f!&2 =9.09for i in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论