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

Итерационный метод - C++

Восстановить пароль Регистрация
 
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
12.04.2014, 23:34     Итерационный метод #1
Помогите найти ошибку в алгоритме. Ошибка в итоге выливается том что при подсчёте невязки, она не уменьшается, а увеличивается. Матрицу 4x4 и столбец свободных членов ввожу с клавиатуры.
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
void IterativeMethod::bringingToTheEquivalentForm()  //выражение x[1]..x[4] через уравнения
{
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            G[i][j] = -1*Matrix[i][j] / Matrix[i][i];
        }
        G[i][i] = 0;
        F[i] = Values[i] / Matrix[i][i];
        X[i] = F[i];
    }
}
 
void IterativeMethod::constructionSequence()  //сами приближения
{
    int k = 0;
    double norm;
    do{
    for (int i = 0; i < 4; i++)
    {
        Unknown[i] = 0;
    }
 
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            cout<<"\n"<<Unknown[i]<<" += "<<G[i][j]<<"*"<<X[j];
            Unknown[i] += G[i][j]*X[j];
        }
        Unknown[i] += F[i];
    }
 
    norm = 0;
    for (int i = 0; i < 4; i++)
        norm = norm + (Unknown[i]-X[i])*(Unknown[i]-X[i]);
    norm = sqrt(norm);
    cout<<"\nnorm = "<<norm;
 
    for (int i = 0; i < 4; i++)
        X[i] = Unknown[i];
    
    }while (norm > 0.001);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2014, 23:34     Итерационный метод
Посмотрите здесь:

Итерационный цикл... C++
C++ итерационный метод удаления бинарного дерева
метод деления отрезка пополам и метод итерации C++
Итерационный алгоритм. Прикладные задачи математики! C++
C++ Производный класс: метод возведения в произвольную степень, и метод для вычисления логарифма числа
Класс vector (поля: координаты, 2 конструктора, метод нахождения длины вектора и метод вывода координат на экран) C++
Максимальное по модулю собственное значение матрицы. Итерационный метод C++
Вычислить собственные значения матрицы через итерационный процесс C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
 Аватар для Ev_Hyper
1805 / 1626 / 435
Регистрация: 15.12.2013
Сообщений: 5,773
12.04.2014, 23:45     Итерационный метод #2
SKS-65, тестовый пример + метод, который вы реализовываете.
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
13.04.2014, 01:39  [ТС]     Итерационный метод #3
Ev_Hyper, итерационный метод (метод нахождения корней системы уравнений).
А пример имеете в виду матрицы, тогда вот
-1 4.8 1.5 1.75 | 0.12
1 2 0 1.41 | 0.07
0 1.71 -1.06 1.205 |0.25
-1 2.82 -1.732 2 | 0.15

Добавлено через 1 час 47 минут
Разобрался в чём проблема
Yandex
Объявления
13.04.2014, 01:39     Итерационный метод
Ответ Создать тему
Опции темы

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