作者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