Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Rambaga
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 3
1

Метод Якоби. Выводит результат -1.INF и -1.IND

19.11.2014, 23:24. Просмотров 791. Ответов 1
Метки нет (Все метки)

Вот сделал прогу, но почему-то вместо нормального результата выводит это:
result|x:
-1.#INF
-1.#IND
-1.#INF
-1.#IND
-1.#IND
нигде на 0 не делится да и числа маленькие. Подскажите в чем проблема?


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
#include "stdafx.h"
#include "iostream"
#include "omp.h"
#include "cstdlib" 
#include "conio.h"
#include "stdio.h"
#include "math.h"
using namespace std;
const double eps=0.001;
 
/// N - размерность матрицы; A[N][N] - матрица коэффициентов, F[N] - столбец свободных членов,
/// X[N] - начальное приближение, ответ записывается также в X[N]
void Jacobi(int N, double **A, double *F, double *X)
{
    double *TempX = new double[N],start,end;
    double norm;
    int cnt=0;
    
    do {
        for (int i = 0; i < N; i++) {
            TempX[i]=F[i];
            for (int g=0; g<N; g++) 
                if (i!=g)
                    TempX[i]=TempX[i]-A[i][g] * X[g];
            TempX[i]=TempX[i]/A[i][i];
        }
        norm = fabs(X[0] - TempX[0]);
        for (int h = 0; h<N; h++){
            if (fabs(X[h]-TempX[h])>norm)
                norm = fabs(X[h]-TempX[h]);
            X[h] = TempX[h];
        }
        cnt++;  
    } 
    while (norm>eps);
    delete[] TempX;
}
int main(){
    int n=5;
    //create A
    double **A=new double* [n];
    for(int i=0; i<=n; i++){ 
        A[i]=new double[n]; 
    } 
    //add A
    for (int i=0; i<n; i++){
        for (int j=0; j<n; j++){
            A[i][j]=rand()%10 +(-3);
            if(i==j && A[i][j]==0){
                A[i][j]=rand()%3 +1;
            }
        }
    }
 
    //create F and add
    double *F=new double[n];
    for(int i=0; i<n; i++)
            F[i]=rand()%10;
    
   double *x=new double[n];
    for(int i=0;i<n;i++)
        x[i]=1000;
    Jacobi(n, A, F, x);
    cout << "result|x:\n";
    for (int i=0; i<n; i++)
    {
            cout<<x[i]<<" "<<endl;
    }
    cout<<endl;
    for (int i=0; i<n; i++)
        delete []A[i];
    delete F;
    delete x;
    _getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 23:24
Ответы с готовыми решениями:

Метод ранга. Неверно выводит результат
Добрый день, уважаемые форумчане! Столкнулся с такой проблемой. Есть задача,...

Результат -1.#IND
Доброго времени суток. Выполняю вроде бы простейшее задание, но результат...

Программа выводит nan ind
Исходные данные: a=4; b=5; eps=0.0001; Выводит: xz=-nan(ind); k=5;...

Код выдает непонятный результат -1.#IND
#include&lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; int main() { int...

Задачка с рядами Тейлора выводит -1.#IND
Вчера писали программу для рекуррентных рядов. Функция выдает решение, а вот с...

1
Nosey
1350 / 401 / 144
Регистрация: 22.10.2014
Сообщений: 863
Завершенные тесты: 2
20.11.2014, 01:06 2
У вас алгоритм который описан в
C++
1
while (norm>eps);
не сходится. И выход из алгоритма происходит скорее всего из-за переполнения double и случайности.

А как считается считается якобиан, и для чего он, я уже не помню
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 01:06

Выводит -1.#IND вместо значения переменной
Здравствуйте, очень долго бьюсь с проблемой. заключается она в следующем. Есть...

Метод ньютона -1.#IND
Не могу понять что не так конкретно в 4 Задании #include &lt;iostream&gt;...

Выводит -inf при вводе x = 1, z = 2, y =3
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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