Автор работы: Пользователь скрыл имя, 25 Апреля 2012 в 09:54, курсовая работа
Программа разработана для решения систем нелинейных алгебраических уравнений методом Зейделя и простой итерации.
Метод Зейделя является частным случаем, метода простой итерации. Точность данных методов 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
Для метода простой итерации
Для метода Зейделя
При разработке программы
использовались методы
простой итерации и Зейделя. На вход
подаются начальные значения корней
x1 и x2, просчитанные при
помощи графического решения рис. (1а).
Так же необходимо привести систему
уравнений (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
Информация о работе Методы численного решения систем нелинейных уравнений