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

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

Из физики известно, что равномерно ускоренное движение тела с массой ш под действие постоянной силы Г описывается соотношениями:

Г = а • т;

в = У0 • г + а • г2 I 2, где \, - время движения, Я - путь, пройденный телом за время Уо - начальная скорость, а - ускорение. Если ускорение не интересует, то эти два соотношения можно объединить в одно:

Б-У0-Ь + ¥/т-&/2 = 0.

Соотношение имеет 5 параметров: Я, Уо, 1, Г, т. В различных ситуациях могут быть заданы четыре из них, а пятый надо найти. Например, может быть путь, начальная скорость, сила, масса и надо найти время движения. Или наоборот, время задано и надо найти путь. Словом, возможны пять различных постановок задачи. Но все их можно объединить в одну. Заготовку описания подобной задачи на входном языке приложения можно составить, например, следующим образом:

{ Равномерно ускоренное движение }

Э = ; { путь }

УО = ; { начальная скорость }

¥ = ; { сила }

т = ; { масса }

t = ; { время }

{ уравнение }

3-У0*і:-0,5*Г* і:А2 / т

В зависимости от конкретной задачи четырем из пяти параметров надо задавать конкретные значения, а пятому параметру присвоить значение X. Например, если заданы Я, Уо, Г, т и требуется найти время движения Ї, то задание параметров может иметь следующий вид:

{ Равномерно ускоренное движение }

Э = 1; { путь }

40 = 1; { начальная скорость }

Р = 1; { сила }

т = 1; { масса }

t = X; { время }

{ уравнение }

Э-У0:^-0,5*Г* ^2 / т

Здесь заданы значения Я, Уо, Г, т, а параметру 1 присвоено значение X. Таким образом, параметр 1 стал неизвестным и его значение, удовлетворяющее уравнению, будет найдено при поиске корня. На рис. 4.16 показан результат решения данной задачи.

Рис. 4.16

Пример задачи с набором параметров

4.6 Приложение для решения различными методами уравнения, заданного пользователем

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

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

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

4.5 Метод Ньютона одномерный случай || Оглавление || 4.6.2 Программная реализация приложения


⇐ Предыдущая страница|

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Апрель
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31