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

решение Слау - C++

Восстановить пароль Регистрация
 
bodyart11
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 4
02.10.2013, 22:43     решение Слау #1
Написал код для решение Слау методом lu-разложение, но он не работает, выдает ошыбки, которые не могу никак исправить. Прошу помочь. Давно не програмировал по-этому многое забыл. И еше я сделал это через клас, можэт не так надо?
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
#include "stdafx.h"
#include "conio.h"
#include "math.h"
#include "iostream"
#include "iomanip"
using namespace std;
 
 
class lu
{
 
private:
    int n;
    double A[4][4];
    double B[4];
    double L[4][4], U[4][4], X[4], Y[4];
    public:
        void mm();
        void rozklad();
        void pryam();
        void zvorot();
        void vuvid();
};
void lu::mm()
{
    int n=4;
    double A[4][4]={{8.3, 2.62, 4.1, 1.9}, {3.92, 8.45, 7.78, 2.46}, {3.77, 7.21, 8.04, 2.28}, {2.21, 3.65, 1.69, 6.69}};
    double B[4]={-10.65, 12.21, 15.45, -8.35};
    for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
        { L[i][j]=0; U[i][j];}
}
void lu::rozklad()
{
//Сам метод
        for (int k=0; k<n; k++)
        {
            U[k][k]=1;
            for (int i=k; i<n; i++)
            {
                for (int m=0; m<=k-1; m++)
                    L[i][k]+=L[i][m]*U[m][k];
                L[i][k]=A[i][k]-L[i][k];
            }
            for (int j=k+1; j<n; j++)
            {
                for (int m=0; m<=k-1; m++)
                    U[k][j]+=L[k][m]*[m][j];
                U[k][j]=(A[k][j]-U[k][j])/L[k][k];
            }
        }
}
void lu::pryam()
{
//Прямой ход
        for (int i=0; i<n; i++)
            Y[i]=0;
        Y[0]=B[0]/L[0][0];
        for (int i=1; i<n; i++)
        {
            for (int m=0; m<=i-1; m++)
                Y[i]+=L[i][m]*Y[m];
            Y[i]=(B[i]-Y[i])/L[i][i];
        }
}
void lu::zvorot()
{
//обратный ход
        for (int i=0; i<n; i++)
            X[i]=0;
        X[n-1]=Y[n-1];
        for (int i=n-2; i>=0; i--)
        {
            for (int m=i+1; m<n; m++)
                X[i]+=U[i][m]*X[m];
            X[i]=Y[i]-X[i];}
}       
void lu::vuvid()
{
//вывод результата
        for(int i=0; i<n; i++)
            cout<<X[i]<<endl;
        
}
 
void main()
{ lu F;
F.mm();
F.rozklad();
F.pryam();
F.zvorot();
F.vuvid();
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2013, 22:43     решение Слау
Посмотрите здесь:

Решение СЛАУ методом Зейделя C++
C++ Решение слау.
Решение специфичной СЛАУ C++
C++ Решение СЛАУ
Решение СЛАУ методом прогонки C++
Решение СЛАУ методом отражений C++
C++ Решение СЛАУ
C++ Найти решение СЛАУ

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexdemath
 Аватар для Alexdemath
125 / 122 / 6
Регистрация: 11.04.2010
Сообщений: 253
03.10.2013, 00:42     решение Слау #2
В 31-й строке что-то не то с U[i][j].
Yandex
Объявления
03.10.2013, 00:42     решение Слау
Ответ Создать тему
Опции темы

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