📄 newton.f90
字号:
module numerical
implicit none
real,parameter :: zero=0.00001 !小于zero 的值将被当成0
contains
!割线法的函数
real function newton(a,f,df)
implicit none
real :: a !起始的猜值
real,external :: f !输入的求值函数
real,external :: df !函数的倒函数
real :: b !逼近得到的解
real :: fb !纪录f(a),f(b),f(c)
b=a-f(a)/df(a)
fb=f(b)
!在趋近于零之前要一直做的逼近工作
do while(abs(fb)>zero)
a=b
b=a-f(a)/df(a)
fb=f(b)
enddo
newton=b
return
end function newton
!求值的函数
real function func(x)
implicit none
real :: x
func=sin(x)
return
end function func
!倒数函数
real function dfunc(x)
implicit none
real :: x
dfunc=cos(x)
return
end function dfunc
end module numerical
program main
use numerical
implicit none
real :: a !起始的猜值
real :: ans !解
write(*,*)"输入起始值"
read(*,*)a
!输入起始猜值及求值得函数
ans=newton(a,func,dfunc)
write(*,"('x=',f8.4)")ans
stop
end program
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -