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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание и вывод двумерного массива http://www.cyberforum.ru/cpp-beginners/thread1109200.html
Створити и вивести двовімірній масив для зберігання кількості очок, Зроблений за 4 квартали поточного року кожним членом баскетбольної команди (стовбці відповідають квартали, рядки-номерам гравців).
C++ Дан массив размера N и целые числа K и L (0<=K<=L<=N-1).Напишите функцию Дан массив размера N и целые числа K и L (0<=K<=L<=N-1).Напишите функцию, возвращающую разность между суммой элементов массива с индексом от K и L включительно и суммой остальных элементов. Есть... http://www.cyberforum.ru/cpp-beginners/thread1109195.html
C++ Не получается распечатать текст на принтере через ofstream
Здравствуйте, в книге в которой я читаю, есть пример как выводить текст на печатающее устройство, там было написано, что нужно использовать порт или lpt1 или prn. Я покопался в настройках принтера,...
C++ программа обработки сведений
Помогите составить программу обработки сведений о студентах.сведения представляются в виде таблицы. Нужно ввести ФИО, пол и размер стипендии. вывести вывести девушек получающих повышенную стипендию....
C++ Как привести std::wstring к std::string? http://www.cyberforum.ru/cpp-beginners/thread1109164.html
Как привести std::wstring к std::string?
C++ Составить программу которая находит максимальный элемент Дана квадратная матрица А порядку n. Составить программу, которая находит максимальный элемент и все элементы, розположенные в одном ряде и в одному столбце с максимальной заменяем на нули. Учесть,... подробнее

Показать сообщение отдельно
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66

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

02.03.2014, 16:38. Просмотров 861. Ответов 0
Метки (Все метки)

Здравствуйте.Помогите,пожалуйста.Есть блок-схема,с которой всё переписано,но программа почему-то работает неверно.Выдаёт слишком большие корни.Порядок матрицы: 5.Препод говорит мол всё должно работать по этой блок-схеме,поэтому и хочу понять что не так у меня,а не просто загуглить другой алгоритм.Всё просто,гляньте на пару минут и возможно,пожскажите,кто уже делал этим методом(Холецкого) ,что не так.
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
#include<iostream>
#include<math.h>
using namespace std;
int main (void)
{
    double a[6][6],b[6],x[6],y[6],delta,delta2=0,delta3=0,del2,del3,delta4=0,del4,s[6][6],d[6],H;
    int i,j,n,k;
    cout<<"vvedite poryadok matrici";
    cin>>n;
    n=n+1;
    a[1][1]=-4.88; a[1][2]=1;  a[1][3]=0;a[1][4]=0; a[1][5]=0;
    a[2][1]=1;     a[2][2]=-2; a[2][3]=1; a[2][4]=0;a[2][5]=0;
    a[3][1]=0;     a[3][2]=1;  a[3][3]=-2;a[3][4]=1; a[3][5]=0;
    a[4][1]=0;      a[4][2]=0;  a[4][3]=1; a[4][4]=-2;a[4][5]=1;
    a[5][1]=0;      a[5][2]=0;  a[5][3]=0; a[5][4]=1; a[5][5]=-4.88;
    b[1]=0;b[2]=-8;b[3]=-8;b[4]=-8;b[5]=0;
    for(k=1;k<n;k++)//нахождение элементов S и d;
    {
        for(i=1;i<k-1;i++)
        {
            del2=d[i]*pow(fabs(s[i][k]),2);
            delta2=delta2+del2;
        }
        if((a[k][k]-delta2)>0)
            d[k]=1;
            if((a[k][k]-delta2)<0)
                d[k]=-1;
                s[k][k]=pow(fabs(a[k][k]-delta2),1/2);
                for(j=k+1;j<n;j++)
                {
                    for(i=1;i<k-1;i++)
                    {
                        del4=d[i]*s[i][k]*s[i][j];
                        delta4=delta4+del4;
                    }
                    s[k][j]=(a[k][j]-delta4)/(s[k][k]*d[k]);
                }
    }
    for(k=1;k<n;k++)
    {
        delta=a[k][k];
        if(k!=1)
        {
            for(i=1;i<k-1;i++)
            {
                delta=delta-d[i]*pow(s[i][k],2);
            }
        }
        if(delta>0)
        d[k]=1;
        if(delta<0)
            d[k]=-1;
            s[k][k]=pow(fabs(delta),1/2);
                for(j=k+1;j<n;j++)
                {
                    delta=a[k][j];
                    if(k!=1)
                    {
                        for(i=1;i<k-1;i++)
                        {
                            delta=delta-d[i]*s[i][k]*s[i][j];
                        }
                    }
                    s[k][j]=delta/(s[k][k]*d[k]);
                }
    }
    y[1]=b[1]/(s[1][1]*d[1]);
    for(i=2;i<n;i++)
    {
        delta=b[i];
        for(k=1;k<i-1;k++)
        {
            delta=delta-d[k]*y[k]*s[k][i];
        }
        y[i]=delta/(s[i][i]*d[i]);
    }
    x[n-1]=y[n-1]/s[n-1][n-1];
    for(i=n-2;i>=1;i--)
    {
        delta=y[i];
        for(k=i+1;k<n;k++)
        {
            delta=delta-x[k]*s[i][k];
        }
        x[i]=delta/s[i][i];
    }
    cout<<endl;
    for(i=1;i<n;i++)
    {
        cout<<x[i];
        cout<<endl;
    }
    cout<<"nevyazka";
     for(i=1;i<n;i++)
                  {
                      double z=0;
                        for(int j=1;j<n;j++)
                        {
                        z=z+(a[i][j]*x[j]);
                        }
                            H=fabs(b[i]-z);
                            cout<<endl;
                             cout<<"Nevyazka"<<H;
     }
    system("pause");
    return(0);
}
Блок-схема и формулы массиво:
0
Вложения
Тип файла: docx Блок схема и массивы d и s.docx (35.5 Кб, 43 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru