首页 > 解决方案 > 如何在没有数组的Fortran中解决具有不同步骤的x和y的范围(0,2)之间的函数?

问题描述

基本上,我需要求解一个函数,x^2 * y^3举个例子,但在 的范围内使用x和值,对于值和值有不同的步骤。例如,如果 和 的步长均为 1 ,我将只求解 的函数。y(0,2)xyxy(0,0),(0,2),(2,0), and (2,2)

我不确定如何在不使用数组的情况下在 Fortran 中完成此操作。我正在考虑使用“DO”,然后求解所有初始"y"值的函数,同时使用正确的步数,"x,"但我不确定如何在重置"y"值的情况下获得第二个值,"x"以便"y"可以计算与所有的x价值观。

谢谢!

标签: functionfortran

解决方案


这是一个简单的解决方案,基于do concurrent现代 Fortran (>2008) 中的构造,它保证与 Fortran 中的传统 do-loop 相同或更有效:

program hello
    integer :: x,y
    real    :: stepSizeX = 0.1, stepSizeY = 0.2
    do concurrent(x=0:2:1,y=0:2:1)
        write(*,*) (stepSizeX*x)**2 * (stepSizey*y)**3
    end do
end program Hello

您可以在此处对其进行测试(将编译器的 Fortran 标准设置为 -std=f2008 或 -std=gnu)。


推荐阅读