我需要编写一个程序,使用牛顿-拉夫森方法和猜测估计来找到平方根。牛顿-拉夫森方法的方程式为:
xn+1 = xn-xn**2 − a/2*xn
其中n是迭代次数。
赋值告诉我应该在1和指定迭代的总次数之间执行一个循环。此外,循环的每一步,“解决方案”的当前值都应该用来计算解决方案的下一个值,其形式由方程指定。
提示:请记住,为变量赋值会在执行赋值本身之前计算等于的右侧。这意味着只需要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
我并不是在要求答案,只是在正确的方向上推动,我对编程完全是新手,这一切都让我感到困惑。我知道我在方程式方面做了一些错误的事情。
发布于 2015-03-28 21:26:37
这一行是错误的:
x = b-((b**2-a)/2*b)
b
是最初的猜测。你不想一直回到最初的猜测,你想使用之前计算的x的值。如果你想除以2*x
,你也不应该写/2*x
。我认为您需要执行以下任务:
x = x - ((x**2-a)/(2*x))
https://stackoverflow.com/questions/29322478
复制