[問題] 牛頓法出錯

看板Fortran作者 (青空)時間13年前 (2011/11/03 15:42), 編輯推噓2(209)
留言11則, 4人參與, 最新討論串1/1
下面是我寫的牛頓法: program ENVE-MATH implicit real*8 (a-h,o-z) !宣告 write(*,*)"此方程式為ax^4+bx^3+cx^2+dx+e" write(*,*)"請輸入方程式的a值" read(*,*)a write(*,*)"請輸入方程式的b值" read(*,*)b write(*,*)"請輸入方程式的c值" read(*,*)c write(*,*)"請輸入方程式的d值" read(*,*)d write(*,*)"請輸入方程式的e值" read(*,*)e write(*,*)"你輸入的方程式為ax^4+bx^3+cx^2+dx+e" write(*,*)"請輸入初始值" read(*,*)x write(*,*)"請輸入誤差值" read(*,*)z 1 f1=a*x**4+b*x**3+c*x**2+d*x+e !f1是原方程式 f2=4*a*x**3+3*b*x**2+2*c*x+d !f2是f1的一次微分 x2=x-(f1/f2) !算出新數值 error=abs(x2-x) !計算誤差的絕對值 if(error<=z)then go to 2 end if x=x2 write(*,*)x go to 1 2 write(*,*)x2 stop end 但是它顯示我有一個地方出錯 有高手可以給予指教嗎 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.29.185

11/03 18:16, , 1F
錯誤訊息??
11/03 18:16, 1F

11/03 18:22, , 2F
錯誤信息很多時候都有用,可以告訴你哪裡有問題
11/03 18:22, 2F

11/04 00:19, , 3F
不知道錯誤信息是指哪邊@@? 不過有個小地方想給你個小
11/04 00:19, 3F

11/04 00:20, , 4F
議 如果f2計算的值為0的話 (f1/f2)就會出錯
11/04 00:20, 4F

11/04 00:21, , 5F
不過通常f2會是0比較可能是在第一步給初始點計算
11/04 00:21, 5F

11/04 00:22, , 6F
會有問題(例如 初始給整數 剛好扣光之類的...~
11/04 00:22, 6F

11/04 21:54, , 7F
沒有給錯誤訊息,另外一問,為什麼標籤1,2 不用Continue
11/04 21:54, 7F

11/04 21:55, , 8F
還有,為什麼一開始不 implicit none 全部清空
11/04 21:55, 8F

11/04 22:16, , 9F
標籤不一定要加在continue前 不過goto還是少用比較好
11/04 22:16, 9F

11/04 22:18, , 10F
他現在用implicit real也不是不行,可以偷懶一下
11/04 22:18, 10F

11/04 22:18, , 11F
將來出問題不要忘了這一點就好
11/04 22:18, 11F
文章代碼(AID): #1EiaO1Lu (Fortran)
文章代碼(AID): #1EiaO1Lu (Fortran)