Способ Крамера для бесконечной матрицы - Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте!помогите пожалуйста с написанием Способа Крамера для бесконечной матрицы!!!очень нужно!!!заранее благодарен..

Решение задачи: «Способ Крамера для бесконечной матрицы»

textual
Листинг программы
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.

Объяснение кода листинга программы

  1. Объявлены типы данных:
    • Tmass - массив вещественных чисел размером 20;
    • Tmatrix - массив Tmass размером 20;
  2. Определена процедура Per, принимающая целочисленные параметры k, n, массив a типа Tmatrix и переменную p, которая выполняет перестановку строк, если главный элемент равен 0.
  3. Определена функция Znak, принимающая целочисленный параметр p и возвращающая целочисленное значение, определяющее знак определителя.
  4. Определена процедура Opr, принимающая целочисленный параметр n, массив a типа Tmatrix, и переменную det, которая вычисляет определитель системы, используя метод Крамера.
  5. Представлено объявление переменных и основная программа:
    • Переменная a - матрица коэффициентов системы;
    • Переменная c - вспомогательные матрицы для вычисления корней;
    • Переменные b и x - массивы вещественных чисел для свободных членов и корней системы соответственно;
    • Переменные det и det1- определители;
    • Целочисленные переменные n, k, j, i - для итераций и хранения порядка системы и других значений. Кроме того, программа при вводе пользователем значений для коэффициентов и свободных членов, производит вычисления, перестановки строк и определение знаков определителя для нахождения корней системы по методу Крамера.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5
Похожие ответы