Автор работы: Пользователь скрыл имя, 02 Декабря 2011 в 19:32, курсовая работа
Одним из самых распространенных методов решения систем линейных уравнений является метод Гаусса.Этот метод (который также называют методом последовательного исключения неизвестных) известен в различных вариантах уже более 2000 лет.
Вычисления с помощью метода Гаусса заключаются в последовательном исключении неизвестных из системы для преобразования ее к эквивалентной системе с верхней треугольной матрицей. Вычисления значений неизвестных производят на этапе обратного хода.
1 Постановка задачи (математическое описание метода)
2 Описание ПО
3 Описание тестовых задач
4 Анализ результатов счета
5 Выводы
6 Список литературы
pause;
plot(nn, eob2);
title('Maksimalnaya oshibka dlya plohoy obuslovlennosti');
pause;
%Исследование разряженной матрицы
A=[2 0 0 1;0 1 0 0; 0 0 1 0; 1 0 0 3];
b=[1; 3; 5; 2];
A=As;
A=[A bs];
[A]=gauss(A);
[A, b]=AandB(A);
[x]=obrxod(A, b);
[e]=epsilon(As, bs, x);
[E1, E2]=oshibka(e)
gauss.m
function[A]=gauss(A)
n=size(A, 2);
for k=1:n-1
[A, k]=perest(A, k, n);
if k==n-1
break;
end
[A, k]=normir(A, k,n);
if k==n-1
break;
end
[A]=iskl(A, k, n);
end
perest.m
function[A, k]=perest(A, i, n)
ns=0;
j=1;
max=0;
while max==0
max=A(j, i);
for jn=j:n-1
if max<A(jn, i)
max=A(jn, i);
ns=jn;
end
end
if ns>0
for in=1:n
S=A(ns, in);
A(ns, in)=A(j, in);
A(j, in)=S;
end
end
k=i-1;
if i<n-1
k=i;
end
end
iskl.m
function[A]=iskl(A, i, n)
j=i+1;
jm=j-1;
for jn=j:n-1
d=-A(jn, i)/A(jm, i);
for in=i:n
A(jn, in)=A(jm, in)*d+A(jn, in);
end
end
normir.m
function[A, k]=normir(A, i, n)
j=i;
g=0;
while g==0
g=A(j, i);
if g==0
i=i+1;
end
if i==n-1
k=i;
else k=i;
end
end
for in=i:n
A(j, in)=A(j, in)/g;
end
obrxod.m
function[x]=obrxod(A, b)
s=0;
n=size(A, 1);
x=zeros(n, 1);
x(n)=b(n);
for is=1:n-1
i=n-is;
for ic=i+1:n
s=s+A(i, ic)*x(ic);
end
x(i)=b(i)-s;
s=0;
end
AandB.m
function[A, b]=AandB(Ad)
n=size(Ad, 1);
A=[];
for i=1:n
A=[A Ad(i, i)];
end
b=[Ad(:,
n+1)];
epsilon.m
function[e]=epsilon(A, b, x)
n=size(A, 1);
e=zeros(n, 1);
for j=1:n
for i=1:n
e(j)=e(j)+A(j, i)*x;
end
e(j)=e(j)-b(j);
end
oshibka.m
function[E1, E2]=oshibka(e)
n=size(e, 1);
E1=0;
E2=zeros(1, n);
for i=1:n
E1=E1+e(i)^2;
end
E1=sqrt(E1);
for i=1:n
E2(i)=abs(e(i));
end
E2=max(E2);
obusl.m
function[A]=obusl(A)
A=A+10^2;
matrix.m
function[A, b]=matrix(n);
A=rand(n, n)*10;
b=rand(n,
1)*10;