Как решить функцию между диапазоном (0,2) с разными шагами для x и y в Фортране без массивов?

По сути, мне нужно решить функцию, я использую x^2 * y^3 для примера, но использую значения x и y в диапазоне (0,2), с разными шагами для значений x и значений y. Например, если шаг был равен 1 как для x, так и для y, я бы просто решил функцию для (0,0),(0,2),(2,0), and (2,2).

Я не уверен, как это сделать в Фортране без использования массивов. Я думал об использовании «DO», а затем о решении функции для всех начальных значений "y", используя правильное количество шагов для "x,", но я не уверен, как я получу второе значение "y" со сбросом значений "x", чтобы "y" можно рассчитать со всеми значениями x.

Спасибо!

Вы можете иметь конструкцию do, такую ​​как do x = 0, 2, и вложить в нее другую конструкцию do, например do y = 0, 2, и итератор будет охватывать все комбинации x и y в диапазоне.

Rodrigo Rodrigues 27.09.2018 02:09

Я понимаю ваш вопрос: «Мне нужно вычислить значение функции, которая принимает два аргумента, x и y», это правильно? Решение вашей проблемы полностью зависит от того, как вы будете использовать полученные значения (вывод в файл, сохранение в массиве, оценка среднего значения или суммы и т. д.). Пожалуйста, обновите вопрос, указав эту информацию.

Pierre de Buyl 27.09.2018 13:15
Что такое компоненты React? Введение в компоненты | Типы компонентов
Что такое компоненты React? Введение в компоненты | Типы компонентов
Компонент - это независимый, многократно используемый фрагмент кода, который делит пользовательский интерфейс на более мелкие части. Например, если мы...
1
2
59
1

Ответы 1

Вот простое решение, основанное на конструкции do concurrent в современном Фортране (> 2008 г.), которое гарантированно будет равно или более эффективно, чем обычные циклы выполнения в Фортране:

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).

Мне любопытно, откуда берется гарантия эффективности - я не могу придумать, чтобы в стандарте говорилось об этом. Можете дать мне указатель?

Ian Bush 27.09.2018 08:50

Но не в этом конкретном случае. Я должен был упомянуть об этом.

King 27.09.2018 15:02

Другие вопросы по теме