Форум программистов, компьютерный форум 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++ 2010 или С++ 6.0 или ещё какой другой.
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) в виде бинарного дерева и обчислить арифметическое выражнеие. Если можно зделайте програму в 3 файлай. Зарание спасибо.
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
09.06.2011, 20:40     Решение СЛАУ в С++
Помогите с программой, пожалуйста.

Задание:

Решить СЛАУ 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru