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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2009, 10:33   #1
2easy4me
 
Регистрация: 14.05.2009
Сообщений: 4
По умолчанию Pascal. Решение СЛАУ методом Гаусса-Жордана

Всем доброго времени суток! Плз, помогите сделать такую задачу в Паскале. Тема задачи в названии темы, для общего вида решение. Заранее спсб.

с уважением, Сергей
2easy4me вне форума Ответить с цитированием
Старый 14.05.2009, 11:13   #2
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
Хорошо

Я писал программу на С, только она для заданной системы уравнения, переделай так чтобы значения вводились с клавиатуры, ну и переделай на Паскаль.

Код:
#include <stdio.h>
#include <conio.h>
#define n 4
void main ()
{
    float a[n][n+1]={{0.64, 0.72, -0.83, 4.2, 2.23},
              {0.58, -0.83, 1.43, -0.62, 1.71},
              {0.86, 0.77, -1.83, 0.88, -0.54},
              {1.32, -0.52, -0.65, 1.22, 0.65}};
    int i, j, k;
    clrscr();
    printf("Ishodhaya matrica \n");
    for (i=0; i<n; i++)
        { for (j=0; j<n+1; j++)
    printf("%6.2f ", a[i][j]);
    printf("\n");
        };
    for (k=0; k<n; k++)
  {
       for (i=0; i<n; i++)
	  for (j=0; j<n+1; j++)
	  if ((i!=k)&&(j!=k))
	  a[i][j]=a[i][j]-a[i][k]*a[k][j]/a[k][k];
      for (i=0; i<n+1; i++)
      if (i!=k) a[k][i]=a[k][i]/a[k][k];
	 for (i=0; i<n; i++)
	 if (i==k) a[i][k]=1;
     else a[i][k]=0;
     };
     printf("Rezult. matrica    \n");
     for (i=0; i<n; i++)
        { for (j=0; j<n+1; j++)
     printf("%9.6f ", a[i][j]);
     printf("\n");
	};
     getch();
};

KARUSHEV вне форума Ответить с цитированием
Старый 14.05.2009, 11:42   #3
2easy4me
 
Регистрация: 14.05.2009
Сообщений: 4
Печаль

KARUSHEV, спасибо, но я Сишки не знаю, поэтому и перевести не смогу. И еще, в конце ж должно выводиться решения системы типу как, правильна?
2easy4me вне форума Ответить с цитированием
Старый 14.05.2009, 12:17   #4
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию

Не знаю чем отличается матод Гауса от Гауса-Жордана, но вот есть простой Гаус.

Код:
program Gauss_Classic;
uses crt;

type vec=array[1..10] of real;
mas=array[1..10] of vec;

var a:mas;b,x:vec;
h:real;
i,j,k,n:integer;

Begin {Начало основной программы}
Clrscr;
write('Введите количество уравнений: ');read(n);
for i:=1 to n do begin
writeln('Уравнение ',i);
writeln('Введите коэффициенты');
for j:=1 to n do begin
write('a[',i,',',j,']=');read(a[i,j]);end;
writeln('Введите правую часть уравнения');
write('b[',i,']=');read(b[i]); end;
Clrscr;
writeln('Исходная матрица');
for i:=1 to n do begin
write(i);
for j:=1 to n do
write(a[i,j]:10:5);
writeln(b[i]:10:5) end;
writeln; writeln; writeln;
{Прямой ход - исключение переменных}
for i:=1 to n-1 do
for j:=i+1 to n do begin
a[j,i]:=-a[j,i]/a[i,i];
for k:=i+1 to n do
a[j,k]:=a[j,k]+a[j,i]*a[i,k];
b[j]:=b[j]+a[j,i]*b[i] end;
x[n]:=b[n]/a[n,n];
{Обратный ход - нахождение корней}
for i:=n-1 downto 1 do begin
h:=b[i];
for j:=i+1 to n do h:=h-x[j]*a[i,j];
x[i]:=h/a[i,i]; end;
writeln('Корни уравнения');
for i:=1 to n do writeln('x(',i,')=',x[i]:10:5);
readkey
end.
Писал не я. Взял у одногрупника. Нужна была для численных методов (а там требуется только ответ). Это я к тому, что фиг его знает где одногрупник взял ее, и, может быть, препод уже задолбался принимать одну и ту же лабу за несколько лет.
bullvinkle вне форума Ответить с цитированием
Старый 14.05.2009, 12:29   #5
2easy4me
 
Регистрация: 14.05.2009
Сообщений: 4
По умолчанию

Модификацией простого метода Гаусса является метод Жордана, в котором исключениеочередного неизвестного производится не только из нижележащих уравнений системы, но ииз вышележащих. Очевидно как можно модифицировать метод Жордана в метод Жордана
с выбором максимального элемента (по столбцу или матрице).

разница вот в этой модификации.
2easy4me вне форума Ответить с цитированием
Старый 23.03.2011, 18:56   #6
HotDogich
Пользователь
 
Регистрация: 23.03.2011
Сообщений: 15
По умолчанию

Хочу сказать, что решение по простому Гауссу - слегка не полное, в случае если вдруг после некоторых преобразовании элемент a[i,j] окажется НОЛЬ, то будет ошибка деления на ноль. У нас преподаватель вот попросил дополнить программу, чтобы не было такого.
p s я писал сам, и на дельфи.
Может я и похож теперь на некропостера, но на этот сайт кидает с гугла - как первая ссылка по запросу "слау методом жордана гаусса". Так что решил предупредить людей о возможной ошибке.
HotDogich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение системы линейных уравнений методом Гаусса. maliyusha Помощь студентам 16 18.02.2013 15:44
Решение СЛАУ методом Гаусса с выбором главного элемента МаXsim Помощь студентам 4 21.10.2008 19:04
Решение СЛУ методом Гаусса-Джордана Жизнь Помощь студентам 2 05.10.2008 16:23