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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2010, 06:30   #1
sllh_111
Форумчанин
 
Регистрация: 10.02.2010
Сообщений: 137
Сообщение Метод Крамера

Срочно нужна помощь! завтра надо сдавать, а я всё сделать не могу.
Буду рад любой помощи.
программы: надо написать в Паскале программу нахождения системы линейных уравнений. Определитель я сделал(opred), осталось только дописать, может кто поможет?
Код:
procedure kr;
begin
writeln('vvedite kol neizvesnix');
readln(q);
writeln('Vvedite kooficenti sistemi');
for i:= 1 to q do
for j:= 1 to q+1 do
read(m5[i,j]);
writeln;
for i:= 1 to q do
for j:= 1 to q do
m6[i,j]:=m5[i,j];
writeln;
opred(m6,d);
 
for i:= 1 to q do
begin
m6[i,1]:=m5[i,q+1];
sllh_111 вне форума Ответить с цитированием
Старый 17.02.2010, 06:34   #2
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

Код:
uses crt;
type
 Tmass=array[1..20] of real;
 Tmatrix=array[1..20] of Tmass;
procedure Per(k,n:integer;var a:Tmatrix;var p:integer);{перестановка строк если главный элемент = 0}
var z:Real;j,i:integer;
begin
z:=abs(a[k,k]);
i:=k;
p:=0;
for j:=k+1 to n do
  begin
   if abs(a[j,k])>z then{выбираем максимальный по модулю в данном столбце ниже}
    begin
     z:=abs(a[j,k]);
     i:=j;
     p:=p+1;{счетчик перестановок, при каждой перестановке меняется знак определителя}
    end;
  end;
if i>k then
for j:=k to n do
  begin
   z:=a[i,j];
   a[i,j]:=a[k,j];
   a[k,j]:=z;
  end;
end;
function Znak(p:integer):integer;{определение знака определителя}
begin
if p mod 2=0 then
Znak:=1 else Znak:=-1;
end;
procedure Opr(n:integer;a:tmatrix;var det:real);{вычисление определителя}
var k,i,j,p:integer;r:real;
begin
det:=1.0;
for k:=1 to n do
  begin
   if a[k,k]=0 then Per(k,n,a,p);{перестановка строк}
   det:=znak(p)*det*a[k,k];{вычисление определителя}
   for j:=k+1 to n do {пересчет коэффициентов}
    begin
      r:=a[j,k]/a[k,k];
      for i:=k to n do
       begin
        a[j,i]:=a[j,i]-r*a[k,i];
       end;
    end;
  end;
end;
var a:Tmatrix;{матрица коэффициентов исходная}
    c:array[1..20] of Tmatrix;{вспомогательные матрицы для вычисления корней}
    b,x:Tmass;{свободные члены, корни}
    det,det1:real;{определители}
    n,k,j,i:integer;
begin
clrscr;
write('Порядок системы n=');
readln(n);
writeln('Введите коэффициенты системы:');
for i:=1 to n do
for j:=1 to n do
read(a[i,j]);
readln;
writeln('Введите свободные члены:');
for i:=1 to n do
read(b[i]);
readln;
clrscr;
writeln('Расширенная матрица системы:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:7:2);
  write(b[i]:9:2);
  writeln;
 end;
Opr(n,a,det);{определитель системы исходной}
for i:=1 to n do
 begin
  for k:=1 to n do
   begin
    for j:=1 to n do{создаем вспомогательные матрицы, где i-товый столбец - свободные члены}
    c[i][k,j]:=a[k,j];
    c[i][k,i]:=b[k];
   end;
  Opr(n,c[i],det1);{определитедь вспомогательной матрицы}
  if(det=0)and(det1=0) then
    begin
     writeln('Система не определена!');
     readln;
     exit;
    end;
  if(det=0)and(det1<>0) then
    begin
     writeln('Система не имеет решений!');
     readln;
     exit;
    end;
  x[i]:=det1/det;{корень}
 end;
writeln('Корни сиcтемы:');
for i:=1 to n do
writeln('x',i,'=',x[i]:7:3);
readln
end.
end.
Google2010 вне форума Ответить с цитированием
Старый 17.02.2010, 12:03   #3
sllh_111
Форумчанин
 
Регистрация: 10.02.2010
Сообщений: 137
По умолчанию

Google2010
спасибо выручил!
sllh_111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод Крамера на делфи sasha3050 Помощь студентам 6 15.06.2022 11:25
Метод Крамера miha815 Помощь студентам 1 06.10.2010 18:28
Метод Крамера (на Pascal) miha815 Помощь студентам 2 26.11.2009 09:17
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08