Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2011, 19:33   #11
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
еще мне нужно решить систему линейных алгоритмических уравнений 3 способами:
А что еще нужно?
Базиля вне форума Ответить с цитированием
Старый 26.06.2011, 19:48   #12
DoubleTrouble
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 32
По умолчанию

Вот по Гауссу:

Program xa;
Const
Nmax=20;
type
VectorType = ARRAY[1..Nmax] OF Real;
MatrixType = ARRAY[1..Nmax] OF VectorType;
function Gauss(n:Byte;A:MatrixType;B:VectorT ype;var x:VectorType):boolean;
var
i,j,k,iMax:Byte;
tmp,Max,d:Real;
v:VectorType;
begin
for k:=1 to n-1 do
begin
Max:=Abs(A[k,k]);
iMax:=k;
for i:=k+1 to n do
if Abs(A[i,k])>Max then
begin
Max:=Abs(A[i,k]);
iMax:=i;
end;
IF Max=0 THEN
begin
Gauss:=false;
Exit
end;
IF iMax<>k then
begin
Tmp:=B[k];
B[k]:=B[iMax];
B[iMax]:=Tmp;
v:=A[k];
A[k]:=A[iMax];
A[iMax]:=v
end;
for i:=k+1 to n do
begin
d:=A[i,k]/A[k,k];
for j:=k to n do
A[i,j]:=A[i,j]-d*A[k,j];
B[i]:=B[i]-d*B[k];
end;
end;
if A[n,n]=0 then
begin
Gauss:=false;
Exit
end;
{ ObPATHblu XoD }
X[n]:=B[n]/A[n,n];
for i:=n-1 downto 1 do
begin
tmp:=B[i];
for j:=i+1 to n do
tmp:=tmp-A[i,j]*X[j];
X[i]:=tmp/A[i,i]
end;
Gauss:=true
end;
var
n,i,j:Byte;
a:MatrixType;
b,x:VectorType;
begin
Write('BBedute pa3mePbl matpuL/bl ');
READ(n);
Writeln('PacLLIuPeHHa9 matpuL/a');
for i:=1 to n do
begin
for j:=1 to n do
begin
write('A[' ,i, ',' ,j, ']=');
readln(a[i,j]);
end;
Write('b[' ,i, ']=');
readln(b[i]);
end;
if not Gauss(n,a,b,x) then
begin
Writeln('MatpiL/a Bblpo}l{DeHa');
Halt;
end;
Writeln('PeLLIeHUe cuCTeMbl');
for i:=1 to n do
begin
for j:=1 to n do
b[i]:=b[i]-a[i,j]*x[j];
Writeln(x[i]:12,' ',b[i]:12)
end;
readln
end.
DoubleTrouble вне форума Ответить с цитированием
Старый 26.06.2011, 19:48   #13
DoubleTrouble
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 32
По умолчанию

Вот по Гауссу:

Код:
Program xa;
Const
 Nmax=20;
type
 VectorType = ARRAY[1..Nmax] OF Real;
 MatrixType = ARRAY[1..Nmax] OF VectorType;
function Gauss(n:Byte;A:MatrixType;B:VectorType;var x:VectorType):boolean;
var
 i,j,k,iMax:Byte;
 tmp,Max,d:Real;
 v:VectorType;
begin
 for k:=1 to n-1 do
 begin
  Max:=Abs(A[k,k]);
  iMax:=k;
  for i:=k+1 to n do
   if Abs(A[i,k])>Max then
   begin
    Max:=Abs(A[i,k]);
    iMax:=i;
   end;
  IF Max=0 THEN
  begin
   Gauss:=false;
   Exit
  end;
 IF iMax<>k then
 begin
  Tmp:=B[k];
  B[k]:=B[iMax];
  B[iMax]:=Tmp;
  v:=A[k];
  A[k]:=A[iMax];
  A[iMax]:=v
 end;
 for i:=k+1 to n do
  begin
   d:=A[i,k]/A[k,k];
   for j:=k to n do
    A[i,j]:=A[i,j]-d*A[k,j];
    B[i]:=B[i]-d*B[k];
  end;
 end;
 if A[n,n]=0 then
 begin
  Gauss:=false;
  Exit
 end;
 { ObPATHblu XoD }
 X[n]:=B[n]/A[n,n];
 for i:=n-1 downto 1 do
 begin
  tmp:=B[i];
  for j:=i+1 to n do
   tmp:=tmp-A[i,j]*X[j];
  X[i]:=tmp/A[i,i]
 end;
 Gauss:=true
end;
var
 n,i,j:Byte;
 a:MatrixType;
 b,x:VectorType;
begin
 Write('BBedute pa3mePbl matpuL/bl  ');
 READ(n);
 Writeln('PacLLIuPeHHa9 matpuL/a');
 for i:=1 to n do
 begin
  for j:=1 to n do
  begin
   write('A[' ,i, ',' ,j, ']=');
   readln(a[i,j]);
  end;
  Write('b[' ,i, ']=');
  readln(b[i]);
 end;
 if not Gauss(n,a,b,x) then
 begin
  Writeln('MatpiL/a Bblpo}l{DeHa');
  Halt;
 end;
 Writeln('PeLLIeHUe cuCTeMbl');
 for i:=1 to n do
 begin
  for j:=1 to n do
   b[i]:=b[i]-a[i,j]*x[j];
 Writeln(x[i]:12,' ',b[i]:12)
 end;
 readln
end.
DoubleTrouble вне форума Ответить с цитированием
Старый 26.06.2011, 19:50   #14
DoubleTrouble
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 32
По умолчанию

Зейделя
Код:
program m_zeidel;

 Uses Crt;
 label 1,2;
 const n=3;e=0.001;
 var i,j,k,t:integer;
 sum1,s:real;
 f:boolean;
 a,c:array [1..n,1..n] of real;
 s1,x,x0,d,b,z:array [1..n] of real;

 begin
 ClrScr;
 for i:=1 to n do
 begin
 writeln ('введите коэффициенты в ',i,' строке');
 for j:=1 to n do
 readln (a[i,j]);
 end;
 writeln;
 writeln ('введите свободные члены');
 for i:=1 to n do
 readln (b[i]);
 ClrScr;
 for i:=1 to n do
 for j:=1 to n do
 begin
 if i=j then c[i,j]:=0
 else c[i,j]:=-a[i,j]/a[i,i];
 end;
 for i:=1 to n do
 d[i]:=b[i]/a[i,i];
 {проверка сходимости}
 for i:=1 to n do
 begin
 sum1:=0;
 for j:=1 to n do
 sum1:=sum1+c[i,j];
 s1[i]:=sum1;
 end;
 sum1:=s1[1];
 for i:=2 to n do
 if s1[i]>sum1 then sum1:=s1[i];
 if abs(sum1)<1 then begin
 {конец проверки}
 for i:=1 to n do
 x0[i]:=d[i];
 for i:=1 to n do
 begin
 s:=0;
 for j:=1 to n do
 s:=s+c[i,j]*x0[j];
 x[i]:=s;
 end;
 for i:=1 to n do
 x[i]:=x[i]+d[i];
 1: begin
 for i:=1 to n do
 begin
 x0[i]:=x[i];
 z[i]:=x0[i];
 end;
 for i:=1 to n do
 begin
 s:=0;
 for j:=1 to n do
 s:=s+c[i,j]*z[j];
 x[i]:=s+d[i];
 z[i]:=x[i];
 end;
 t:=0;
 for i:=1 to n do
 if abs(x[i]-x0[i])<e then t:=t+1;
 if t=n then goto 2 else goto 1
 end;
 2: writeln ('Ответ:');
 for i:=1 to n do
 write (x[i]:2:2,' ');
 writeln;
 end
 else writeln ('система не сходится');
 readln
 end.
DoubleTrouble вне форума Ответить с цитированием
Старый 27.06.2011, 10:13   #15
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

в 4 посте это не метод простых итераций
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 27.06.2011, 13:19   #16
Biggs
Пользователь
 
Регистрация: 15.07.2010
Сообщений: 74
По умолчанию

Цитата:
Сообщение от klubnika Посмотреть сообщение
какие 50 р.?
я за помощью сюда обратилась к добрым людям, а не корыстным
Вот это верно , честный и бескорыстный человек обязательно должен забесплатно работать и еще верить в коммунизм и камасутру
Biggs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МЕТОД ИТЕРАЦИЙ антонййй Помощь студентам 0 12.04.2011 21:47
Метод итераций sgvampir Помощь студентам 2 15.01.2011 16:12
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08
Метод итераций и метод Зейделя prikolist Общие вопросы C/C++ 40 18.06.2009 17:40
Метод итераций и комбинированный метод prikolist Общие вопросы C/C++ 2 16.06.2009 20:51