Добрый день, помогите, пожалуйста.
Я пишу программу, которая численными методами находит приблизит. корень заданного уравнения(трансцендентного). Интервал и точность заданы. Вычисляет машина, так что количество итераций, можно сказать, неограничено.
Обычно такие задачи разбивают на два этапа. 1. Отделение корня. 2. Уточнение
Вопрос по первой части. Я знаю, что корень отделён на [a..b] если:
f(а)*f(b) < 0
f — строго монотонна и непрерывна на [a..b]
Но, исходя из
и, исходя из того, что, не смотря на f(a)*f(b), на интервале может быть несколько пересечений с абсцисс(если не учитывать монотонность, то f(a)*f(b) могут ввести в заблуждение)
… я делаю так:
1. Пробегаю [a..b] и запоминаю количество смен знаков.
2. Если = 0 — не найден ни один
3. Если > 1 — найдено несколько
4. Иначе — понятно, есть корень и только один.
(Вопрос второй — верхний абзац и 1, 2, 3, 4 — справедливы? Я имею право так делать?)
Но вот проблема… функция должна быть непрерывна на a..b. Я уже писал что она задана… да. Но это упрощение. Т.е. она пока задана. «Завтра, послезавтра» программа сможет обрабатывать любую функцию. Поэтому программе неизвестно — прервна f или нет. И вот главный вопрос, как дать программе понять — прерывна f или нет? Что программа должна знать о f?
Ведь, я не могу даже сам утверждать прерывна или нет прямая линия. Если я очень пристально буду её рассматривать, может оказаться что она как будто из точек состоит и прерывна.
Наверное, нужны какие-то граничные условия, обусловленности, договорённости между людьми, насколько пристально следует рассматривать функцию. Существуют ли такие условия? Может быть это шаг пробега a..b?
Как решают обычно такие задачи на практике в прикладной математике?
Как машину научить разобраться в непрерывности? Не надо уметь программировать. Ну это, как, человека, который за секунду может производить миллионы любых арифметических операций, научить выполнить такие операции, чтобы получив результат, он понял… ага — прерывна, ага… непрерывна.
Пределы искать?
|
|||||||||||||||||
|
|
Похожие вопросы |