По сути, мне нужно решить функцию, я использую 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
.
Спасибо!
Я понимаю ваш вопрос: «Мне нужно вычислить значение функции, которая принимает два аргумента, x и y», это правильно? Решение вашей проблемы полностью зависит от того, как вы будете использовать полученные значения (вывод в файл, сохранение в массиве, оценка среднего значения или суммы и т. д.). Пожалуйста, обновите вопрос, указав эту информацию.
Вот простое решение, основанное на конструкции 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).
Мне любопытно, откуда берется гарантия эффективности - я не могу придумать, чтобы в стандарте говорилось об этом. Можете дать мне указатель?
Но не в этом конкретном случае. Я должен был упомянуть об этом.
Вы можете иметь конструкцию do, такую как
do x = 0, 2
, и вложить в нее другую конструкцию do, напримерdo y = 0, 2
, и итератор будет охватывать все комбинации x и y в диапазоне.