如何在fortran 90中使用Newton-Raphson方法找到平方根

时间:2015-03-28 20:53:11

标签: math fortran fortran90 do-loops

我需要编写一个程序,使用Newton-Raphson方法使用猜测估计找到平方根。 Newton-Raphson方法的等式是:

xn+1 = xn-xn**2 − a/2*xn

其中n是迭代次数。

赋值告诉我应该在1和指定迭代的总数之间执行循环。以及循环的每一步,“解决方案”的当前值应该用于计算解的下一个值, 以等式指定的形式。

提示:请记住,为变量赋值会在执行前评估equals的右侧 任务本身。这意味着只需要一个x变量来计算每个新值;你不需要 'old_x'和'new_x'或类似。

这是我到目前为止所做的:

program assign_10_2
implicit none

real :: a, b, x
integer :: c, i, j 


write(*,*) 'please enter a value to determine the square root of'
read(*,*) a
write(*,*) 'please enter a value to use as the initial guess for the solution'
read(*,*) b
write(*,*) 'please enter a value for how many iterations it should perform to calculate the value'
read(*,*) c
write(*,*) a, b , c


do i= 1, c, 1
 x = b-((b**2-a)/2*b)
write(*,*)  i, x
end do

end program assign_10_2

我绝不是要求答案只是朝着正确的方向发展我对编程完全陌生并且对我来说非常困惑。我知道我在方程式方面做错了。

1 个答案:

答案 0 :(得分:0)

这一行错了:

x = b-((b**2-a)/2*b)

b是最初的猜测。你不想继续回到最初的猜测,你想要使用x之前的值。如果您想要除/2*x,也不应该写2*x。我想你想要以下任务:

x = x - ((x**2-a)/(2*x))