用Fortran语言:编写程序用牛顿迭代法求方程 f(x)=x3-3x-1=0 在 x0=2 附近的根。 牛顿迭代公式: xn-1=xn-f(xn)/f’(xn) 其中误差限为 10 -6,要求 1)将牛顿迭代法、f(x)、f’(xn) 分别编写为子程序。 2)主程序调用函数/子程序求方程的根。
时间: 2024-02-25 20:56:46 浏览: 158
下面是用Fortran语言编写的程序,用牛顿迭代法求方程 f(x)=x3-3x-1=0 在 x0=2 附近的根。
```
program newton_iteration
implicit none
real :: x0, xn, fx, dfx, error
integer :: i, max_iter
! 设置初值、最大迭代次数、误差限
x0 = 2.0
max_iter = 100
error = 1.0e-6
! 调用牛顿迭代法求根
xn = newton(x0, error, max_iter)
! 输出结果
write(*,*) 'The root of the equation is:', xn
contains
! 牛顿迭代法子程序
function newton(x0, error, max_iter) result(xn)
real :: x0, error, xn, fx, dfx
integer :: max_iter, i
xn = x0
do i = 1, max_iter
fx = f(xn)
dfx = df(xn)
xn = xn - fx / dfx
if (abs(fx) < error) exit
end do
return
end function newton
! 方程 f(x) 子程序
function f(x) result(fx)
real :: x, fx
fx = x**3 - 3.0*x - 1.0
return
end function f
! 方程 f'(x) 子程序
function df(x) result(dfx)
real :: x, dfx
dfx = 3.0*x**2 - 3.0
return
end function df
end program newton_iteration
```
在程序中,我们定义了三个子程序:`newton`、`f`、`df`,分别对应牛顿迭代法、方程 f(x)、方程 f'(x)。在主程序中,我们设置了初值、最大迭代次数、误差限,并调用了`newton`子程序来求解方程的根。
阅读全文