引言
数值积分和微分在科学计算和工程应用中非常重要。Fortran提供了强大的数值计算功能,可以方便地进行数值积分和微分。本文将介绍如何在Fortran中进行数值积分和微分,并提供一些实用的示例。
示例1: 梯形法数值积分
梯形法数值积分
以下代码展示了如何在Fortran中使用梯形法进行数值积分。
fortran
复制代码
program trapezoidal_integration
implicit none
www.fedex15538339803.com/jjkzvg/
wuhan.jinanguanlin.cn/uRSc19/
nanjing.jinanguanlin.cn/zlE1Bp/
zhengzhou.jinanguanlin.cn/marVgY/
chengdu.jinanguanlin.cn/XH5yw3/
integer, parameter :: n = 100
real :: a, b, h, integral
integer :: i
real :: x, f
! 定义积分区间 [a, b]
wuhan.tgoi.cn/Bkc1JF/
shenzhen.nanjing.tgoi.cn/lw8oWT/
henan.tgoi.cn/YbnmPp/
anhui.tgoi.cn/BOQBWy/
hefei.tgoi.cn/xXHo6K/
nanjing.tgoi.cn/Hk41EI/
a = 0.0
b = 1.0
! 步长
h = (b - a) / n
! 计算积分
integral = 0.5 * (f(a) + f(b))
do i = 1, n-1
x = a + i * h
integral = integral + f(x)
end do
integral = integral * h
print *, 'Integral of f(x) from', a, 'to', b, 'is', integral
contains
! 被积函数
real function f(x)
real, intent(in) :: x
f = x**2
end function f
end program trapezoidal_integration
代码解释
定义积分区间: 定义积分区间 [a, b],这里选择从 0.0 到 1.0。步长计算: 计算步长 h。积分计算: 使用梯形法计算积分值,并输出结果。被积函数: 定义被积函数 f(x),这里选择 f(x) = x^2。编译和运行
要编译并运行上述代码,可以使用如下命令:
bash
复制代码
gfortran trapezoidal_integration.f90 -o trapezoidal_integration
./trapezoidal_integration
示例2: 辛普森法数值积分
辛普森法数值积分
以下代码展示了如何在Fortran中使用辛普森法进行数值积分。
fortran
复制代码
program simpson_integration
implicit none
integer, parameter :: n = 100
real :: a, b, h, integral
integer :: i
real :: x, f
! 定义积分区间 [a, b]
a = 0.0
b = 1.0
! 步长
h = (b - a) / n
! 计算积分
integral = f(a) + f(b)
do i = 1, n-1
x = a + i * h
if (mod(i, 2) == 0) then
integral = integral + 2.0 * f(x)
else
integral = integral + 4.0 * f(x)
end if
end do
integral = integral * h / 3.0
print *, 'Integral of f(x) from', a, 'to', b, 'is', integral
contains
! 被积函数
real function f(x)
real, intent(in) :: x
f = sin(x)
end function f
end program simpson_integration
代码解释
定义积分区间: 定义积分区间 [a, b],这里选择从 0.0 到 1.0。步长计算: 计算步长 h。积分计算: 使用辛普森法计算积分值,并输出结果。被积函数: 定义被积函数 f(x),这里选择 f(x) = sin(x)。编译和运行
要编译并运行上述代码,可以使用如下命令:
bash
复制代码
gfortran simpson_integration.f90 -o simpson_integration
./simpson_integration
示例3: 向后差分法数值微分
向后差分法数值微分
以下代码展示了如何在Fortran中使用向后差分法进行数值微分。
fortran
复制代码
program backward_difference
implicit none
integer, parameter :: n = 100
real :: a, b, h
integer :: i
real, dimension(n+1) :: x, f, df
! 定义区间 [a, b]
a = 0.0
b = 1.0
! 步长
h = (b - a) / n
! 初始化 x 和 f(x)
do i = 0, n
x(i+1) = a + i * h
f(i+1) = exp(x(i+1))
end do
! 计算向后差分 df/dx
do i = 2, n+1
df(i) = (f(i) - f(i-1)) / h
end do
! 打印结果
print *, 'x', 'f(x)', 'df/dx'
do i = 2, n+1
print *, x(i), f(i), df(i)
end do
end program backward_difference
代码解释
定义区间: 定义区间 [a, b],这里选择从 0.0 到 1.0。步长计算: 计算步长 h。初始化 x 和 f(x): 初始化自变量 x 和函数值 f(x),这里选择 f(x) = exp(x)。计算向后差分: 使用向后差分法计算数值微分 df/dx,并输出结果。编译和运行
要编译并运行上述代码,可以使用如下命令:
bash
复制代码
gfortran backward_difference.f90 -o backward_difference
./backward_difference
示例4: 二阶中心差分法数值微分
二阶中心差分法数值微分
以下代码展示了如何在Fortran中使用二阶中心差分法进行数值微分。
fortran
复制代码
program central_difference
implicit none
integer, parameter :: n = 100
real :: a, b, h
integer :: i
real, dimension(n+1) :: x, f, df
! 定义区间 [a, b]
a = 0.0
b = 1.0
! 步长
h = (b - a) / n
! 初始化 x 和 f(x)
do i = 0, n
x(i+1) = a + i * h
f(i+1) = log(x(i+1) + 1.0)
end do
! 计算中心差分 df/dx
do i = 2, n
df(i) = (f(i+1) - f(i-1)) / (2.0 * h)
end do
! 打印结果
print *, 'x', 'f(x)', 'df/dx'
do i = 2, n
print *, x(i), f(i), df(i)
end do
end program central_difference
代码解释
定义区间: 定义区间 [a, b],这里选择从 0.0 到 1.0。步长计算: 计算步长 h。初始化 x 和 f(x): 初始化自变量 x 和函数值 f(x),这里选择 f(x) = log(x + 1)。计算中心差分: 使用中心差分法计算数值微分 df/dx,并输出结果。编译和运行
要编译并运行上述代码,可以使用如下命令:
bash
复制代码
gfortran central_difference.f90 -o central_difference
./central_difference
总结
本文介绍了在Fortran中进行数值积分和微分的基本方法,包括梯形法、辛普森法、向后差分法和二阶中心差分法的具体实现和应用。通过这些示例,可以方便地进行数值积分和微分计算,满足科学计算和工程应用中的实际需求。