Вопрос задан 15.07.2023 в 19:35. Предмет Информатика. Спрашивает Павлова Анна.

Fortran - написать подпрограмму для вычисления бесконечной суммы с заданной точностью е=0.00001.

S=Σ(-1)^i/(2*i)!
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Жомарт Арука.

subroutine SumSer(eps, res)

   real eps

   real(8) res

   real(8) :: sgn = -1, z = 1, a

   integer :: i = 1

   res = 0

   do

       z = z * (2 * i) * ( 2 * i - 1)

       a = sgn / z

       if (abs(a) <= eps) then

           exit

       endif

       res = res + a

       sgn = -sgn

       i = i + 1

   enddo

end subroutine SumSer

program MainProg

   real :: eps = 0.00001

   real(8) y

   call SumSer(eps, y)

   write(*,'(1X,F9.6)') y

end program MainProg


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно! Вот пример подпрограммы на языке Fortran для вычисления бесконечной суммы с заданной точностью:

fortran
program InfiniteSum implicit none integer :: i real :: term, sum, error ! Инициализация переменных sum = 0.0 error = 1.0 i = 0 do while (error > 0.00001) ! Вычисление очередного члена суммы term = (-1.0)**i / real(factorial(2*i), kind=8) ! Используется 8-байтовый тип для большей точности ! Обновление суммы sum = sum + term ! Проверка условия окончания суммирования error = abs(term) ! Переход к следующему члену i = i + 1 end do print *, "Сумма:", sum print *, "Число слагаемых:", i contains ! Функция для вычисления факториала recursive function factorial(n) result(fact) integer, intent(in) :: n integer :: fact if (n == 0) then fact = 1 else fact = n * factorial(n-1) end if end function factorial end program InfiniteSum

В этом примере мы используем цикл do while, чтобы продолжать вычисления, пока ошибка (абсолютное значение текущего члена) больше заданной точности 0.00001. Каждый член суммы вычисляется с помощью формулы (-1)^i / (2*i)!, где i - номер члена. Мы также используем рекурсивную функцию factorial для вычисления факториала.

После выполнения программы будет выведено значение суммы и количество слагаемых, необходимых для достижения заданной точности. Обратите внимание, что для повышения точности используется 8-байтовый тип данных real.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос