Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.97
nicenice
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 168
#1

Как привести матрицу к треугольному виду по методу гауса? - C++

30.01.2012, 22:05. Просмотров 4193. Ответов 6
Метки нет (Все метки)

Может у кого есть прога? Нужна срочно!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2012, 22:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как привести матрицу к треугольному виду по методу гауса? (C++):

Как привести матрицу к треугольному виду - C++
Нужно привести матрицу к треугольному виду, можно написать прогу , а то какие нашел не работают ни черта

Привести матрицу к треугольному виду - C++
Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к...

Как привести матрицу к верхнему треугольному виду? С++ (Имеется код нахождения нижней треуг. матрицы) - C++
Нахождение нижней треуг. матрицы: for (i=0, k=nn-1; i<nn&&k>=0; i++, k--) for (j=0; j<i;...

Задача: привести матрицу к треугольному виду - C++
Блин, я никак не разберусь, может тут кто знает? Задание: Дана квадратная матрица размера m*n. С помощью допустимых преобразований...

Привести матрицу к треугольному виду Гауссом (не могу найти работающий код) - C++
Нужен код для приведения матрицы к треугольному виду (матрица статическая, целочисленная). Пробовал гуглить, в том числе и тут....

Привести вектор к треугольному виду - C++
Я решаю систему лин. уравнений одной малоизвестной модификацией метода Гаусса. В чем суть: => есть вектор с таким содержимым: 1...

6
SunTechnic
20 / 20 / 1
Регистрация: 05.02.2011
Сообщений: 65
30.01.2012, 22:25 #2
Вот, держи! Это исходники программы, которая производит все основные операции над матрицами. Не на С++, но при желании можно переписать на него используя данный алгоритм. Удачи!
0
nicenice
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 168
30.01.2012, 22:28  [ТС] #3
Я Си путём не знаю, куда уж мне переписать...
А нужный алгоритм не увидел.
0
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
30.01.2012, 22:59 #4
C
1
2
3
4
5
6
7
8
9
10
for (k=0;k<n;k++)
{
   for (i=k+1;i<n;i++)
   {
      mu=A[i][k]/A[k][k];
      for (j=0;j<n;j++)
         A[i][j]-=A[k][j]*mu;
      b[i]-=b[k]*mu;
   }
}
A - матрица коэффициентов, b - свободных членов
1
nicenice
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 168
30.01.2012, 23:23  [ТС] #5
Я не понимаю что надо вывести?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <conio.h>
 
const int n=4;
 
int main()
{
    int A[n][n],b[n];
    int i, j, k, mu=0;
    printf("vvedite matricu: \n");
 
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
            scanf ("%d", &A[i][j]);
    }
 
    for (k=0;k<n;k++)
    {   
        for (i=k+1;i<n;i++)
        {
            mu=A[i][k]/A[k][k];
            for (j=0;j<n;j++)
                A[i][j]-=A[k][j]*mu;
                b[i]-=b[k]*mu;
        }
 
for (i=0;i<n;i++)
    {
        for (j=0;i<n;j++)
            printf ("%d\t", A[i][j]);
        printf ("\n");
    }   
    }
    getch();
    return 0;
}
Прога неправильно работает
0
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
03.02.2012, 01:50 #6
у вас опечатки, например в 30 строке должно быть j<n, скобка из 34-й строки должна быть в 27-й, коэффициент mu должен быть double, и вообще советую тип матрицы брать double, т.к. в противном случае погрешность будет довольно велика

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <conio.h>
 
const int n=4;
 
int main()
{
   int A[n][n],b[n];
   int i, j, k;
   double mu;
   printf("vvedite matricu: \n");
   for (i=0;i<n;i++)
      for (j=0;j<n;j++)
         scanf ("%d", &A[i][j]);
   for (k=0;k<n;k++)
   {
      for (i=k+1;i<n;i++)
      {
         mu=(double)A[i][k]/A[k][k];
         for (j=0;j<n;j++)
            A[i][j]-=A[k][j]*mu;
       //  b[i]-=b[k]*mu;
      }
   }
   for (i=0;i<n;i++)
   {
      for (j=0;j<n;j++)
         printf ("%d\t", A[i][j]);
      printf ("\n");
   }
   getch();
   return 0;
}
и напоминаю, что матрица А должна быть невырожденная, чтобы метод Гаусса мог быть применим
0
-=ЮрА=-
Заблокирован
Автор FAQ
03.02.2012, 13:39 #7
nicenice, вот тебе рабочий код метода Гаусса
Методом Гаусса решить систему n линейных алгебраических уравнений
Хочешь треугольную матрицу - это void PryamoiHod(int n, double **a, double *b);
Переписывать на плюсы просто влом, там кроме выделения памяти и вывода на экран всё и так под С++...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2012, 13:39
Привет! Вот еще темы с ответами:

С помощью допустимых изменений привести систему к треугольному виду... - C++
Надо выполнить вот это задание &quot;: Коефіцієнти системи лінійних рівнянь задані у вигляді прямокутної матриці. З допомогою допустимих...

Двумерные массивы (СЛАУ). Привести систему к треугольному виду - C++
Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы.С помощью допустимых преобразований привести систему к...

Свести матрицу к треугольному виду - C++
for (int i = 1; i &lt; N; ++i) for (int k = i; k &lt; N; ++k) for (int j = N-1; j &gt;= 0; --j) if (mas !=0 &amp;&amp; mas !=0 &amp;&amp; mas != 0)...

Привести матрицу 3 на 3 к диагональному виду - C++
Всем добрый вечер, начал изучать С++. Хочу привести матрицу 3 на 3 к диагональному виду методом Гаусса, но почему-то считает неправильно....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
03.02.2012, 13:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru