Задать вопрос
@Vlood_Sm
Студент ВУЗа, 3-ий курс

Как сгенеририовать СЛАУ (система линейных алгебраических уравнений) больших размеров?

Делаю курсовую работу. В отчёте надо проверить скорость работы программы на С++. Для этого необходимо решить СЛАУ (несколько) размерами 1000×1000, 5000×5000, 8000×8000, 10000×10000. Уже прошерстил всё, что смог в интернете и не смог найти либо примеров таких систем, либо программ, которые генерируют такие системы. Хоть код на любом ЯП'е (кроме JS, Python), чтоб я смог написать.
  • Вопрос задан
  • 547 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Просто сгенерируйте случайную матрицу. Двумя циклами получайте коэффициенты через генератор случайных чисел. Вероятность, что она будет вырождена ничтожна. Потом сгенерируйте сулчайные значения всех переменных, подставьте в уравнения с имеющимеся теперь у вас коэффициентами и получите так правую часть уравнений. Вот и ваша СЛАУ с решением. Если хотите, чтобы решения не было, то можно случайно поменять правую часть в каких-то уравнениях. Если хотите, чтобы система была вырожденной, то замените какие-то строки случайной линейной комбинацией других строк (случайно получив коэффициенты линейной комбинации).

В C++ есть генератор случайных чисел - функция rand(). Гуглите ее, она вернет случайное целое число. Если вам нужны вещественные и возможно отрицательные коэффициенты, то эти целые числа можно использовать для получения вещественных. Гуглите "C++ случайное вещественное число".
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Для хранения матрицы 10000 на 10000 в формате double вам понадобиться кусок памяти порядка 800 Мб.
И это только для хранения исходных данных. А если нужно будет искать всякие определители и обратные матрицы
то сложно себе представить сколько дополнительной памяти будет нужно.

Если курсовая затрагивает разреженные матрицы (это где много дырок или областей без данных) - то можно
посмотреть в сторону сжатых матриц. Не знаю как щас а в 90-е была куча библиотек для этого дела.

Чем заполнить матрицы в данном примере - ХЗ. Надо погружаться в сам курсовой. Если он растет из физики то и исходные данные надо брать оттуда. Там всякие диагональные и треугольные и прочие.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы