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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
#1

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

02.03.2014, 16:38. Просмотров 809. Ответов 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);
}
Блок-схема и формулы массиво:
Вложения
Тип файла: docx Блок схема и массивы d и s.docx (35.5 Кб, 42 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2014, 16:38     Метод Холецкого
Посмотрите здесь:

Метод Холецкого - C++
Задача: Решить СЛАУ с помощью метода холецкого (квадратного корня). Вывести значение y и вектора невязки r Ay=f - СЛАУ r=Ay-f Метод...

Уровнения по Методу Холецкого - C++
помогите решить систему линейных уровнений по схеме Холецкого в общем виде...Если можно с коментариями...

СЛУ методом LDLT разложения Холецкого - C++
Решить СЛУ методом LDLT разложения Холецкого. помогите пожалуйста разработать данный алгоритм.

Разложение Холецкого и решение СЛАУ на его основе - C++
спасайте люди добрые... признаюсь сразу, я пень-пнём в С++. Мне задан курсовик &quot;Разложение Холецкого и решение СЛАУ на его основе&quot;. В...

Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя) - C++
Здравствуйте! Дали весьма интересное задание. Сравнить два вышеуказанных метода сортировки для массива из 10000 элементов, результаты...

Мой код - метод бисекции, метод секущих (метод хорд) - C++
Всем привет!!! Изучаем в институте С++. Сделал код, и там, и там одна и та же проблема - при любых вбиваемых значениях программа делает...

метод деления отрезка пополам и метод итерации - C++
Методом деления отрезка пополам и методом итерации найти приближенное значение корня 2*x^3+3*x-1=0 абсолютная погрешность 10^-5; Люди...

Вызвать метод через указатель на метод - C++
class MenuItem { public: MenuItem(string name, MenuItem *parent = nullptr, void(MenuItem::*EventHadler)() = nullptr, bool isSelected...

Метод парных перестановок и метод подсчета - C++
Помогите пожалуйста! задача:Переставить строки матрицы так, чтобы убывало кол-во нулей в строках. код задачи: // седьмая.cpp :...

Метод дихотомии (как метод оптимизации) - C++
Нужно написать программу решения метода дихотомии (как метод оптимизации) на С++.А я в С++ новичок, многого не знаю. Пожалуйста, помогите...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru