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

Метод Холецкого - C++

Восстановить пароль Регистрация
 
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
23.02.2014, 22:33     Метод Холецкого #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
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
void zapolneniemasabd(double **a,double *d,double *b,int n)
{ 
    cout<<"zapolnite matricy a";
    cout<<endl;
    int i,j,m=1,q=0;
    for(i=1;i<n;i++)
    {
        for(j=1;j<n;j++)
        {
        cin>>setw(9)>>a[i][j];
        q++;
        }
    }
    for(i=1,j=1;i<n;i++,j++)
    {
        d[m]=a[i][j];
        m++;
    }
    cout<<"zapolnite vektor-stolbec b";
    for(i=1;i<n;i++)
    {
        cin>>b[i];
    }
}
double sumy(double *b,double **s,double *y,int n,int i)
{
    double w2,numa=0;
    int j;
    for(j=1;j<=i-1;j++)
    {
        w2=s[i][j]*y[j];
        numa=numa+w2;
    }
    return(numa);
}
double sumx(double **s,double *x,int n,int i)
{
    double j2,juma=0;
    int j;
    for(j=i+1;j<=n-1;j++)
    {
        j2=s[j][i]*x[j];
        juma=juma+j2;
    }
    return(juma);
}
double sumd(double *d,double**s,int i,int n)//высчитываем сумму первую
{
    int k;
    double f,sum=0;
    for(k=1;k<=i-1;k++)
    {
        f=pow(s[i][k],2.);
        sum=sum+f;;
    } 
    return(sum);
}//                                         сумма найдена
    double sumd2(double *d,double **s,int i,int j, int n)//высчитываем сумму вторую
    {
        int suma=0,k;
        double g;
        for(k=1;k<=j-1;k++)
        {
            g=s[i][k]*s[j][k];
            suma=suma+g;
        }
        return(suma);
    }//                                                        сумма найдена
int main(void)//начало поиска корней
{
    double **a,*b,*x,*d,**s,h,*y,sam,fam,*v,tam,kam,**s_t;
    int n,k,i,j,t=5,q=0,r=5,w,u=5,z=0;
    double p2;
    cout<<"vvedite kolvo strok i stolbcov";
    cin>>n;
    n=n+1;
    v=new double[n-1];
        d=new double[n-1];
    s=new double*[n-1];
    a=new double*[n-1];
    b=new double[n-1];
    x=new double[n-1];
    y=new double[n-1];
    for(i=1;i<n;i++)
    {
      s[i]=new double[n];
      a[i]=new double[n];
    }
    zapolneniemasabd(a,d,b,n);
        for(i=1;i<n;i++)
        {
            for(j=1;j<n;j++)
            {
                sam=sumd(d,s,i,n);
            s[i][i]=sqrt(a[i][i]-sam);
            if(i<j)
            {
                fam=sumd2(d,s,i,j,n);
                s[i][j]=(a[i][j]-fam)/s[j][j];
            }
            }
        }
        y[1]=b[1]/s[1][1];
        for(i=2;i<n;i++)
        {
            tam=sumy(b,s,y,n,i);
            y[i]=(b[i]-tam)/s[i][i];
        }
        x[n-1]=y[n-1]/s[n-1][n-1];
        for(i=n-1;i>=1;i--)
        {
            kam=sumx(s,x,n,i);
            x[i]=y[i]-kam;
        }
        cout<<endl;
for(i=1;i<n;i++)
{
    cout<<x[i];
    cout<<endl;
}
    system("pause");
    return(0);
}
Помогите,пожалуйста.Пара формул,по которым всё и делал.
Миниатюры
Метод Холецкого  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2014, 22:33     Метод Холецкого
Посмотрите здесь:

Уровнения по Методу Холецкого C++
Метод дихотомии (как метод оптимизации) C++
C++ Метод Холецкого для решения Слау
Разложение Холецкого и решение СЛАУ на его основе C++
метод деления отрезка пополам и метод итерации C++
Метод Холецкого C++
C++ Метод оптимизации. Метод Фибоначчи
C++ СЛУ методом LDLT разложения Холецкого

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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