• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Метода Гаусса на Паскале в виде подпрограммы

Demon11101995

Новые
Регистрация
13 Дек 2013
Сообщения
18
Реакции
0
Баллы
0
Метода Гаусса на Паскале в виде подпрограммы

необходима программа для решения метода гауса в паскале в виде подпрограммы.
 
непонятное изъяснение задачи
 
необходима программа для решения метода гауса в паскале в виде подпрограммы.
Молодой человек, прежде всего имейте уважение во-первых, к одному из величайших умов в истории человечества - Карлу Фридриху Гауссу: поверьте, он заслужил того, чтобы современные лоботрясы по крайней мере научились правильно писать его фамилию, а во-вторых - к нам: уж если Вы обращаетесь за помощью, то потрудитесь хотя бы ясно, четко и последовательно изложить задание, а не так - левой задней ножкой. Вас интересует программа для решения систем линейных алгебраических уравнений методом Гаусса? Если да, то так и следует формулировать задачу. Ну что же, будем исходить из того, что я угадал. Поскольку решение у нас выкладывалось (а, как я понимаю, воспользоваться поиском - лень-матушка запрещает), то извольте:
Код:
uses crt;
const
 Nmax=9;
 eps=0.00001; { все числа, меньшие eps, в процессе решения полагаются равными 0 }
type
 matr=array [1..Nmax,1..Nmax] of real;
 mas=array [1..Nmax] of real;
var
 i,j,N:integer;
 b,x:mas;
 a:matr;
{*** метод Гаусса *******}
procedure gausss(ag:matr; bg:mas; var xg:mas; Ng:integer);
 Var
  k,ig,jg:byte;
  m,s:real;
  blg:boolean;
  c:mas;
 begin

{ приведение к треугольному виду}
  For k:=1 to Ng-1 do
   begin
    If ABS(ag[k,k])<eps then
     begin
      ig:=k;
      blg:=false;
      repeat
       Inc(ig);
       if ABS(ag[ig,k])>eps then
        begin
         blg:=true;
         c:=ag[k];
         ag[k]:=ag[ig];
         ag[ig]:=c;
         s:=bg[k];
         bg[k]:=bg[ig];
         bg[ig]:=s;
        end;
      until blg;
     end;
    m:=ag[k,k];
    for jg:=k to Ng do
     ag[k,jg]:=ag[k,jg]/m;
    bg[k]:=bg[k]/m;
    for ig:=k+1 to Ng do
     if ABS(ag[ig,k])>eps then
      begin
       m:=ag[ig,k];
       for jg:=k to Ng do
        ag[ig,jg]:=ag[k,jg]-ag[ig,jg]/m;
       bg[ig]:=bg[k]-bg[ig]/m;
      end
     else
      ag[ig,k]:=0;
   end;

{расчет неизвестных х в обратном порядке}
 xg[Ng]:=bg[Ng]/ag[Ng,Ng] ;
 for ig:=(Ng-1) downto 1 do
  begin
   s:=0;
   For jg:=ig+1 to Ng do
    s:=s+ag[ig,jg]*xg[jg] ;
   xg[ig]:=bg[ig]-s;
  end;
end;

BEGIN {***** тело программы ******}
 clrscr;
 Write('N= ');
 Readln(N);
 writeln ('ввод матрицы коэффициентов при неизвестных х');
 for i:=1 to N do
  for j:=1 to N do
   begin
    write('a[',i,',',j,'] = ');
    readln(a[i,j]);
   end;
 writeln ('ввод столбца свободных членов');
 for i:=1 to N do
  begin
   write('b[',i,'] = ');
   readln(b[i]);
  end;
 Writeln;
 gausss (a,b,x,N);
 writeln ('Вывод результатов решения системы уравнений методом Гаусса');
 for i:=1 to N do
  writeln('x[',i,'] = ',x[i]:0:5);
 readln
END.
 
Назад
Сверху