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

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

Войти
Регистрация
Восстановить пароль
 
 
Penelent
Заблокирован
#1

Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу - C++

18.01.2016, 10:39. Просмотров 1875. Ответов 32
Метки нет (Все метки)

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
#include <math.h>
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];
    double norm; // норма, определяемая как наибольшая разность компонент столбца иксов соседних итераций.
 
    do {
        for (int i = 0; i < N; i++) {
            TempX[i] = F[i];
            for (int g = 0; g < N; g++) {
                if (i != g)
                    TempX[i] -= A[i][g] * X[g];
            }
            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];
        }
    } while (norm > eps);
    delete[] TempX;
}
 
int main()
{
    const int N = 3;
    double A[N][N] = { { 5, -4, -1 }, { 4, 1, -2 }, { 3, 1, -5 } };
    double F[N] = { -2, 8, 10 };
    double X[N] = { 0 };
    Jacobi(N, (double**)A, F, X);
}
при выполнении кода выбивает ошибку на 16 строке
Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу
Добавлено через 32 секунды
з.ы. код взят отсюда
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2016, 10:39     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу
Посмотрите здесь:
C++ Необработанное исключение по адресу 0x00ED4891 в strings.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC
Вызвано исключение по адресу 0x01361A1E в Matrix 1.0.exe: 0xC0000005: нарушение прав доступа при записи C++
C++ Необработанное исключение по адресу 0x00105FD7 в Динамические структуры: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCE09
C++ Необработанное исключение по адресу 0x008B94C5. 0xC0000005: нарушение прав доступа при чтении по
Необработанное исключение по адресу, нарушение прав доступа при записи по адресу C++
C++ Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу
Нарушение прав доступа при чтении по адресу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Penelent
Заблокирован
18.01.2016, 14:00  [ТС]     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #21
Цитата Сообщение от nord_v Посмотреть сообщение
У меня, вот что выводит.
что это?
nord_v
227 / 176 / 69
Регистрация: 22.08.2013
Сообщений: 724
18.01.2016, 14:03     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #22
Цитата Сообщение от Penelent Посмотреть сообщение
что это?
Вот это:
Цитата Сообщение от nord_v Посмотреть сообщение
Перед while (norm > eps) выведи на консоль значение norm
Вот так сделай:
C++
1
2
3
//.........
          cout << norm << endl;
    } while (norm > eps);
Penelent
Заблокирован
18.01.2016, 14:05  [ТС]     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #23
nord_v, ну допустим, ну и что? значит в вики неверный алгоритм? поможешь исправить?
nord_v
227 / 176 / 69
Регистрация: 22.08.2013
Сообщений: 724
18.01.2016, 14:08     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #24
Цитата Сообщение от Penelent Посмотреть сообщение
ну допустим, ну и что?
То, что norm должен уменьшаться, а не расти безгранично (там переполнение наступает).
Цитата Сообщение от Penelent Посмотреть сообщение
значит в вики неверный алгоритм?
Я его не видел.
Цитата Сообщение от Penelent Посмотреть сообщение
поможешь исправить?
Нет, неинтересно.
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
18.01.2016, 14:10     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #25
Цитата Сообщение от Penelent Посмотреть сообщение
да и вообще алгоритм с википедии, врятли там не правильно сделали
на счет святости вики:
Очередная сортировка пузырьком
Penelent
Заблокирован
18.01.2016, 14:13  [ТС]     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #26
Цитата Сообщение от nord_v Посмотреть сообщение
То, что norm должен уменьшаться, а не расти безгранично (там переполнение наступает).
вот и мне так кажется...
Цитата Сообщение от nord_v Посмотреть сообщение
Я его не видел.
я же кидал ссылку
Цитата Сообщение от Penelent Посмотреть сообщение
код взят отсюда
nord_v
227 / 176 / 69
Регистрация: 22.08.2013
Сообщений: 724
18.01.2016, 14:20     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #27
Цитата Сообщение от Penelent Посмотреть сообщение
я же кидал ссылку
Там другой код (тот может и работает, а может и нет).

Добавлено через 3 минуты
Может у тебя входные данные неправильные.
Penelent
Заблокирован
18.01.2016, 14:32  [ТС]     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #28
Цитата Сообщение от nord_v Посмотреть сообщение
Там другой код (тот может и работает, а может и нет).
я ничего не менял кроме способа передачи массивов
Цитата Сообщение от nord_v Посмотреть сообщение
Может у тебя входные данные неправильные.
как так может быть? разве туда не рандомно подавать можно? ну так или иначе я брал данные с примера какого то

Добавлено через 4 минуты
а вот здесь как будто бы работает, не пересчитывал, но по крайней мере какие то иксы возвращает
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,013
Записей в блоге: 1
18.01.2016, 17:38     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #29
Цитата Сообщение от Penelent Посмотреть сообщение
разве туда не рандомно подавать можно?
А разве можно подавать рандомно? Метод Якоби годится не для всех данных, есть критерии сходимости (как и для любого итерационного алгоритма). Изучайте, проверяйте.

Добавлено через 2 часа 25 минут
Вызывает удивление 2 факта:
1. Как ТС исхитрился так подобрать исходные данные, что метод Якоби стал архинеустойчивым (даже если начальные значения Х отличаются от точных на 0.01, алгоритм идет вразнос).
2. Почему для такой маленькой матрицы не использовал метод Гауccа (он менее критичен к исходным данным)?
Penelent
Заблокирован
18.01.2016, 18:10  [ТС]     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #30
Цитата Сообщение от zer0mail Посмотреть сообщение
Как ТС исхитрился так подобрать исходные данные, что метод Якоби стал архинеустойчивым (даже если начальные значения Х отличаются от точных на 0.01, алгоритм идет вразнос).
что? о_О
Цитата Сообщение от zer0mail Посмотреть сообщение
Почему для такой маленькой матрицы не использовал метод Гауccа (он менее критичен к исходным данным)?
алгоритм нужен для диплома, там смысл не в алгоритме, а в распараллеливании, Якоби удобнее распараллеливать, а Гаусса, кажется нельзя вообще
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,013
Записей в блоге: 1
18.01.2016, 22:41     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #31
Цитата Сообщение от Penelent Посмотреть сообщение
что? о_О
Разве я неясно выразился?
Penelent
Заблокирован
18.01.2016, 22:52  [ТС]     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #32
Цитата Сообщение от zer0mail Посмотреть сообщение
Разве я неясно выразился?
что значит "идет вразнос"?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2016, 23:10     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу
Еще ссылки по теме:
C++ Нарушение прав доступа при чтении по адресу
Нарушение прав доступа при чтении по адресу C++
Нарушение прав доступа при чтении по адресу C++
C++ Нарушение прав доступа при чтении по адресу
Нарушение прав доступа при чтении по адресу C++

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

Или воспользуйтесь поиском по форуму:
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,013
Записей в блоге: 1
18.01.2016, 23:10     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу #33
Значит, компоненты вектора X 1.01, 2.01, -1.01 при последовательных итерациях не стремятся к точному решению 1,2,-1, а растут по модулю, иногда меняя знак.
Yandex
Объявления
18.01.2016, 23:10     Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу
Ответ Создать тему
Опции темы

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