Численный метод сошёлся, но ответ не подходит: проверка корня в учебном расчёте

Разбираем сходимость, невязку и допустимую область на примере двух корней. Проверяем интервал, непрерывность и условия принятия результата решателя.

Обновлено 14 мин чтенияУчёба и навыки
Решение математической задачи в тетради

Успешное завершение ещё нужно истолковать

Программа возвращает число и сообщает, что численный метод сошёлся. В отчёт хочется сразу перенести результат с несколькими знаками после запятой. Но решатель знает только переданную функцию и параметры вычисления. Он может найти настоящий корень математического уравнения, который не соответствует физическому смыслу неизвестной. А некоторые условия остановки вообще требуют дополнительной проверки, действительно ли значение функции близко к нулю. Для лабораторной важно различать эти ситуации и объяснять, почему выбран именно этот ответ.

Разберём условную учебную модель с безразмерным расходом q. Это расход, поделённый на заданное опорное значение, поэтому складываемые выражения не создают смешения единиц. Для рассматриваемого режима допустим q не меньше нуля. Уравнение записано как q² + q − 6 = 0. Оно специально простое: точные корни известны и позволяют независимо проверить численную процедуру. Пример учит принимать результат решателя, а не описывает устройство настоящей установки или метод проектирования.

Отделите три разных вопроса к результату

Первый вопрос технический: чем закончился алгоритм при выбранных настройках? Он мог выполнить условие остановки, исчерпать число итераций или столкнуться с недопустимым значением. Второй вопрос математический: насколько возвращённое число удовлетворяет тому уравнению, которое вы фактически передали программе? Для этого вычисляют невязку, то есть значение функции в найденной точке. Третий вопрос предметный: относится ли найденная точка к допустимой области исходной задачи и к нужной ветви решения?

У этих вопросов разные ответы. Точка может удовлетворять уравнению с нулевой невязкой, но находиться вне допустимой области. Другая точка может быть допустима по знаку и масштабу, однако не удовлетворять уравнению. Техническое сообщение об успехе не заменяет оба содержательных условия. Запишите их отдельно до запуска. Тогда вы будете проверять заранее определённый результат, а не придумывать объяснение уже полученному красивому числу. Это особенно помогает, когда однокурсники запустили одну функцию с разными начальными приближениями.

Установите допустимую область из постановки

Для нашего q нижняя граница ноль следует из выбранного направления и рассматриваемого режима. Не нужно выводить её из того, что положительный корень выглядит приятнее. В другой модели отрицательный расход мог бы означать обратное направление и быть допустимым. Поэтому рядом с ограничением сохраняют основание: определение переменной, условие задачи или указание методики. Алгоритм не обязан угадать этот смысл по имени q. Если ограничение не передано и не проверяется, поиск может вполне законно уйти в отрицательную область.

У других неизвестных ограничения будут иными. Доля может иметь ограниченный интервал, длина — положительную область, аргумент логарифма — собственное условие существования. Выпишите все ограничения, относящиеся именно к вашей формуле. Не превращайте их в перечень общих примет неправильного ответа. Нужна конкретная область, на которой вы собираетесь вычислять функцию. Если для одного значения выражение не определено, это влияет не только на последнюю проверку, но и на допустимый путь итераций и выбор интервала поиска.

Не зажимайте ответ произвольной операцией после вычисления. Замена отрицательного результата нулём не делает его корнем: у нашей функции в нуле невязка равна минус шести. Взятие модуля от минус трёх тоже не помогает: в точке три функция равна шести. Такие действия меняют найденное число без решения уравнения. Если программа вернула недопустимый корень, нужно пересмотреть постановку поиска, а не косметически исправить его знак в итоговой таблице. Уже сохранённый результат оставляют как диагностический пример.

Проследите одну последовательность Ньютона

Метод Ньютона использует значение функции и производную для следующего приближения. Для нашего многочлена производная равна 2q + 1. Если начать с минус четырёх, первый шаг даст примерно минус 3,142857. Следующий приблизит значение к минус трём ещё сильнее. Последовательность сходится к отрицательному корню. Никакого нарушения арифметики здесь нет: многочлен действительно обращается в ноль при минус трёх. Неподходящим является выбор ветви для переменной, которая по условиям этой задачи неотрицательна.

Чтобы это увидеть, достаточно вручную подставить оба точных корня. Для минус трёх получаем девять минус три минус шесть, то есть ноль. Для двух получаем четыре плюс два минус шесть, снова ноль. Невязка не способна отличить эти корни по предметному смыслу: математически они равноправны. Поэтому команда «проверь подстановкой» полезна, но в этом примере недостаточна. После подстановки остаётся проверка допустимости. Отрицательный корень не становится ложным корнем многочлена; он является неподходящим решением нашей прикладной постановки.

Если начать с положительного значения, процедура может прийти к двум, однако успех одного такого запуска ещё не объясняет выбор метода. В отчёте лучше показать, откуда взялось начальное приближение и почему поиск должен относиться к нужной области. Не перебирайте множество начальных значений до получения желаемого числа без записи причин. В учебной работе важнее обоснованный выбор и независимая проверка, чем удачная попытка. Для простого непрерывного уравнения часто удобнее сначала найти подходящий интервал, который показывает существование корня в разрешённой области.

Найдите интервал с понятным основанием

На отрезке от нуля до трёх наш многочлен непрерывен. В нуле его значение минус шесть, в трёх плюс шесть. Значит, внутри есть корень. В этом примере на неотрицательной области функция строго возрастает, поскольку производная положительна. Поэтому там не может быть двух разных корней. Такая проверка показывает и наличие, и единственность допустимого решения. Она не требует доверять графику по нескольким пикселям и объясняет, почему интервал относится к правильной ветви.

Официальная документация SciPy описывает brentq как метод поиска на интервале с разными знаками функции на концах при условии непрерывности. Для нашего примера допустимый интервал от нуля до трёх подходит этим требованиям. Конкретный вызов оформляйте по правилам курса, указывая функцию, границы и выбранные допуски. Возвращённое значение должно быть близко к двум. После расчёта всё равно проверяют невязку и область: правильные параметры метода не защищают от случайной передачи другой функции или старых коэффициентов.

Если функция в одной из границ точно равна нулю, проверьте эту границу как отдельный кандидат. Не пытайтесь искусственно создавать разные знаки вокруг неё, выходя в недопустимую область. Если знаки одинаковые, это ещё не доказывает отсутствия корней внутри: функция может пересечь ось несколько раз или коснуться её. Метод с выбранной скобкой просто не получил требуемого основания. Обсудите другой интервал или другой способ исследования по программе курса. Изменение метода должно опираться на свойства функции, а не только на исчезновение сообщения об ошибке.

Разные знаки через разрыв не доказывают корень

Показательный контрольный пример — функция 1/(x − 1). В нуле значение отрицательное, в точке два положительное. Однако ни при каком допустимом x эта дробь не равна нулю. Между концами находится разрыв в единице. Поэтому отрезок от нуля до двух не является корректной скобкой для непрерывного поиска корня. Проверка только знаков дала бы ложное основание. Именно условие непрерывности отличает этот случай от нашего многочлена с корнем два.

График с редкими точками способен визуально соединить две ветви около разрыва и нарисовать убедительное пересечение. Начните с самой формулы: знаменатель не должен обращаться в ноль. Разделите область на участки, где функция определена, и исследуйте каждый подходящим способом. Не добавляйте маленькое число к знаменателю ради того, чтобы решатель перестал останавливаться: вы получите другую функцию. Если такая регуляризация предусмотрена методикой, её рассматривают как отдельное изменение модели, а не как техническое исправление исходного уравнения.

Для учебного отчёта этот контрпример полезен как проверка собственной процедуры. Если ваш алгоритм принимает интервал только по знакам и затем объявляет любой результат корнем, он не учитывает обязательную предпосылку. Запишите проверку области существования до выбора границ. У сложной функции могут быть логарифмы, корни, таблицы с разрывами или переключения режимов. Свойства каждой части требуют внимания. Увеличение числа итераций не восстанавливает отсутствующую непрерывность и не создаёт корень у функции, которая нигде не обращается в ноль.

Посмотрите на статус и вычислите невязку отдельно

В SciPy интерфейс root_scalar возвращает результат с найденным значением и сведениями о завершении, включая converged и flag. Прочитайте их, не извлекая только число root. При неуспехе сохраните причину и настройки, чтобы понять, какой шаг требуется дальше. Неудачный запуск с исчерпанным лимитом не становится успешным из-за правдоподобного последнего приближения. Вместе с тем само слово converged описывает критерий алгоритма; его необходимо связать с требованиями задачи и проверкой результата.

Документация newton отдельно предупреждает, что остановка по размеру шага не гарантирует нахождение корня, и рекомендует проверять результат. Поэтому после вычисления возьмите возвращённое число и заново вычислите исходную функцию в нём. Для q около двух невязка должна быть достаточно мала по выбранному критерию. Не подставляйте округлённое до целого число, если проверяете точность численного расчёта: это может скрыть различие между реальным результатом и его красивым отображением. Округление для текста выполняют после технической проверки.

Если решали преобразованное уравнение, вернитесь также к исходному. Возведение в квадрат, умножение на выражение с неизвестным или исключение знаменателя способны изменить набор кандидатов. В нашем многочлене отдельного преобразования нет, поэтому проверка проста. В реальной лабораторной сохраните цепочку от исходного баланса до функции для решателя. Это позволит различить численную неточность, неверную запись функции и корень, появившийся после неравносильного преобразования. Все три проблемы внешне могут выглядеть одинаково: программа вернула число, которое нельзя принять.

Допуск должен соответствовать проверяемой величине

Допуск по положению корня и допустимая невязка описывают разные вещи. Первый относится к расстоянию между значениями неизвестной, второй — к значению функции. Их нельзя автоматически сравнивать одним числом без учёта масштаба. В нашем безразмерном примере проще увидеть разницу, но она сохраняется. Если умножить всю функцию на тысячу, её корни останутся прежними, а невязка в той же приблизительной точке увеличится в тысячу раз. Это не означает, что положение найденного корня внезапно стало хуже.

Выберите критерий вместе с методикой курса и запишите, к чему он применяется. Не задавайте предельно малый допуск только ради длинной строки цифр. У исходных параметров есть точность, у используемой арифметики — ограничения. Для отчёта достаточно обоснованной точности, позволяющей решить поставленный вопрос. При изменении масштаба уравнения проверьте согласованность критерия невязки. Самостоятельно объявленный универсальный порог вроде «меньше одной миллионной всегда хорошо» не подходит всем функциям и единицам результата.

Полезно немного уточнить допуск и проверить устойчивость нужных для отчёта разрядов. Если существенно меняется само значение, разберите причину: не тот корень, недостаточное число шагов, плоская функция или ошибка реализации. Такое сравнение не заменяет анализа чувствительности модели к исходным данным. Стабильное вычисление при одних коэффициентах ещё не говорит, что эти коэффициенты измерены точно. Численная точность и достоверность исходной постановки требуют разных объяснений, хотя оба ограничения влияют на количество разумных цифр в ответе.

Что делать, если несколько допустимых корней

В другой задаче положительных решений может оказаться несколько. Тогда правило «оставить положительное» не завершает выбор. Требуется дополнительное условие: диапазон режима, начальное состояние, устойчивость или другая характеристика, предусмотренная моделью. Не добавляйте такое условие по собственному удобству. Покажите преподавателю найденные кандидаты, интервалы поиска и проверенные невязки. Вопрос «какую ветвь требует этот режим?» гораздо точнее сообщения «программа иногда выдаёт другой ответ». Он отделяет вычисление от недостающей предметной информации.

Поиск из одного начального приближения обычно не является доказательством, что других решений нет. Даже несколько удачных запусков показывают только обнаруженные кандидаты. Если требуется все корни на заданном отрезке, нужна отдельная процедура исследования по условиям курса. В нашем примере единственность на неотрицательной области обоснована возрастанием. Сохраните именно это основание. Не переносите вывод о единственности на соседнюю функцию после изменения коэффициентов или добавления нового члена: свойства модели могли измениться вместе с её записью.

Сравните поиск и контроль на одной версии коэффициентов

Существует незаметная ошибка проверки: решатель использовал старые коэффициенты, а невязку вычислили уже после их изменения. Тогда большое значение невязки не обязательно означает плохую сходимость. Сохраните один набор параметров для функции и контрольной подстановки. Если параметры передаются отдельно, покажите их в записи результата. В нашем примере это коэффициенты один, один и минус шесть. Изменение последнего числа создаёт другое уравнение, даже если имя функции осталось прежним и график внешне похож.

После правки коэффициента пересчитайте корень, статус и невязку вместе. Не переносите из прежнего запуска только отметку успешности. Для проверки полезно заменить свободный член на минус двенадцать: допустимый точный корень станет три, отрицательный — минус четыре. На прежнем интервале положительное решение теперь находится на правой границе. Этот контрольный вариант показывает, заметили ли вы обновление постановки и обрабатываете ли границу как кандидата. Вернитесь затем к исходному примеру и явно подпишите, к какому набору относится отправляемая таблица.

Оформите воспроизводимый вывод для защиты

В законченной записи укажите определение неизвестной, уравнение, допустимую область, метод и его исходные настройки. Затем приведите возвращённое значение, статус завершения, невязку и основание выбора ветви. Для нашего примера вывод содержит q около двух, успешный поиск на непрерывном отрезке от нуля до трёх, малую невязку и единственность неотрицательного корня. Минус три можно оставить в разборе как настоящий математический корень, исключённый по определению режима, а не как ошибку самой программы.

В Prepodoff удобно сохранить читаемое пояснение к вычислению рядом с методичкой в личной папке по предмету. Расчёт выполняйте в выбранной учебной программе. Перед защитой попробуйте объяснить, почему отрицательный корень проходит проверку подстановкой, а интервал через полюс не подходит при разных знаках на концах. Если ответы понятны без экрана решателя, у вас есть проверяемое решение. В итоговый отчёт попадает число с обоснованием принятия, а техническое сообщение алгоритма занимает своё место среди остальных свидетельств.

Была полезна статья?

Читайте также

Пригодится для подготовки