• Составить программу (Python) вычисления приближенных значений определенного интеграла двумя предложенными методами, а также точного его значения по первообразной. Вычислить абсолютную и относительную ошибки для каждого приближенного метода. Пределы интегрирования a и b, а также число N подынтервалов задавать при вводе. Выполняя программы при вводимых N = 50 ∙ k, k = 1, 2, 3, …, 8, установить зависимость величины относительной погрешности от N.

    question img

Ответы 1

  • Python 3.7.0. Прикрепил текстовый файл с кодом.

    import math

    def fpod (x):           #значение подынтегральной функции

       F = 1 / x * math.log(x)

       return F

    def fperv (x):          #значение первообразной подынтегральной функции

       F = math.log(math.log(x))

       return F

    def metodtrap(N, a, b): # метод трапеций

       delx = (b - a) / N

       ind = a + delx

       sumfpod = 0

       sumfperv = 0

       while (ind < b):

           sumfpod += 2 * fpod(ind)

           sumfperv += 2 * fperv(ind)

           ind += delx

       sumfpod = ( sumfpod + fpod(a) + fpod(b) ) * delx / 2

       sumfperv = ( sumfperv + fperv(a) + fperv(b) ) * delx / 2

       print("Методом трапеции от подынтегральной функции: " + str(sumfpod))

       print("Методом трапеции от первообразной подынтегральной функции: " + str(sumfperv))

       return (sumfperv, sumfpod)

    def metodlevpr(N, a, b):    #метод левых прямоугольников

       delx = (b - a) / N

       ind = a

       sumprperv = 0

       sumprpod = 0

       while (ind < b):

           sumprperv += fperv(ind)

           sumprpod += fpod(ind)

           ind += delx

       sumprperv = delx * sumprperv

       sumprpod = delx * sumprpod

       print("Методом левых прямоугольников от подынтегральной функции: " + str(sumprpod))

       print("Методов левых прямоугольников от первообразной подынтегральной функции: " + str(sumprperv))

       return (sumprperv, sumprpod)

    N = int(input("N: "))

    a = int(input("a: "))

    b = int(input("b: "))

    trap = metodtrap(N, a, b) # кортеж (результат перв. подынт. функции, результат подынт. функции)

    pr = metodlevpr(N, a, b) # кортеж (результат перв. подынт. функции, результат подынт. функции)

    if (trap[0] < trap[1]):                     # нахождение абсолютной погрешности

       abs_pog_trap = trap[1] - trap[0]

       print("Абсолютная погрешность (метод трапеции): " + str(abs_pog_trap))

    else:

       abs_pog_trap = trap[0] - trap[1]

       print("Абсолютная погрешность (метод трапеции): " + str(abs_pog_trap))

    if (pr[0] < pr[1]):

       abs_pog_pr = pr[1] - pr[0]

       print("Абсолютная погрешность (метод л.прямоугольников): " + str(abs_pog_pr))

    else:

       abs_pog_pr = pr[0] - pr[1]

       print("Абсолютная погрешность (метод л.прямоугольников): " + str(abs_pog_pr))

    print("Относительная погрешность (метод трапеции): " + str(int(round(abs_pog_trap / trap[0], 2) * 100)) + "%")

    print("Относительная погрешность (метод л.прямоугольников): " + str(int(round(abs_pog_pr / pr[0], 2) * 100)) + "%")

    answer img
    • Автор:

      jaden
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years