Мир объектов Excel 2000


Задача 13 Нахождение корней уравнения


Постановка задачи: Используя Решатель, найти решение уравнения: F(x) = a*x^4 + b*x^3 + c*x^2 + d*x + e =0,

В задачах 3 и 4 предыдущей главы для нахождения корней этого уравнения я применил метод Ньютона, и сам определял процесс построения решения. Покажу теперь, как воспользоваться Решателем. Наша задача без труда укладывается в общую постановку. Целевая функция - уравнение F(x). Требуется найти такое значение регулируемой ячейки x, чтобы функция F(x) приняла фиксированное значение, равное 0. Никаких ограничений на переменную x не накладывается. Так что все, что нужно, - записать в одну из ячеек рабочего листа переменную x, в другую - формулу, задающую функцию F(x), и вызвать Solver (Решатель) из меню Сервис. Вот как это выглядит на рабочем листе:

Вызов Решателя для поиска корней нелинейного уравнения

увеличить изображение
Рис. 2.9.  Вызов Решателя для поиска корней нелинейного уравнения

Как видите, в диалоговом окне Решателя:

  • в окне "Установить ячейку цели" (Set Target Cell) задана ссылка на ячейку, содержащую формулу для вычисления значения функции F(x);
  • включен переключатель "Значение" (Value of) и задано значение 0 в его окошке;
  • в окне регулируемых ячеек (By Changing Cells) задана ссылка на ячейку, содержащую x; кстати, можно щелкнуть командную кнопку "Догадка" (Guess), и Решатель автоматически попытается сформировать весь список регулируемых ячеек, от которых зависит целевая функция;
  • так как в нашем случае ограничений задавать не нужно, то больше ничего делать не нужно и можно запустить процесс поиска решения щелчком командной кнопки "Решение" (Solve).

Полученное решение зависит от выбора начального приближения, которое задается в ячейке x перед обращением к Решателю. Вот так выглядит окно Решателя при успешном завершении поиска решения:

Окно Решателя при успешном поиске решения

увеличить изображение
Рис. 2.10.  Окно Решателя при успешном поиске решения

Наряду с появлением уведомления об успехе поиска в окне "Отчеты" (Reports) предлагается выбрать любые из трех возможных отчетов по результатам работы. Кроме того, можно сохранить полученные результаты или восстановить первоначальные значения. Можно также запомнить созданную постановку задачи. Вот как выглядит отчет "Результаты" (Answer) в нашем случае:

Отчет "Результаты", уведомляющий о результатах решения

Рис. 2.11.  Отчет "Результаты", уведомляющий о результатах решения

И все же наш простой и классический в реализации метод Ньютона показал на этом примере лучшие результаты. Так, задавая 0 или 1 как начальное приближение, я получал решение по Ньютону. Решатель в этом случае решения не нашел. Вот как выглядит его окно, когда поиск заканчивается неуспехом:

Окно Решателя при неуспешном поиске

увеличить изображение
Рис. 2.12.  Окно Решателя при неуспешном поиске

Некоторым оправданием Решателя может послужить то, что на интервале [- 2, 3] функция имеет не только корни, но и точки локального максимума и минимума. Так вот при некоторых начальных приближениях процесс, определяемый Решателем, сходится не к корню, а к точке локального минимума.

Во всех описанных экспериментах целевая функция задавалась явной формулой, записанной в ячейке рабочего листа. Но в целевой функции допустим вызов функций, написанных пользователем. Вот результаты эксперимента, в котором в целевой функции, заданной Решателю, вызывается пользовательская функция "Polinom4" (текст ее уже приводился).

Успешный поиск решения при вызове пользовательской функции

увеличить изображение
Рис. 2.13.  Успешный поиск решения при вызове пользовательской функции

Заметьте, при разных начальных приближениях Решатель нашел оба корня нашего уравнения.




Начало  Назад  Вперед