Методы решение систем нелинейных уравнений

Автор работы: Пользователь скрыл имя, 18 Декабря 2013 в 22:21, курсовая работа

Описание работы

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

Содержание работы

ВВЕДЕНИЕ 3
1. МЕТОДЫ РЕШЕНИЯ СИСТЕМ НЕЛИНЕЙНЫХ УРАВНЕНИЙ 4
2. ВЕКТОРНАЯ ЗАПИСЬ НЕЛИНЕЙНЫХ СИСТЕМ. 4
3. МЕТОД КОНЕЧНЫХ РАЗНОСТЕЙ, ИЛИ МЕТОД СЕТОК 5
4. ПРИБЛИЖЁННОЕ РЕШЕНИЕ КРАЕВЫХ ЗАДАЧ И ЗАДАЧ О СОБСТВЕННЫХ ЗНАЧЕНИЯХ МЕТОДА КОНЕЧНЫХ РАЗНОСТЕЙ. 15
5. РЕШЕНИЕ СИСТЕМ НЕЛИНЕЙНЫХ УРАВНЕНИЙ 18
6. РЕШЕНИЕ ЗАДАЧ В MathCad 22
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 32

Файлы: 1 файл

курсовойпо инфе.doc

— 396.00 Кб (Скачать файл)

 

(1.44)

 

Где .

Система (1.44) снова трехдиагональная и ее решение также можно получить методом прогонки. Его алгоритм здесь будет выглядеть так. Сначала находят коэффициенты

    (1.45)

Затем определяют коэффициенты   по следующим рекуррентным формулам:

 

   (1.46)

Обратный ход начинается с нахождения  :

    (1.47)

После этого находим  по формулам:

,  (1.48)

.     (1.49)

Относительно схемы (1.44) можно также доказать, что она имеет единственное решение при

 и ,

и это решение может  быть найдено описанным методом прогонки. Кроме того, для схемы (1.44) имеет место

Теорема

 

Пусть решение  граничной задачи (1.24), (1.25) единственно и непрерывно дифференцируемо на [a, b] до четвертого порядка точности включительно. Если выполняются условия

то схема (1.44) будет равномерно сходиться к решению задачи (1.24), (1.25) с погрешностью .

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

4. ПРИБЛИЖЁННОЕ РЕШЕНИЕ КРАЕВЫХ ЗАДАЧ И ЗАДАЧ О СОБСТВЕННЫХ ЗНАЧЕНИЯХ МЕТОДА КОНЕЧНЫХ РАЗНОСТЕЙ.

Основная мысль этого метода состоит в следующем: пусть дана  краевая задача

                                             

Для того чтобы получить приближенное решение  этой задачи, которую мы предполагаем разрешимой, разделим отрезок [а,b] на равные части длины   и для каждой точки деления    напишем уравнение, которое получается из дифференциального уравнения (5), если в нем производные заменить их приближенными выражениями с помощью соответствующим образом выбранных разностных отношений. Такую же замену  выполним и для производных, входящих в краевые условия. Тогда для нахождения приближенной величины значения искомого решения мы получим систему линейных уравнений, и тем самым исходную задачу сведем к задаче конечной.

Если дана задача о собственных значениях

                  

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

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

Если пользоваться конечными разностями более высоких порядков так же и для краевых условий, то при этом могут получиться члены, содержащие значения Y, соответствующее точкам, лежащим вне интервала (а,b). Этого можно избежать, если на концах данного интервала пользоваться приближениями более низких порядков.

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

                        (5)

 и дважды непрерывно дифференцируема, а  и непрерывны на отрезке . Если производные   заменить через

                        

то соответствующая система алгебраических уравнений будет иметь вид 

кроме того, краевые условия дает Если не есть собственное значение соответствующей однородной краевой задачи, т.е. (8) имеет единственное решение , тогда где

Если  есть -е собственное значение задачи и если - упорядоченные по возрастанию нули детерминанта написанной выше линейной системы, то при .

 

 5. РЕШЕНИЕ СИСТЕМ НЕЛИНЕЙНЫХ УРАВНЕНИЙ

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

 

Метод Ньютона. 

 

Рассмотрим нелинейную систему уравнений

 

(1)


или в векторной форме

f (x) = 0,

(1 ')


где

f   x 

Для решения системы (23? ) будем пользоваться методом последовательных приближений.

Предположим, известно k-е приближение

x(k

одного из изолированных корней x =   векторного уравнения (23 '). Тогда точный корень уравнения (1') можно представить в виде

х = x(k+ D x(k),

(2)


где D x(k=  - поправка (погрешность корня).

Подставляя выражение (24) в (23'), будем иметь

f (x(k+ D x(k)) = 0.

(3)


Предполагая, что функция f (x) непрерывно дифференцируема в некоторой выпуклой области, содержащей x и x(k), разложим левую часть уравнения (3) по степеням малого вектора D x(k, ограничиваясь линейными членами,

f (x(k+ D x(k)) = f (x(k)) + f ? (x(k)) D x(k= 0

(4)


или, в развернутом виде,

 

 

 

 

 

(4')


Из формул (4) и (4') вытекает, что под производной f '(x) следует понимать матрицу Якоби системы функций f1, f2, ..., fnотносительно переменных x1, x2, ..., xn, т. е.

f ' (x) = W(x) = ,

или в краткой записи

f ' (x) = W(x) =   (i, j = 1, 2, …, n).

Поэтому формула (4) может быть записана в следующем виде:

f (x(k) + W (x(k) D x(k= 0

Если det W ( х ) = , то D x(k= - W -1(x(k)) f (x(k)).

Отсюда видно, что метод Ньютона решения системы (1) состоит в построении итерационной последовательности:

x(k + 1= x(k- W -1(x(k)) f (x(k)) (k = 0, 1, 2, …).

(5)


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

Пример 1. Методом Ньютона приближенно найти положительное решение системы уравнений

исходя из начального приближения x= y= z=0,5.

Полагая:

х(0) = , f (х) = ,

имеем:

f (х) =

Отсюда

f ( х(0) ) =

Составим матрицу Якоби

W(x) = 

Имеем

W ( х(0) ) =  , причем D = det W ( х(0) ) = 

Следовательно, матрица W ( х(0) ) - неособенная. Составим обратную ей матрицу

-1 ( х(0) ) = 

По формуле (27) получаем первое приближение

х(1) = x(0) - W -1(x(0) ) f (x(0) ) =  -     =  +   =  .

Аналогично находятся дальнейшие приближения. Результаты вычислений приведены в Таблице 1. 

 

 

 

 

 

Таблица 1

Последовательные приближения корней

i

x

y

z

0

0,5

0,5

0,5

1

0,875

0,5

0,375

2

0,78981

0,49662

0,36993

3

0,78521

0,49662

0,36992


Останавливаясь на приближении x(3) , будем иметь:

x = 0,7852; y = 0,4966; z =0,3699.

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

Решить систему нелинейных уравнений:

2-x^2-y^2=0


1-x^2+y^2=0

 

Код в Pascal:

 

program MyGaus;

uses

crt;

const

nmax = 2; {кол-во уравнений}

type

t_matrix = array[1..nmax,1..nmax] of real;

t_answer = array[1..nmax] of real;

 

var

i,j,k,c,count   :byte;

arr  :t_matrix;

ans,b,x0     :t_answer;

tmp,tmp1,tmp2,E :real;

function a11(x1:Real): Real; {Частная производная по Х первого уравнения системы}

begin

a11 := -1/(2 * cos(x1) * sin(x1));

end;

function a21(x1:Real): Real; {Частная производная по Х второго уравнения системы}

begin

a21 := 200 * x1;

end;

function p1(x1,y1:Real): Real; {Вектор правой части для первого уравнения системы}

begin

p1 := sin(x1)/cos(x1) - y1;

end;

function P2(x1,y1:Real): Real; {Вектор правой части для второго уравнения системы}

begin

p2 := 100 * x1 * x1 - y1 - 10;

end;

begin

clrscr;

E := 0.0000001;

k:= 2; {кол-во уравнений в системе }

writeln('Vvedite priblizjenie ');

for i:=1 to k do begin

write('x',i,' = ');

read(x0[i]);

end;

count :=0;

repeat

count :=count+1;

tmp1 := x0[1];

tmp2 := x0[2];

x0[1] := ans[1] + tmp1;

x0[2] := ans[2] + tmp2;

 

b[1] := p1(x0[1],x0[2]);

b[2] := p2(x0[1],x0[2]);

arr[1,1] := a11(x0[1]);

arr[2,1] := a21(x0[2]);

arr[1,2] := -1;

arr[2,2] := -1;

 

for i:=1 to k-1 do begin

for j:=i+1 to k do begin

tmp:= arr[i,i]/arr[j,i];

for c:=i to k do begin

arr[j,c] := arr[j,c] * tmp - arr[i,c];

end;

b[j] := b[j] * tmp - b[i];

end;

end;

ans[j]:=b[j]/arr[j,j];

{Oбратный ход - поиск корней}

for i:=k-1 downto 1 do begin

tmp:=b[i];

for j:=i+1 to k do begin

tmp:= tmp - ans[j] * arr[i,j];

end;

ans[i]:= tmp/arr[i,i];

end;

until (abs(x0[1] - tmp1) < E);

writeln('count = ',count);

for i:=1 to k do writeln('X',i,' = ',ans[i]);

readkey;

end.

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 


Информация о работе Методы решение систем нелинейных уравнений