作者wtkao780302 (青空)
看板Fortran
標題[問題] 牛頓法出錯
時間Thu Nov 3 15:42:54 2011
下面是我寫的牛頓法:
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
1F:→ awer89:錯誤訊息?? 11/03 18:16
2F:推 terryys:錯誤信息很多時候都有用,可以告訴你哪裡有問題 11/03 18:22
3F:→ terrylove12:不知道錯誤信息是指哪邊@@? 不過有個小地方想給你個小 11/04 00:19
4F:→ terrylove12:議 如果f2計算的值為0的話 (f1/f2)就會出錯 11/04 00:20
5F:→ terrylove12:不過通常f2會是0比較可能是在第一步給初始點計算 11/04 00:21
6F:→ terrylove12:會有問題(例如 初始給整數 剛好扣光之類的...~ 11/04 00:22
7F:→ magaiml:沒有給錯誤訊息,另外一問,為什麼標籤1,2 不用Continue 11/04 21:54
8F:→ magaiml:還有,為什麼一開始不 implicit none 全部清空 11/04 21:55
9F:推 terryys:標籤不一定要加在continue前 不過goto還是少用比較好 11/04 22:16
10F:→ terryys:他現在用implicit real也不是不行,可以偷懶一下 11/04 22:18
11F:→ terryys:將來出問題不要忘了這一點就好 11/04 22:18