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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как можно редактировать инструмент класса CListCtrl извне. Возможны ли альтернативы? http://www.cyberforum.ru/cpp-beginners/thread1305563.html
Добрый день! Передо мной стоит задача разработать приложение c GUI. необходимо выводить название файлов, содержащихся в папке, в виде списка. А также необходимо осуществить возможность...
C++ Вычисление определенных интегралов методом прямоугольников Дана тема: Вычисления определенных интегралов методом прямоугольников. К примеру, дан интеграл, от а до b, количество шагов N, посчитать сумму. Нужно в C++ сделать. Сижу уже второй час,... http://www.cyberforum.ru/cpp-beginners/thread1305562.html
В целочисленном массиве после каждого четного числа вставить максимальный элемент массива C++
В целочисленном массиве X(N) после каждого четного числа вставить максимальный элемент массива. Найти среднее арифметическое элементов массива до и после вставки. В программе написать функции:...
C++ Шаблоны и Макросы С++
Задание связанное с макросами и шаблонами, ни как не могу решить проблему. Задание: Макрос - Квадрат числа Выражение - Квадрат суммы Целый параметр - unsigned short Действительный параметр...
C++ Отображение CString при отладке http://www.cyberforum.ru/cpp-beginners/thread1305550.html
всем доброго времени суток, уже какой день бьюсь над проблемой и никак не могу найти решение CString B("Привет"); если поставить точку останова после этой строки и посмотреть чему равен В...
C++ Построение графика в Corel Draw через C++ Здравствуйте. Дали задание с построением графика в Corel Draw через с++. Я таким способом графики никогда не строил, и мне поэтому просто дали строки кода для его построения. Программа выполняется,... подробнее

Показать сообщение отдельно
Rambaga
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 3

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

19.11.2014, 23:24. Просмотров 631. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru