当前位置: 首页 » 资讯 » 新科技 » 正文

Fortran中的数值积分和微分

IP属地 中国·北京 编辑:郑佳 敷衍设定 时间:2024-10-15 16:49:50

引言

数值积分和微分在科学计算和工程应用中非常重要。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中进行数值积分和微分的基本方法,包括梯形法、辛普森法、向后差分法和二阶中心差分法的具体实现和应用。通过这些示例,可以方便地进行数值积分和微分计算,满足科学计算和工程应用中的实际需求。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其内容真实性、完整性不作任何保证或承诺。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。