Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 01:06   #1 (permalink)
Demon11101995
Member
 
Регистрация: 14.12.2013
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Метода Гаусса на Паскале в виде подпрограммы

необходима программа для решения метода гауса в паскале в виде подпрограммы.
Demon11101995 вне форума   Ответить с цитированием

Старый 13.01.2014, 01:06
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Так же множество полезной для вас информации вы сможете найти по этим ссылкам

Пушка Гаусса, пара вопросов
Автомат Гаусса
Pascal, программа реализации метода покоординатного спуска по алгоритму
Ребят,помогите,пожалуйста, с написанием программы в паскале с помощью подпрограммы!
Подпрограммы
Методы решения систем линейных алгебраических уравнений, метод Гаусса

Старый 13.01.2014, 01:46   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

непонятное изъяснение задачи
Gruvi вне форума   Ответить с цитированием
Старый 13.01.2014, 10:24   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Demon11101995 Посмотреть сообщение
необходима программа для решения метода гауса в паскале в виде подпрограммы.
Молодой человек, прежде всего имейте уважение во-первых, к одному из величайших умов в истории человечества - Карлу Фридриху Гауссу: поверьте, он заслужил того, чтобы современные лоботрясы по крайней мере научились правильно писать его фамилию, а во-вторых - к нам: уж если Вы обращаетесь за помощью, то потрудитесь хотя бы ясно, четко и последовательно изложить задание, а не так - левой задней ножкой. Вас интересует программа для решения систем линейных алгебраических уравнений методом Гаусса? Если да, то так и следует формулировать задачу. Ну что же, будем исходить из того, что я угадал. Поскольку решение у нас выкладывалось (а, как я понимаю, воспользоваться поиском - лень-матушка запрещает), то извольте:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 20:47.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.