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

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

Войти
Регистрация
Восстановить пароль
 
Foralberg
0 / 0 / 0
Регистрация: 31.01.2011
Сообщений: 3
#1

Решение СЛАУ в С++ - C++

09.06.2011, 20:40. Просмотров 574. Ответов 0
Метки нет (Все метки)

Помогите с программой, пожалуйста.

Задание:

Решить СЛАУ A^2*X=Y^T,
где A = ∣2 1 5 2|
|5 2 2 6|
|2 2 1 2|
|1 3 3 1∣ , Y = [ 3 1 2 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
123
124
125
126
127
128
129
130
131
#include "stdafx.h"
#include <iostream.h>
#include <math.h>
 
void Pow_mtr(double **mtr, int height)
{
    int i, j, k, n;
    double temp[n][n];    
    --height;
 
    while (height > 0)
    {
        for(i=0; i<n; ++i)
            for(j=0; j<n; ++j)
            {
                temp[i][j]=0;
 
                for(k=0; k<n; ++k)
                    temp[i][j] += mtr[i][k]*mtr[k][j];
            }
        for (i = 0; i < n; i ++)
            for (j = 0; j < n; j ++)
                mtr[i][j] = temp[i][j];
 
       --height;
    }
}
 
int SLAU(double **matrica_a, int n, double *massiv_b, double *x)
{
int i, j, k, r;
double c, M, max, s;
double **a, *b;
a=new double *[n];
for(i=0; i<n; i++)
a[i]=new double[n];
b=new double[n];
for(i=0; i<n; i++)
for(j=0; j<n; j++)
a[i][j]=matrica_a[i][j];
for(i=0; i<n; i++)
b[i]=massiv_b[i];
for(k=0; k<n; k++)
{
    max=fabs(a[k][k]);
    r=k;
    for(i=k+1; i<n; i++)
        if (fabs(a[i][k]>max))
        {
            max=fabs(a[i][k]);
            r=i;
        }
        for(j=0; j<n; j++)
        {
            c=a[k][j];
            a[k][j]=a[r][j];
            a[r][j]=c;
        }
        c=b[k];
        b[k]=b[r];
        b[r]=c;
        for(i=k+1; i<n; i++)
        {
            for(M=a[i][k]/a[k][k], j=k; j<n; j++)
                a[i][j]-=M*a[k][j];
            b[i]-=M*b[k];
        }
}
if(a[n-1][n-1]==0)
if(b[n-1]==0)
return -1;
else return -2;
else
{
    for(i=n-1; i>=0; i--)
    {
        for(s=0, j=i+1; j<n; j++)
            s+=a[i][j]*x[j];
        x[i]=(b[i]-s)/a[i][i];
    }
    return 0;
}
for(i=0; i<n; i++)
delete [] a[i];
delete [] a;
delete [] b;
}
 
 
 
int main(int argc, char* argv[])
{
    int n;
double **mas_a;
double *mas_b;
double *mas_x;
double **matr;
double v[1]={2};
cout << "Ukazhite razmernost matrici";
cin >> n;
mas_a = new double *[n];
    for(i=0; i< n; i++)
      mas_a[i] = new double[n];
mas_b = new double [n];
mas_x = new double [n];
matr = new double *[n];
    for(i=0; i< n; i++)
      matr[i] = new double[n];
for (int i = 0; i < n; i++)
  for (int j = 0; j < n; j++)
  {
      cout << "Vvedite element: ";
      cin >> mas_a[i][j];
  }
for (int i = 0; i < n; i++)
{
      cout << "Vvedite element: ";
      cin >> mas_b[i];
}
tr_matr(mas_a, matr);
mul_matr(matr, matr, mas_a);
mul_matr_vect(mas_a,v, matr);
SLAU(matr, n, mas_b, mas_x);
for (int i =0; i < n; i++)
    cout >> mas_x[i];
for(i=0; i<n; i++)
delete [] a[i];
delete [] a;
delete [] b;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2011, 20:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Решение СЛАУ в С++ (C++):

решение Слау - C++
Написал код для решение Слау методом lu-разложение, но он не работает, выдает ошыбки, которые не могу никак исправить. Прошу помочь. Давно...

Решение слау. - C++
Здравствуйте. Я пишу программу, которая будет решать слау одним из выбранных мною методов. Методы решения мне известны и организовать их в...

Решение СЛАУ - C++
Доброго времени суток . Пишу программу , которая должна решать системы линейных уравнений методом Гаусса(методом ведущего элемента в...

Решение СЛАУ - C++
Здравствуйте. Помогите пожалуйста. Нужны программные реализации решения СЛАУ методом Крамера и Гаусса на С++

Найти решение СЛАУ - C++
#include &lt;iostream&gt; #include &lt;math.h&gt;0 using namespace std; double minor_ij(int,int); // minor – алгебрарическое дополнение double...

Решение специфичной СЛАУ - C++
Всем доброго времени суток! возникла проблема при решении СЛАУ по Крамеру - а именно - необходимо чтобы корни были положительными. СЛАУ с 5...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2011, 20:40
Привет! Вот еще темы с ответами:

Найти общее решение СЛАУ - C++
Ребят,ни у кого нет исходников на эту задачу?Я только удалил n-r уравнений.Если есть,буду очень благодарен))

Решение СЛАУ методом Гаусса - C++
помогите разобраться!!ВЫдает 85 ошибок!!!! #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;tchar.h&gt; #include &lt;iostream&gt; #include...

Решение СЛАУ методом отражений - C++
Добрый вечер :) Было две темы &quot;Решение СЛАУ методом отражений&quot;, но нет реализации) У меня есть код , в котором реализовано два метода...

Решение СЛАУ методом Зейделя - C++
Методом Зейделя решить с точностью до 0.001 заданную систему уравнений 3.3*x1+2.1*x2+2.8*x3=0.8 4.1*x1+3.7*x2+4.8*x3=5.7 ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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