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

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

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

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

19.11.2014, 23:24. Просмотров 630. Ответов 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.INF и -1.IND (C++):

Результат -1.#IND - C++
Доброго времени суток. Выполняю вроде бы простейшее задание, но результат программа выдает странный: #include &quot;stdafx.h&quot; ...

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

Код выдает непонятный результат -1.#IND - C++
#include&lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; int main() { int a=-2,b=6; double x=-2,y=0,c=0.5; do { ...

Выводит -1.#IND вместо значения переменной - C++
Здравствуйте, очень долго бьюсь с проблемой. заключается она в следующем. Есть ряд Тейлора для sin(x)/x который равен(сразу распишу) sum...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nosey
1348 / 399 / 107
Регистрация: 22.10.2014
Сообщений: 861
Завершенные тесты: 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
Привет! Вот еще темы с ответами:

Выводит INF вместо значения - C++
Не ругайте за стиль , только учусь. проблема с выводом значения X строка 63,68. Вроде 97/97 должно быть 1, он даёт INF // решение систем...

При вычислении степени получается результат 1.#INF - C++
Добрый день! При вычислении степени получается результат 1.#INF Нужно диагностировать эту ситуацию, т.е. выводить в программе...

Почему при вводе чисел в ответе выводит #INF - C++
где ошибка почему при вводе чисел в ответе выводит #INF #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;windows.h&gt; using...

Метод Якоби - C++
Ребят помогите реализовать метод Якоби по алгоритму (находится во вложениях) проблема с циклами (не стал выкладывать)доп требование это...


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

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

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