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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Система счисления http://www.cyberforum.ru/cpp-beginners/thread316890.html
Написать программу в Delphi, обучающую переводу чисел из десятичной системы счиления в двоичную, из восьмиричной в двоичную, из шестнадцатиричной в двоичную и наоборот.
C++ Одномерные массивы на С! помогите пожалуйста решить задачку на С.. В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) количество элементов массива, равных 0; 2) сумму элементов массива,... http://www.cyberforum.ru/cpp-beginners/thread316882.html
Какой С++ лучше? C++
Подскажите, какой С++ лучше выбрать для изучения. Я имею 2 книги: "Освой самостоятельно С++ за 21 день" 2010 год и "С++ Шаг за шагом" 2010 год. Чтобы можно было работать с этими книгами. Visual C++...
C++ оператор if, некорректно работает программа
#include <iostream.h> #include <math.h> main () { int b; double z, x=0.63, c=1.5, d=2, a=0.37; cout << "Vvedite znachenie B" << endl; cin >> b;
C++ Бинарные деревья http://www.cyberforum.ru/cpp-beginners/thread316873.html
На с++ с объектно-ориентированным подходом(тоисть с помощю класов) нужно представить арифметическое выражение типа 3*((7+1)/4)+(17-5) в виде бинарного дерева и обчислить арифметическое выражнеие....
C++ Вычисление выражения по формуле в виде подпрограммы оформить в виде подпрограмы вычисление {{U}_{n}}^{m}=\frac{n!}{m!(n-m)!}, составить програму для расчёта величины z={{U}_{15}}^{1}+{{U}_{14}}^{2}+...+{{U}_{8}}^{8} подробнее

Показать сообщение отдельно
Foralberg
0 / 0 / 0
Регистрация: 31.01.2011
Сообщений: 3

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

09.06.2011, 20:40. Просмотров 551. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru