Как задать условие в функции Python при расчете интеграла?

Рейтинг: 1Ответов: 0Опубликовано: 13.05.2023

Реализовал получение интеграла методом Симпсона. Его считает функция integrated(x_0, x_n, n), где x_0 - начало отрезка интегрирования, x_n - конец отрезка интегрирования, n - количество интервалов, на которые разбиваем отрезок интегрирования. Функция запрашивает желаемую точность расчета accuracy.

Структурно функция integrated() содержит внутреннюю функцию simpson(n), которая реализует алгоритм расчета. Затем считается погрешность err_runge, которая сравнивается с accuracy.

Если погрешность err_runge выше точности accuracy, количество разбиений n удваивается, и расчет начинается снова.

После расчета simpson() я реализовал цикл while, однако получил бесконечный цикл. Что исправить? Код:

def integrated(x_0, x_n, n):

    # 1. запросим точность 
    accuracy = float( input('Введите точность расчета (десятичная дробь): ') )
    
    # 2. Определим условие о том, что n должно быть четным 
    # (это является условием для вычисления погрешности по Рунге)
    assert n%2 == 0, 'Значение n должно быть четным'
    
    # 3. рассчитаем интеграл
    def simpson(n):
        ...
    
    # 4. Создадим для удобства переменные
    integ_1 = simpson(n)
    n *= 2
    integ_2 = simpson(n)

    # 5. применим критерий точности вычисления 
    err_simpson = abs((integ_2 - integ_1)/integ_2)
 
    # 6. Применим цикл
    while err_simpson > accuracy:
        integ_1 = integ_2
        n *= 2
        integ_2 = simpson(n)
   
    print('Интеграл по методу Симпсона: ', integ)
    print('Достигнутая ошибка интегрирования: ', err_simpson)
    
    return integ, err_runge, err_simpson

Ответы

Ответов пока нет.