Применение языков программирования высокого уровня для реализации численных методов и прикладных программ
Рефераты >> Программирование и компьютеры >> Применение языков программирования высокого уровня для реализации численных методов и прикладных программ

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

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

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

Численные методы, используемые в данной работе.

При написании программы решения системы из двух нелинейных уравнений мною использовались два известных и широко применяемых численных метода. Это метод Ньютона и метод простых итераций.

Метод Ньютона. Этот метод обладает быстрой сходимостью и сравнительно хорошей точностью вычислений. В случае одного уравнения F(x)=0 алгоритм метода был легко получен путем записи уравнения касательной к кривой y=F(x). В основе метода ньютона для системы уравнений лежит использование разложения функций Fi(x1,x2, .xn) в ряд Тейлора, причем члены, содержащие вторые (и более высоких порядков) производные, отбрасываются.

Пусть приближенные значения неизвестных системы уравнений

F1(x1,x2, .xn)=0,

F2(x1,x2, .xn)=0,

(1)

Fn(x1,x2, .xn)=0,

(например, полученные на предыдущей итерации) равны соответственно a1,a2, .an. Задача состоит в нахождении приращений (поправок) к этим значениям Dx1, Dx2, , Dxn, благодаря которым решение системы (1) запишется в виде:

xi=ai+ Dx1, x2=a2+ Dx2, .,xn,=an+ Dxn. (2)

Проведем разложение левых частей уравнений (1) в ряд Тейлора, ограничиваясь лишь линейными членами относительно приращений:

F1(x1,x2, .xn) »F1(a1, .an)+

F2(x1,x2, .xn) »F2(a1, .an)+

Fn(x1,x2, .xn) »Fn(a1, .an)+.

Поскольку в соответствии с (1) левые части этих выражений должны обращаться в нуль, то приравняем нулю и правые части. Получим следующую систему линейных алгебраических уравнений относительно приращений:

=-F1

=-F2 (2)

=-Fn

Значения F1,F2, .,Fn и их производные вычисляются при x1=a1, x2=a2, .xn=an.

Определителем системы (2) является якобиан:

J=

Для существования единственного решения системы (2) он должен быть отличным от нуля на каждой итерации.

Таким образом, итерационный процесс решения системы уравнений (1) методом Ньютона состоит в определении приращений Dx1, Dx2, . Dxn, к значениям неизвестных на каждой итерации. Счет прекращается, если все приращения становятся малыми по абсолютной величине: max| Dxi|< e. В методе

i

Ньютона также важен выбор начального приближения для обеспечения хорошей сходимости. Сходимость ухудшается с увеличением числа уравнений системы.

В качестве примера рассмотрим использование метода Ньютона для решения системы двух уравнений

F1(x,y)=0, (3)

F2(x,y)=0.

Пусть приближенные значения неизвестных равны a,b. Предположим, что якобиан системы (3) при x=a; y=b отличается от нуля, т.е.:

J=¹0.

Тогда следующие приближения неизвестных можно аписать в виде

x=a-(F1

Величины, стоящие в правой части, вычисляются при x=a, y=b.

При программировании данного метода в качестве исходных данных задаются начальные приближения неизвестных a,b, погрешности e. Если итерации сойдутся, то выводятся значения x,y; в противном случае происходит вывод x,y по мере работы программы до прерывания ее пользователем.

Метод простой итерации.

Систему уравнений (1) представим в виде

x1=f1(x1 .xn),

x2=f2(x1 .xn), (4)

.

xn=fn(x1 .xn).

Алгоритм решения этой системы методом простой итерации напоминает метод Гаусса - Зейделя, используемый для решения систем линейных уравнений.

Пусть в результате предыдущей итерации получены значения неизвестных x1=a1, x2=a2, ., xn=an. Тогда выражения для неизвестных на следующей итерации имеют вид

x1=f1(a1,a2, .,an),

x2=f2(x1,a2, .,an),

xi=fi(xi, .,xi-1,ai, .,an),

xn=fn(x1, .,xn-1,an).

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

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

Часть первая.

Программа решения системы нелинейных уравнений методами Ньютона и простых итераций.

Общие сведения. Данная программа разработана как учебная и в силу этого не имеет кодового обозначения предусмотренного ГОСТом 19.402-78 и представляет собой исполняемый файл kursach.ехе.

Для функционирования программы необходим персональный компьютер с установленной операционной системой MS-DOS 3.30 и выше или полностью совместимой с ней.

Исходный текст программы написан на языке программирования высокого уровня С++ фирмы Borland версии 3.1 для DOS и WINDOWS и содержится в файле kursach.срр в форме пригодной к использованию его как текстового документа в среде ДОС. Исходный текст программы приведен в приложении 1.в

Функциональное назначение. Данная программа решает систему нелинейных уравнений методами Ньютона и простых итераций. Программа не является универсальной и решает только заложенную в неё систему только из двух нелинейных уравнений.


Страница: