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

Вывод вектора ax+b - C++

Восстановить пароль Регистрация
 
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
01.06.2012, 11:33     Вывод вектора ax+b #1
Программа решает систему методом зейделя, помогите пожалуйста в завершающей точке вывести вектор ах-б

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
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
//#include "stdafx.h"
    #include <iostream>//i/o
    #include <conio.h> //getch
    #include <cmath>   //fabs, abs
  //  #include "stdafx.h"
    #include <math.h>
    #include <tchar.h> 
 
using namespace std;
 
 
 
     const int zn=2000;
     double zeps = 0.01;
     int zi;
     double zx[zn];
     int zr=4, N=2;
     //double zb[zn];
     //double zla[zn][zn];
     double zla[zn][zn]={{25,2,-2,1},{0,-20-0.3*N,3,0.1*N},{2,5,25,-2},{-4,-0.1*N,1,16+0.3*N}},
zb[zn]={{25*N+11},{-49-0.5*N},{2*N-67},{-3.9*N+13}};
   int vibs;
    
   double Zeydel (double zla[zn][zn], double zb[zn], double zx[zn], double ze);
    
 
    int main () {
    char vibormetoda;
    setlocale (LC_ALL, "Russian"); 
    
                cout<<"Zeidel:"<<endl;
                cout << '\n'; 
 
               // std::cout << "Aaaaeoa NUM o?aaiaiee:";
                //std::cin >>  zr;
            
        // for (int zi = 0; zi < zr; zi++)
          //  for (int zj = 0; zj < zr; zj++)
           // {{
              //   std::cout << "Caiieieoa iao?eoo A [" << zi+1 << "][" << zj+1 << "] = ";
             //   std::cin >> zla[zi][zj];
            
        //    }}
            //for ( zi = 0; zi < zr; zi++) {
             //   std::cout << "Aaeoi? B [" << zi << "] = ";
               // std::cin >> zb[zi];
          //  }
 
            // Auaiaei iao?eoa e aaeoi? 
 
                cout<<("Matrica A:\n")<<endl;
    
        for (int i = 0; i<zr; i++)
        {
            for(int j = 0;j<zr; j++)
                cout<<zla[i][j]<<"\t";
            
            cout<<"\n"<<endl;
        }
        
        printf("Matrica B:\n\n");
           for ( i = 0; i<zr; i++){
        cout<<zb[i]<<"\n";
           }
 
        
            cout << '\n'<<endl; 
            
 
     for ( zi=0;zi<zr;zi++)
     {
      zx[zi]=0;
     }
 
     if (Zeydel (zla,zb,zx,zeps))
     {
         cout << '\n'; cout << '\n'; 
         std::cout<<"Rezultat:";
         cout << '\n'; cout << '\n'; 
      for (int zi=0;zi<zr;zi++)
      {
       std::cout<<zx[zi]<<endl;
      
      }
     cout<<endl;}   
 
    
            
   system ("Pause");
    
 
        }
        
 
    double Zeydel (double zla[zn][zn], double zb[zn], double zx[zn], double ze)
    {
     int zi,zj;
     double zs1, zs2, zs, zv, zm;
    double zii=0;
     do
     {
      zm = 0;
      for (zi=0; zi< zr; zi++)
      {
       zs1=0;
       zs2=0;
 
       for (zj=0;zj<zi;zj++)  zs1+= zla[zi][zj]*zx[zj];
       for (zj=zi;zj<zr;zj++)  zs2+= zla[zi][zj]*zx[zj];
        zv=zx[zi];
        zx[zi]-=(zs1+zs2-zb[zi])/zla[zi][zi];
 
        if (fabs(zv-zx[zi])>zm)
         zm=fabs(zv-zx[zi]);
       }
        zii++;
       }
      while (zm>=ze);
 
        std::cout<<"Chislo Iteracii: "<<zii;
       return 1;
     }
Добавлено через 9 минут
в общем, перемножить матрицу а на х вычесть из этого матрицу б
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2012, 11:33     Вывод вектора ax+b
Посмотрите здесь:

C++ Вывод содержимого вектора на экран
Ввод и вывод вектора C++
Вывод вектора C++
C++ вывод вектора
C++ Вывод вектора
Вывод значений вектора на экран C++
C++ Вывод вектора (vector)
C++ Вывод вектора

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
03.06.2012, 17:37  [ТС]     Вывод вектора ax+b #2
Вот до чего дошел, выдает только последнее значение вместо всего столбца ах-б почему-то

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
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
    #include <iostream>//i/o
    #include <conio.h> //getch
    #include <cmath>   //fabs, abs
    #include <math.h>
    #include <tchar.h> 
 
using namespace std;
 
 
 
     const int zn=2000, q1=1000;
     double zeps = 0.01;
     int zi;
     double zx[zn];
     int zr=4, N=2;
     double re[q1];
     double zla[zn][zn]={{25,2,-2,1},{0,-20-0.3*N,3,0.1*N},{2,5,25,-2},{-4,-0.1*N,1,16+0.3*N}},
zb[zn]={{25*N+11},{-49-0.5*N},{2*N-67},{-3.9*N+13}};
   int vibs;
    
   double Zeydel (double zla[zn][zn], double zb[zn], double zx[zn], double ze);
    
 
    int main () {
    char vibormetoda;
    setlocale (LC_ALL, "Russian"); 
    
                cout<<"Zeidel:"<<endl;
                cout << '\n';
 
                cout<<("Matrica A:\n")<<endl;
    
        for (int i = 0; i<zr; i++)
        {
            for(int j = 0;j<zr; j++)
                cout<<zla[i][j]<<"\t";
            
            cout<<"\n"<<endl;
        }
        
        printf("Matrica B:\n\n");
           for ( i = 0; i<zr; i++){
        cout<<zb[i]<<"\n";
           }
 
        
            cout << '\n'<<endl; 
            
 
     for ( zi=0;zi<zr;zi++)
     {
      zx[zi]=0;
     }
 
     if (Zeydel (zla,zb,zx,zeps))
     {
         cout << '\n'; cout << '\n'; 
         std::cout<<"Rezultat:";
         cout << '\n'; cout << '\n'; 
      for (int zi=0;zi<zr;zi++)
      {
       std::cout<<zx[zi]<<endl;
      
      }
     cout<<endl;}   
 
    
            
   system ("Pause");
    
 
        }
        
 
    double Zeydel (double zla[zn][zn], double zb[zn], double zx[zn], double ze)
    {
     int zi,zj;
     double zs1, zs2, zs, zv, zm;
    double zii=0;
     do
     {
      zm = 0;
      for (zi=0; zi< zr; zi++)
      {
       zs1=0;
       zs2=0;
 
       for (zj=0;zj<zi;zj++)  zs1+= zla[zi][zj]*zx[zj];
       for (zj=zi;zj<zr;zj++)  zs2+= zla[zi][zj]*zx[zj];
        zv=zx[zi];
        zx[zi]-=(zs1+zs2-zb[zi])/zla[zi][zi];
 
        if (fabs(zv-zx[zi])>zm)
         zm=fabs(zv-zx[zi]);
       }
        zii++;
       }
      while (zm>=ze);
 
        std::cout<<"Chislo Iteracii: "<<zii<<endl;
 
        
    
        for (int i=0; i<4; i++)
{
for (int j=0; j<4; j++)
{
    re[q1]=zla[i][j]*zx[zi]-zb[i];}}
 
            for ( i=0; i<4; i++)
{
for (int j=0; j<4; j++)
{
    cout<<re[q1]<<endl;}}
 
       return 1;
 
       
    
     }
Yandex
Объявления
03.06.2012, 17:37     Вывод вектора ax+b
Ответ Создать тему
Опции темы

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