Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа - Решение систем нелинейных уравнений.doc
Скачиваний:
127
Добавлен:
02.05.2014
Размер:
1.8 Mб
Скачать

3.Разработка и отладка программы

  1. Будем представлять систему (*) в виде:

(11)

  1. Представим правые части уравнения в виде:

(12)

Для метода простой итерации

(13)

Для метода Зейделя

  1. Для поиска коэффициентов λiј решим систему

(14)

  1. Далее будем использовать систему на рис. (13) для поиска корней уравнения. В программе g1(x1,x2)=y1 и g2(x1,x2)=y2. [3]

4. Блок-схема рабочей программы

При разработке программы

использовались методы

простой итерации и Зейделя. На вход

подаются начальные значения корней

x1и x2, просчитанные при

помощи графического решения рис. (1а).

Так же необходимо привести систему

уравнений (1)к системе вида(13)вручную,

для использование ее в программе.

Блок-схема метода простой итерации

Блок-схема метода Зейделя

5. Листинг программы

uses crt;

var

d,e,x1,x2,y1,y2:real;

c,k,p:integer;

ch:char;

function f1(x1,x2:real):real;

begin

f1:=x1*sin(x1)-x2;

end;

function f2(x1,x2:real):real;

begin

f2:=x1*x1+x2*x2-1;

end;

procedure fun_y1_1_y2;

begin

y1:= x1-f1(x1,x2)/2+f2(x1,x2)/8;

y2:= x2+f1(y1,x2)/2-f2(x1,x2)/2;

end;

procedure fun_y1_y2;

begin

y1:= x1-f1(x1,x2)/2+f2(x1,x2)/8;

y2:= x2+f1(x1,x2)/2-f2(x1,x2)/2;

end;

procedure outputofresult;

begin

clrscr;

writeln('Korni uravnenia:');

writeln('x1 = ', y1:1:5);

writeln('x2 = ', y2:1:5);

writeln('Pogreshnosty priblegenia = ', d:1:7);

writeln;

writeln('Kolichestwo iteraziy = ',k);

writeln('Dlia prodolgenia nagmite lubui klavishu...');

repeat ch:= readkey until ch <> '';

k:=k+1;

end;

begin

repeat

k:=0; e:=0.001;

clrscr;

writeln('Reshenie sistem nelineinyh uravneni');

writeln('');

writeln('1 - Metod prostoiq iterazy');

writeln('2 - Metod Zeydely');

writeln('0 - Exit');

writeln('');

write('Enter: ');

readln(p);

c:=0;

if p=1 then c:=1;

if p=2 then c:=2;

if p=0 then c:=0;

case c of

0:begin

exit;

end;

1:begin

writeln('Vvedite nachalnoe priblegenie:');

write('x1 = ');

readln(x1);

write('x2 = ');

readln(x2);

repeat

fun_y1_y2;

d:= abs(y1-x1);

if abs(y2-x2)>d then d:= abs(y2-x2);

outputofresult;

x1:= y1; x2:= y2;

until d<e;

end;

2:begin

writeln('Vvedite nachalnoe priblegenie:');

write('x1 = ');

readln(x1);

write('x2 = ');

readln(x2);

repeat

fun_y1_1_y2;

d:= abs(y1-x1);

if abs(y2-x2)>d then d:= abs(y2-x2);

outputofresult;

x1:= y1; x2:= y2;

until d<e;

end;

end;

until (p<1) or (p>2);

end.

6. Решение контрольного примера

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

Начальное приближение

x1 = 0.9

x2 = 0.6

Корни уравнения

x1 = 0.80992

x2 = 0.58662

Погрешность приближения = 0.0006517

Количество итераций = 4

Метод Зейделя:

Начальное приближение

x1 = 0.9

x2 = 0.6

Корни уравнения

x1 = 0.80928

x2 = 0.58648

Погрешность приближения = 0.0006042

Количество итераций =11

Проверка:

0.80928*sin(0.80928) - 0.58648 0

(0.58648)2 + (0.80928)2 -1 0