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


Ответ
 
Опции темы Опции просмотра
Старый 05.06.2014, 23:38   #1 (permalink)
alex_6282
Новичок
 
Регистрация: 05.06.2014
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль. Проверка системы уравнений на совместимость

Помогите написать программу на паскале для проверки совместимости системы уравнений
alex_6282 вне форума   Ответить с цитированием

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

Рекомендую вам внимательно пролистать эти топики, они очень похожи на вашу тему

Решение системы уравнений методом Гаусса
Решить систему дифференциальных уравнений
Решение уравнений методом Ньютона
Система для решения уравнений методом хорд на C/C++
Решение системы уравнений в Экселе

Старый 06.06.2014, 16:37   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,872
Сказал(а) спасибо: 318
Поблагодарили 542 раз(а) в 183 сообщениях
Репутация: 101510
По умолчанию

Цитата:
Сообщение от alex_6282 Посмотреть сообщение
Помогите написать программу на паскале для проверки совместимости системы уравнений
И только-то? Ну ладно, получите:
Код:
Const
 M_max=9; {Max number of equations}
 N_max=9; {Max number of unknowns}
 E=0.000001; {coefficients smaller then E are treated az equal to zero}

Type
 Vector=Array[1..N_max+1] of Real;
 Matrix=Array[1..M_max] of Vector;

Var
 a:Matrix;
 i,j,M,N:byte;

Procedure Step_Form(var SF:Matrix; Ms,Ns:Byte);
var
 i,j,k,q:byte;
 c1:real;
 V:Vector;
begin
 for i:=1 to Ms do
  begin
   c1:=SF[i][i];
   if c1=0 then
    begin
     k:=i;
     repeat
      if k<Ms then Inc(k);
     until (SF[k][i]<>0) or (k=Ms);
     if SF[k][i]<>0 then
      begin
       V:=SF[i];
       SF[i]:=SF[k];
       SF[k]:=V;
      end;
    end;
   c1:=SF[i][i];
   if c1<>0 then
    begin
     for j:=i to Ns do
      begin
       a[i][j]:=a[i][j]/c1;
       if Abs(a[i][j])<E then a[i][j]:=0;
      end;
     for k:=i+1 to N do
      begin
       c1:=SF[k][i];
       if c1<>0 then for j:=i to Ns do
        begin
         a[k][j]:=a[i][j]-a[k][j]/c1;
         if Abs(a[k][j])<E then a[k][j]:=0;
        end;
      end;
    end;
  end;
end;

Function Rank(var R:Matrix; Mr,Nr:Byte):Byte;
var
 i,j,Rnk:byte;
 b:boolean;
begin
 Rnk:=Mr+1;
 repeat
  Dec(Rnk);
  b:=false;
  for j:=1 to Nr do
   if R[Rnk][j]<>0 then b:=true;
 until b or (Rnk=1);
 if (Rnk=1) and not b then Rnk:=0;
 Rank:=Rnk;
end;

Begin
 Write('Number of equations = ');
 Readln(M);
 Write('Number of unknowns = ');
 Readln(N);
 for i:=1 to M do
  begin
   for j:=1 to N do
    begin
     Write('a',i,j,'= ');
     Readln(a[i][j]);
    end;
   Write('b',i,'= ');
   Readln(a[i][N+1]);
  end;
 writeln;
 writeln;
 Step_Form(a,M,N+1);
 if Rank(a,M,N)=Rank(a,M,N+1) then
  writeln('System is collocated!')
 else
  writeln('System is NOT collocated!');
 Readln
End.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

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

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




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

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