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

Преобразовать матрицу к треугольному виду - C++

Восстановить пароль Регистрация
 
sur_oviy
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 4
01.12.2012, 15:28     Преобразовать матрицу к треугольному виду #1
Здравствуйте! Я конечно понимаю, что данная тема поднималась ни раз, но все же, большинство кодов не работает
Помогите кто может
Вот что-то накопал, но вроде есть ошибки
C++ (Qt)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream.h>
#include <conio.h>
#include <math.h>
const int n=4;  ///размерность системы, если 3 уравнеия то матрица 3*4, если 4, то 4*5
double y[n];   
double par,s,r[n];
int i,j,ii,k,jj,t=1;
 
double a[n][n+1]={{0.060, 0.048, 0.700, 0.550, 5.458},   ///матрица коеффициентов, где последний столбец - правая часть уравнения/системы
             {0.020, 0.333, 0.080, 0.300, 3.460}, ///сюда вводиш коеф-ты, т.е если 2x то водиш 2, иксы - 1-й столбец, y- 2 столбец...
             {1.250, 0.400, 0.092, 0.248, 18.515},
             {0.034, 0.650, 0.067, 0.300, 5.478}};
 
void main()
{
 for (j=0;j<n-1;j++)
 {
  if (a[j][j]==0)
  {
   ii=j+1;
 do
 {
  if((a[ii][j]!=0)||(ii==n-1))
  {
   break;
  }
 ii++;             ////проверки деления на 0
}
 while(1);
 
if((a[ii][j]==0)&&(ii==n-1))
{
 t=0;
};
 
for(k=0;k<n;k++)
{
 r[k]=a[j][k];
 
 a[j][k]=a[ii][k];
 
 a[ii][k]=r[k];
}}
 
for (i=j+1;i<n;i++)
{
 if(a[i][j]!=0)           /////прямой ход
 {
  par=a[i][j]/a[j][j];
 
 for (jj=j;jj<n+1;jj++)
 {
  a[j][jj]=a[j][jj]*par;
 
  a[i][jj]=a[i][jj]-a[j][jj];
 
  a[j][jj]=a[j][jj]/par;    
 }
}}}
 
 for (i=0;i<n;i++)
 {
  if (a[i][i]==0)
  {
   t=0;
  };
 }
 
 if (t!=0)
 {
  y[n-1]=a[n-1][n]/a[n-1][n-1];
  for (i=n-2;i>=0;i--)             ////обратный ход
  {
   j=n-1;                            
   s=a[i][j]*y[j];
  for (j=n-2;j>0;j--)
  {
   if (j!=i)
   { 
    s=s+a[i][j]*y[j];
  }}
   y[i]=(a[i][n]-s)/a[i][i];
  }
 
 for(i=0;i<n;i++)
 {
  cout<<y[i]<<endl;
 }}
  else
 
 cout<<"opredelitel=0"<<endl;
 getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2012, 15:28     Преобразовать матрицу к треугольному виду
Посмотрите здесь:

C++ Как привести матрицу к верхнему треугольному виду? С++ (Имеется код нахождения нижней треуг. матрицы)
C++ Как привести матрицу к треугольному виду по методу гауса?
C++ Задача: привести матрицу к треугольному виду
Как привести матрицу к треугольному виду C++
C++ Двумерные массивы (СЛАУ). Привести систему к треугольному виду
C++ Свести матрицу к треугольному виду
C++ Привести матрицу к треугольному виду
Привести вектор к треугольному виду C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru