Автор работы: Пользователь скрыл имя, 26 Января 2012 в 00:18, курсовая работа
Программа разработана для решения систем нелинейных алгебраических уравнений методом Зейделя и простой итерации.
Метод Зейделя является частным случаем, метода простой итерации. Точность данных методов e= 0,001. Программа разработана на языке Borland Pascal 7.0
1. Графическое отделение корней 4
1.1 Графическое решение 5
2. Обзор методов решения систем нелинейных уравнений 6
2.1 Решение систем нелинейных уравнений 6
2.1.1 Метод простых итераций 6
2.1.2 Решение систем нелинейных уравнений методом Ньютона 7
2.1.3 Определение матрицы Якоби 9
3. Разработка и отладка программы 10
4. Блок-схема рабочей программы 11
5. Листинг программы 14
6. Решение контрольного примера 16
7. Список литературы 17
Так же необходимо привести систему
уравнений (1) к системе вида (13) вручную,
для использование ее в программе.
Блок-схема
метода простой итерации
Блок-схема метода Зейделя
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.
Метод
простой итерации:
Начальное приближение
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
Информация о работе Методы численного решения систем нелинейных уравнений