0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 16
|
||||||
1 | ||||||
При наличие корней в системе уравнений выдает ошибку29.10.2011, 20:07. Показов 1940. Ответов 22
Метки нет (Все метки)
После выполнения программы (она решает систему линейных уравнений) для случая наличия корней появляется ошибка.
Вот код:
0
|
29.10.2011, 20:07 | |
Ответы с готовыми решениями:
22
Выдает ошибку при записи числа в двоичной системе счисления в debug Программа по поиску корней выдает ошибку СМА Hansa PG5510A412 s/n 04454930213108 после нескольких минут выдает ошибку, выдает ошибку Зациклить метод бисекции, чтобы программа выдавала n корней уравнений для n уравнений |
Заблокирован
|
|
29.10.2011, 20:20 | 2 |
- после выхода из функции всё, что выделено внутри маллоком уничтожится. Правидь код не особо хочется, поэтому предлагаю взамен уже проверенный алгоритм Методом Гаусса решить систему n линейных алгебраических уравнений
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
29.10.2011, 20:33 | 3 |
Юра, ты простыл?
Дальше даже читать не буду. Исправляй логику.
0
|
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 16
|
|
29.10.2011, 20:35 [ТС] | 4 |
Дело в том, что мне нужно решить систему конкретным алгоритмом
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
29.10.2011, 20:35 | 5 |
Всё таки глянул немного... Всё, что выделяется в вотерклозете(WC), никогда не удаляется. Велкам, утечки.
0
|
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 16
|
|
29.10.2011, 20:43 [ТС] | 6 |
Там все нормально. Второй цикл - поиск скалярного произведения, а если убрать первый, программа работает неправильно.
Добавлено через 1 минуту А как исправить? Я так думаю, на это и ругается
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
29.10.2011, 20:46 | 8 |
w[i]=0;
w[i]=( 0 +w1[i]*f)%2; Я сперва прочитал, вместо w1 тоже w, думал, вообще в ноль всё выражение. А так у тебя просто избыточность. Если w не должно суммироваться, то можешь смело удалить цикл с обнулением. Вызов WC некорректен: выделенная память не освобождается. При каждом вызове WC формируется неудаляемый массив, но используется только один элемент... В общем, исправляй логику. Добавлено через 1 минуту Юра, при разрушении указателя не освобождается память, на которую он указывает. И никакого холивара, так работает С++. И Си.
0
|
Заблокирован
|
||||||
29.10.2011, 20:54 | 10 | |||||
похоже да, и серьезно. Юрец, опровергни
0
|
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 16
|
|
29.10.2011, 21:02 [ТС] | 11 |
Метод Ланцоша
Добавлено через 5 минут Я немного ошиблась WC - произведение вектора на число. Используется весь массив, созданный в WC. Но спасибо, что обратил мое внимание на это
0
|
|
|||||
29.10.2011, 21:06
#12
|
|||||
Не по теме: alkagolik, код ниже тебе, а ведь не меняю указатель, пытаюсь работать далее с массивом, мне сложно пока выложить код который даст сбой и с malloc - но думаю когда стек кончится то и с этим грабли вылезут код
0
|
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 16
|
|
29.10.2011, 21:11 [ТС] | 14 |
Точнее сказать, у меня его модификация. Система уравнений над кольцом по модулю 2. Ещё раз перечитала ошибку, которую выводит... Я так думаю, что проблема именно с выделением памяти.
0
|
|
29.10.2011, 21:20
#15
|
Не по теме: Larri, а у вас нет ничего из теории???Это ускорило бы реализацию алгоритма;)
0
|
Заблокирован
|
||||||
29.10.2011, 21:25 | 16 | |||||
Сообщение было отмечено как решение
Решение
-=ЮрА=-, просто руками писать надо, а не чем-либо еще
тест твоей программы
deadman@kubenta:~/documents/projects/system/bin/Debug$ valgrind ./system
==2486== Memcheck, a memory error detector ==2486== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==2486== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for copyright info ==2486== Command: ./system ==2486== f1 : 0 1 2 3 4 5 6 7 8 9 f2 : ==2486== Invalid read of size 4 ==2486== at 0x8048595: main (main.c:28) ==2486== Address 0x41c5084 is 4 bytes inside a block of size 5 alloc'd ==2486== at 0x402896C: realloc (vg_replace_malloc.c:525) ==2486== by 0x80484FA: f2 (main.c:14) ==2486== by 0x804856F: main (main.c:25) ==2486== 0 1 0 0 0 ==2486== ==2486== HEAP SUMMARY: ==2486== in use at exit: 0 bytes in 0 blocks ==2486== total heap usage: 2 allocs, 2 frees, 45 bytes allocated ==2486== ==2486== All heap blocks were freed -- no leaks are possible ==2486== ==2486== For counts of detected and suppressed errors, rerun with: -v ==2486== ERROR SUMMARY: 4 errors from 1 contexts (suppressed: 11 from 6) нормальный код
тест моей программы
deadman@kubenta:~/documents/projects/system/bin/Debug$ valgrind ./system ==2623== Memcheck, a memory error detector ==2623== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==2623== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for copyright info ==2623== Command: ./system ==2623== f1 : 0 1 2 3 4 5 6 7 8 9 f2 : 0 1 2 3 4 ==2623== ==2623== HEAP SUMMARY: ==2623== in use at exit: 0 bytes in 0 blocks ==2623== total heap usage: 2 allocs, 2 frees, 60 bytes allocated ==2623== ==2623== All heap blocks were freed -- no leaks are possible ==2623== ==2623== For counts of detected and suppressed errors, rerun with: -v ==2623== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 11 from 6)
0
|
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 16
|
|
29.10.2011, 21:36 [ТС] | 17 |
Не по теме: Вот ссылка на сам алгоритм, но у меня модификация (по ней я вообще ничего не нашла):http://lib.mexmat.ru/books/4633
0
|
Заблокирован
|
||||||
31.10.2011, 11:55 | 18 | |||||
Larri, для начала решил оттестировать ваш алгоритм на счёт простой системы, как видите на скрине в алгоритме скорее всего логическая ошибка, т.к. всегда попадается b1[i] != b[i]
Ваш код с небоьшими изменениями, в плане его сокращения откомпилировал несколько раз в Release, даже на простой системе Ваш алгоритм не работает. Вообщем у меня многое под сомнением, но вот здесь особенно a[j*n+i] - допустим j = n - 1 i = n тогда вы пытаетесь обратиться к несуществующему элементу a[(n - 1)*n + (n - 1)] как я понял по программе в а всего n элементов. Там книжку читать надо, а быстрый поиск по Ланцош ничего не дал, если можно сделайте принт скрин нужных страниц и сюда тогда смогу проверить что к чему - ну и это мне не понятно, вы двоичное сложение хотите сделать или что этим хотели реализовать???Это не двоичное сложение - а остаток от целочисленного деления на два, поясню 2 + 3 = 5 (10 + 11 = 101) 5 % 2 = 1 Код который использовал
0
|
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 16
|
|
31.10.2011, 20:10 [ТС] | 19 |
Дело в том, что система на писана для системы над кольцом вычетов по модулю 2. Соответственно, там есть только числа 0 и 1, поэтому приведенный тест, естественно, приведет к неправильному результату. Я проверяла для систем над нужным концом, результат либо верный, либо программа падает. В а n*n элементов, т.к. это квадратная матрица
0
|
Заблокирован
|
|
01.11.2011, 10:22 | 20 |
- т.е работаете с Системой н-го порядка с 1-цами и нулями, а как же тогда вектор свободных членов, что тоже только 1 и 0 в нём???
- предлагаю заменить все массивы статическими, вы же для системы 4-го порядка алгоритм затачиваете
0
|
01.11.2011, 10:22 | |
01.11.2011, 10:22 | |
Помогаю со студенческими работами здесь
20
При программмирование калькулятора выдает ошибку при вводе текста При компиляции ошибок нет,но при запуске выдает ошибку. В чем причина? При подключении к компу требует форматирование, но при попытке форматнуть выдает ошибку Ребят Незнаю что делать при запуске на компилирование выдает ошибку.Кто понимает что не так скажите а если не затруднит исправьте ошибку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |