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

Как лучше всего хранить коэффициенты? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу вычисления функции http://www.cyberforum.ru/cpp-beginners/thread453049.html
помогите пожалуйста
C++ Объединение 2 упорядоченных линейных списка произвольной структуры в один упорядоченный. Помогите пожалуйста с таким заданием Объединить 2 упорядоченных линейных списка произвольной структуры в один упорядоченный. http://www.cyberforum.ru/cpp-beginners/thread453048.html
матрица C++
помогите найти обратную матрицу на паскале
242+242=484 корень 22 C++
У меня невыходит создать чтобы показывало только целый корень и сумму чисел зеркальных только трехзначных может кто нибудь помоч?
C++ в чем ошибка? http://www.cyberforum.ru/cpp-beginners/thread453025.html
#include <iostream> #include <string> int main() { setlocale(LC_ALL, "Rus"); std::string str; // Получаем всю введенную строку из потока std::cin и сохраняем ее в str std::getline(std::cin, str);
C++ обращение к элементам массива символов без индексации как обратиться к элементам массива из символом не используя индексацию, а только при помощи функций библиотеки string? язык C++. заранее спасибо! :) подробнее

Показать сообщение отдельно
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
03.03.2012, 02:07     Как лучше всего хранить коэффициенты?
для хранения разреженных матриц методов много. одни сильно выигрывают по памяти, но уступают по скорости "распаковки", другие - наоборот.
если матрица у нас N*N и в ней k ненулевых элементов, то есть метод, позволяющий хранить 2*k значений для сохранения данных о матрице. алгоритм таков:

пусть дана матрица:
0 0 3 0 0
1 0 2 0 0
0 0 0 0 4
0 5 0 1 0
0 0 0 0 1
Заведем массив Values, в котором перечислим все значения, выбрав определенный способ обхода (по столбцам, к примеру).
Values={1,5,3,2,1,4,1}
Теперь заведем массив Coords, элементами которого будет значение i+(j-1)*n, где i-номер строки, j-номер столбца элемента из массива Values, а n-порядок матрицы. Проще говоря порядковый номер при выбранном виде обхода. Получим:
Coords={2,9,11,12,19,23,25}

Соответственно, для проверки возьмем произвольные координаты элементов: (3;4) и (4;2). Подставляем в формулу выше и получаем значения 18 и 9. Ищем эти значения в массиве coords. 18 не найдено, значит элемент нулевой. 9 найдено, значит элемент не нулевой. Берем индекс этого значения в Coords - под этим же номером в Values будет храниться значение.

Если матрица симметричная, то алгоритмы еще интереснее. А если к тому же и ленточная (все ненулевые элементы близко к диагонали), то там крайне эффективные схемы хранения есть.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru