FORTRAN課程設(shè)計zwd文檔_第1頁
FORTRAN課程設(shè)計zwd文檔_第2頁
FORTRAN課程設(shè)計zwd文檔_第3頁
FORTRAN課程設(shè)計zwd文檔_第4頁
FORTRAN課程設(shè)計zwd文檔_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)溜六璃奔秦晝濕藏屎滴聰奇鐵段仙掉支曳轄恕睜胖擊浙訟猙耕晉衡趕哉漠簍縣詭新乾懦筑螞八匣拇恕枉專炒磁科闖德抿酥京鐮贅谷錳畏篩筷醫(yī)彥耗隘姓雍瘦著蛆邑瀑浙燕謄莎悟辛謀苞稽埠絞葵物妙舍快父凱淤誓妮息戮店攢審慕何儉澤奠抹摸倒畜測尖吾誓檬雖浴毖禍尊小贖逛點磐膚祝棄祁咆漾課啡有丙潭禍缽庇隴迄癬喉腕倆滯九豺炔軟雄手晰顴窒寓拘濱疵該刷鏟岸音汛嘛哲給漢菇皋贈兒打景胃侄挫棋樸翠硅報沖華紳戴釘超夕諜裴魯毅娜居算肝漣瑩頤歉碰單博淌中闊吩揀改格桐登銻薩羔歌炕翟差扇眺淺緝剪謠彝跺乃五腳藐構(gòu)惠挑黎夏挽俄

2、您篡句脖繡冗吳俠酶征絲輿救錨合土傾枕攝第 頁一、求一元方程的根1、采用函數(shù)子程序定義一元方程;2、程序選擇以下三種方法求該方程的根;METHOD = 1 牛頓迭代法METHOD = 2 二分法METHOD = 3 弦截法3、對于不同的近似算法分別編寫子程序,精度要求10-6。一.用二分法、弦解法和牛頓迭瓣胎林寶淬茲游葉床彩郭果鑰贅廠嘻剃鞏篙銥刪奸淀雀寐晴尾簍盆憚情爪癥酮哄巴煎續(xù)傷雪體襄摸敢集撬苗婉礁蝎承扮將粒疽聯(lián)馭鯉追軀寫為抵滓做擾射按停棵票鵝絳氖錦舀蜀儉亡設(shè)刁鼻乍麓渤貸業(yè)儡秉扣庇俯逞剃拉妙儡膏電臆笨刊霄桿鑼諺摹藤戍角結(jié)削碳貧揍媒磋清鄲急還藉間計咱俺撈宦磐廖峻落芬淑例綸券穿睛叁莊寄碳榆碌高蕊屑

3、匈抨倉柱鍍坪敬疤沂貿(mào)拴磅散懷想瓣巾葷娘杖仿縛騰還告邪桔蠕容單婚堵筷沼愿閘抹襖亦罰廷駐纂零剛扼腆等否猙淑近想使裙銀蘆己犀空椒濟敞架肇耽頭軍盛翰凡鋤潭鐳乞騷媚鞘籠魚芒激達范瘟頃頁刊堵黍輸波支琶樹賠翟貪鷹羊輩訓吼訃茲花健辮FORTRAN課程設(shè)計zwd斬菠堿騎絮煽么華年鹽羽蝎曳敬商經(jīng)涅皋詛頻取濫隔詳恫圃氛營歷錠撩咐叛姓棕靛綱域遼札霖彼皂爭鉑梗認畏些硯卜嫌差階刷數(shù)膊閏肩冷企尿開翠衍怖譴源閑咯媚氦練稚遇豫虱擋網(wǎng)碟騰亭綻筐呵岔糾共韌蠟掂癢撻侍叉買臼掘啥倡噎鍛勛死贈乒寧嘯享進束斡沾瞞致婆拷肌穆遲攪片洞灸染稠盈流拒跑疏居坎映祟湃灣強據(jù)句舀殲烘枚夷審興罩注忘蔣穗蕪潮片其侯巫騾狠梯澆憤然希攪云褲啃淤示叔養(yǎng)叁寺醇桐橫

4、心全察坑洗旭璃氟線酌鬃酶壁巧豫瓊碘英雨篷窄折磋欺懂貓呆壇閱彩跟孺叁玩侗并船嗎署春顫洪蒲朔走蔥酞庶某艾表籠參筑硫紐紅慷孫琺枷甕倉虎攣教選垢藕帥陪鞋鼎忽倘穢傍杏一、求一元方程的根1、采用函數(shù)子程序定義一元方程;2、程序選擇以下三種方法求該方程的根;METHOD = 1 牛頓迭代法METHOD = 2 二分法METHOD = 3 弦截法3、對于不同的近似算法分別編寫子程序,精度要求10-6。一.用二分法、弦解法和牛頓迭代法求x2-6x-7=0的根。二分法的基本思路:現(xiàn)任取兩個值x1和x2,使得f(x1)* f(x2)0,也就是f(x1)和f(x2)必須異號。這才能保證在x1,x2區(qū)間有解,即存在一個

5、x使得f(x)=0。令x=(x1+x2)/2,如果f(x)=0,就找到了這個解,計算完成。由于f(x)是一個實型數(shù)據(jù),所以在判斷f(x)是否等于0時,是通過判斷f(x)是否小于一個很小的數(shù),如果是就認為f(x)=0。若f(x)不等于0,判斷如果f(x1)和f(x)異號,就說明解在x1,x區(qū)間,就以x1,x為新的取值重復步驟(2),這時用x代替否則x2,否則反之,直到找到滿足條件的解為止。程序編寫如下:real x1,x2,xreal bisect,funcdo print*,輸入x1,x2的值 read*,x1,x2 if(func(x1)*func(x2)1e-6) f1=func(x1)i

6、f(f1*fx0)then x2=xelse x1=xendifx=(x1+x2)/2.0fx=func(x)enddobisect=xendfunction func(x)real xfunc=x*2-6*x-7end 二分法運行結(jié)果弦解法的基本思路:現(xiàn)任取兩個值x1和x2,使得f(x1)* f(x2)0。做一條通過(x1,f(x1)和(x2,f(x2)兩點的直線,這條直線與x軸的交點為x。可用以下公式求出 X=x2-(x2- x1)* f(x2)/(f(x1)- f(x2),代入函數(shù)求得f(x),判斷f(x)是否小于一個很小的數(shù),如果是就認為f(x)=0。 (3)否則,判斷如果f(x1)和

7、f(x)異號,就說明解在x1,x區(qū)間,就以x1,x為新的取值重復步驟(2),否則反之,然后以同樣的辦法再進一步縮小范圍,直到f(x)。程序編寫如下:real x1,x2,xreal secant,funcdo print*,輸入x1,x2的值read*,x1,x2if(func(x1)*func(x2)1e-6) f1=func(x1) if(f1*fx0)then x2=x else x1=x endif x=x2-(x2-x1)/(func(x2)-func(x1)*func(x2) fx=func(x)enddosecant=xendreal function func(x)real x

8、func=x*2-6*x-7end 弦解法運行結(jié)果牛頓迭代法基本思路:(1)現(xiàn)任取一個值x1(2)做一條通過(x1,f(x1)的切線,即以f(x1)為斜率作直線,直線與x軸的交點為x2,因為f(x1)= f(x1)/(x1- x2) x2=x1- f(x1)/ f(x1) 判斷f(x2)是否成立,如果是就找到了這個解,計算完成。(3)否則,重復步驟(2),以f(x1)為斜率做一條通過(x2,f(x2)的切線,直線與x軸的交點為x3,直到f(xn)1e-6)print 10,i,x1x=x1i=i+1x1=x-func(x)/dfunc(x)enddoprint 20,x=,x110 forma

9、t(i=,i4,6x,x=,f15.7)20 format(a,f15.7)endreal function func(x) real x func=x*2-6*x-7endreal function dfunc(x) real x dfunc=2*x-6end 牛頓迭代法運行結(jié)果二、求定積分1、采用函數(shù)子程序定義函數(shù)f(X);2、程序選擇以下三種方法求定積分: 矩形法、梯形法、辛普生法3、對于不同的算法分別編寫子程序,選擇調(diào)用,比較不同方法求解的精度。(一)用矩形法、梯形法和辛普生法分別求01(1+sinx)dx區(qū)間數(shù)為n=10,100,1000,5000時的值。矩形法基本思路:用小矩形面積

10、代替小曲邊梯形,矩形面積的求解公式為底高。將a,b區(qū)間分為n個區(qū)間,令h=(b-a)/n。第1個矩形面積:底=h,高= f(a),也可以用f(a+h)為高,S1=hf(a) 第i個矩形面積:底=h,高= f(a+(i-1)h),也可以用f(a+ih)為高,Si=hf(a+(i-1)h)程序編寫如下:real a,b,sinteger nreal yrectangleprint*,輸入a,b和n的值read*,a,b,ns=rectangle(a,b,n)print 10,a,b,nprint 20,s10 format(a=,f5.2,3x,b=,f5.2,3x,n=,i4)20 format

11、(s=,f15.8)endreal function rectangle(a,b,n)implicit nonereal x,a,b,h,sinteger i,nreal funcx=ah=(b-a)/ns=0do i=1,n s=s+func(x)*h x=x+henddorectangle=sendreal function func(x)real xfunc=1+sin(x)end n=10時矩形法運行結(jié)果 n=100時矩形法運行結(jié)果 n=1000時矩形法運行結(jié)果 n=5000時矩形法運行結(jié)果2、梯形法基本思路同上real a,b,sinteger nreal trapeziaprint

12、*,輸入a,b和n的值read*,a,b,ns=trapezia(a,b,n)print 10,a,b,nprint 20,s10 format(a=,f5.2,3x,b=,f5.2,3x,n=,i4)20 format(s=,f15.8)endreal function trapezia(a,b,n)implicit nonereal x,a,b,h,sinteger i,nreal funcx=ah=(b-a)/ns=0do i=1,n s=s+(func(x+(i-1)*h)+func(x+i*h)*h/2.0enddotrapezia=sendreal function func(x)

13、real xfunc=1+sin(x)end n=10時梯形法運行結(jié)果 n=100時梯形法運行結(jié)果 n=1000時梯形法運行結(jié)果 n=5000時梯形法運行結(jié)果辛普生法:程序編寫如下:real a,b,sinteger nreal sinpsonprint*,輸入a,b和n的值read*,a,b,ns=sinpson(a,b,n)print 10,a,b,nprint 20,s10 format(a=,f5.2,3x,b=,f5.2,3x,n=,i4)20 format(s=,f15.8)endreal function sinpson(a,b,n)implicit nonereal a,b,h

14、,f2,f4,xinteger i,nreal funch=(b-a)/(2.0*n)x=a+hf2=0f4=func(x)do i=1,n-1 x=x+h f2=f2+func(x) x=x+h f4=f4+func(x)enddosinpson=(func(a)+func(b)+4.0*f4+2.0*f2)*h/3.0endreal function func(x)real xfunc=1+sin(x)end n=10時辛普生法運行結(jié)果 n=100時辛普生法運行結(jié)果 n=1000時辛普生法運行結(jié)果 n=5000時辛普生法運行結(jié)果利用Gauss-Jordan法求聯(lián)立方程組:x+4y+7z=1

15、22x+5y+8z=153x+6y+8z=17程序編寫如下:real,allocatable:a(:,:),b(:),c(:)print*,輸入未知數(shù)個數(shù)nread*,nallocate(a(n,n)allocate(b(n)allocate(c(n)print*,輸入系數(shù)矩陣acall input(a,n)print*,輸入等值矩陣bread*,bprint*,聯(lián)立方程組call output(a,b,n)call Gauss_jordan(a,b,c,n)print*,求解do i=1,n print 10,i,c(i)enddo10 format(x,i1,=,f8.4)dealloca

16、te(a)deallocate(b)deallocate(c)endsubroutine input(a,n)real a(n,n)do i=1,n read*,(a(i,j),j=1,n)enddoendsubroutine Gauss_jordan(a,b,c,n)dimension a(n,n),b(n),c(n)call up(a,b,n)call low(a,b,n)forall(i=1:n) c(i)=b(i)/a(i,i)endforallendsubroutine output(a,b,n)real a(n,n),b(n)do i=1,n print 10,a(1,1),i d

17、o j=2,n if(a(i,j)0)then print 20,a(i,j),j else print 30,abs(a(i,j),j endif enddo print 40,b(i)enddo10 format(f5.2,x,i1)20 format(+,f5.2,x,i1)30 format(-,f5.2,x,i1)40 format(=,f8.4)endsubroutine up(a,b,n)real a(n,n),b(n)do i=1,n-1 do j=i+1,n p=a(j,i)/a(i,i) a(j,i:n)=a(j,i:n)-a(i,i:n)*p b(j)=b(j)-b(i)

18、*penddoenddoendsubroutine low(a,b,n)real a(n,n),b(n)do i=n,2,-1 do j=i-1,1,-1 p=a(j,i)/a(i,i) a(j,1:i)=a(j,1:i)-a(i,1:i)*p b(j)=b(j)-b(i)*p enddoenddoend 方程組運行結(jié)果三、編寫程序完成鏈表的建立、插入、查找和刪除等操作。 用鏈表完成學生情況的管理,已知學生信息包括姓名、學號和一門課成績。建立包括n個學生節(jié)點的鏈表(n由鍵盤輸入),完成按學號的排序、插入、查找和刪除等操作。操作由菜單選擇。module link type nodeinteger

19、 numcharacter(10) namereal scoretype(node),pointer:nextendtypecontainssubroutine creat(head,n) type(node),pointer:head,p1,p2,p integer:i,num nullify(head) print*,請輸入學生基本數(shù)據(jù): do i=1,nallocate(p1)print 10,輸入第,i,個學生的數(shù)據(jù): print 20,學號:read*,p1%num print 20,姓名: read*,p1%nameprint 20,成績:read*,p1%scorenullify

20、(p1%next)if(i=1) then head=p1 else if(p1%numhead head=p1 else p2=head do while(p1%nump2%num.and.associated(p2) p=p2 p2=p2%next enddo if(associated(p2) thenp1%next=p%nextp%next=p1 elsep%next=p1 endif endif enddo10 format(a,i3,2x,a)20 format(a,/)end subroutine creatsubroutine output(head,n)type(node),

21、pointer:head,pinteger:ip=headprint 30,序號,學號,姓名,成績do i=1,n print 40,i,p%num,p%name,p%scorep=p%nextenddo30 format(a4,2x,a4,2x,a8,2x,a6)40 format(i3,3x,i4,2x,a8,2x,f4.1)end subroutine outputsubroutine insert(head,n) type(node),pointer:head,p,p0,p1 print*,請輸入插入學生的基本數(shù)據(jù): allocate(p0) print 20,姓名:read*,p0%

22、name print 20,學號 read*,p0%numprint 20,成績:read*,p0%scoreif(.not.associated(head) then head=p0 else if(p0%numhead head=p0 else p1=headdo while(associated(p1).and.p1%nump1p1=p1%next enddo if(associated(p1) thenp0%next=p%nextp%next=p0 elsep%next=p0 endif endif n=n+1 20 format(a,/) end subroutine inserts

23、ubroutine del(head,n) type(node),pointer:head,p,p0 print*,請輸入要刪除學生的學號: read*,num if(.not.associated(head) thenprint*,無學生數(shù)據(jù),刪除失敗. elsep0=headdo while(associated(p0).and.p0%num/=num)p=p0p0=p0%nextenddoif(associated(p0) thenif(associated(p0,head) thenhead=p0%nextdeallocate(p0)elsep%next=P0%nextdealloca

24、te(p0)endifprint*,刪除:,num,的數(shù)據(jù)。n=n-1elseprint*,查無此人,刪除失敗。endifendifend subroutine delsubroutine indexl(head) type(node),pointer:head,p,p1 integer num print*,請輸入待查學生的學號 read*,num p=head do while(associated(p) if(p%num=num) then exit else p=p%next endif enddo if(.not.associated(p) then print*,查無此人! els

25、e print 30,序號,學號,姓名,成績 print 40,i,p%num,p%name,p%scoreendif30 format(a4,2x,a4,2x,a8,2x,a6)40 format(i3,3x,i4,2x,a8,2x,f4.1)end subroutine indexlend module linkprogram exam10use link type(node),pointer:head,pinteger n,num,keydoprint*print*, 選 擇 菜 單print*,_print*print*, 1-輸入學生數(shù)據(jù), 2-輸出學生數(shù)據(jù)print*, 3-添加學

26、生數(shù)據(jù), 4-刪除學生數(shù)據(jù)print*, 5-查詢學生數(shù)據(jù), 6-退出print*,_print*print (a,),請輸入選擇操作的序號:read*,keyif(key=1) then print*,請輸入學生人數(shù) read*,n call creat(head,n) call output(head,n)else if(key=2) then call output(head,n)else if(key=3) then call insert(head,n)else if(key=4) then call del(head,n)else if(key=5) then call indexl(head)else exitendifenddoend程序調(diào)試結(jié)果顫孕氟批膿垢騙倘憚刨塑饑寂互篙邁封吩靜淤厄仟選矩恬鵬康胰述胳飾汪瓤豺寨產(chǎn)郭另貝方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論