Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/92: Рейтинг темы: голосов - 92, средняя оценка - 4.68
6 / 5 / 0
Регистрация: 03.06.2018
Сообщений: 11

Бесплатная библиотека для работы с матрицами

13.06.2018, 20:33. Показов 18541. Ответов 23

Студворк — интернет-сервис помощи студентам
Привет всем. Написал по приколу библиотеку для работы с матрицами и охота просто показать вам, так как не знаю зачем её вообще делал. Мб если кому нужна, то забирайте бесплатно.

Вот тестовый код (ссылка на библиотеку matrix.zip):

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
#include <iostream>
#include "matrix.h"
using namespace std;
 
void main() {
    matrix one, two; //создадутся две матрицы с размерами 0х0
 
    cin >> one >> two; //можно вводить патрицы через cin, вас попросят ввести кол-во столбцов, строк и значения для каждой ячейки
 
    cout << one << endl << two << endl; //можно также выводить матрицы на экран
 
    cout << one + two << endl << one - two << endl; //матрицы можно скалдывать и вычитать
    cout << one * two << endl << 5.1 * one << endl << one * (-1.2) << endl; //матрицы можно умножать, также умножать на числа слева и справа
 
    double val[9] = { 1.2, 2.3, 3, -6.88, 0.04, 5, -3, 2, 2 };
    one.set(3, 3, val); //матрицу можно переобозначить, например тут сделал матрицу 3x3 со значениями массива values
 
    cout << one.get_val(2, 3) << endl; //можно получать значение 2 стобца 3 строки, например
    cout << one.get_stroke(1) << endl << one.get_column(2) << endl; //можно получать строку и столбец
    cout << one.minor(1, 2) << endl; //можно получать минор для элемента 1 2, например
 
    cout << one.identity() << endl; //можно получить единичную матрицу nxn, где n будет браться от высоты или от ширины, что меньше
 
    cout << one.det() << endl; //можно получить определитель для кваратной матрицы
 
    cout << one.ks_transvection(2, -1.5) << endl << one.kc_transvection(1, 0.5) << endl; //можно умножать строку(ks) или столбец(kc) на коэфициент, например 2 строку умножить на -1.5
    cout << one.swaps_transvection(1, 2) << endl << one.swapc_transvection(1, 3) << endl; //можно менять местами строки(swaps) или столбцы(swapc), например 1 строку поменять со 2
    cout << one.s_transvection(1, 2, 2.5) << endl << one.c_transvection(2, 3, -1.5) << endl; //можно складывать строки(s) или столбцы(c), например к 1 строке прибавить втору, умноженную на 2.5
 
    cout << one.transpose() << endl; //можно транспонировать матрицу
    cout << one.alg_comp() << endl; //можно получать матрицу алгебраических дополнений
 
    cout << one.power(-1) << endl << one.power(3) << endl; // можно возводить матрицу в степень, степень должна быть целым числом больше или равным -1, при -1 находит обратную матрицу, при 0 - получат единичную матрицу, при 1 получается ту же матрицу, больше единицы находит степень матрицы
 
    system("pause");
}
2
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.06.2018, 20:33
Ответы с готовыми решениями:

Самая крутая бесплатная библиотека для работы со звуком в видеоигре OpenGL С++ ?
Нужно создать предельно насколько возможно качественный обьёмный звук в тридэ игре которую пишу на с++. Нужна мощная свободная библиотека...

Библиотека для работы с матрицами
Пожалуйста, подскажите библиотеку, где можно находить определитель матрицы. И какой функцией если можно))

Конструкторы для работы с матрицами
Доброго времени суток, многоуважаемые форумчане. Ситуация такая: преподаватель дал задание - создать класс матриц, НО предварительно...

23
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
13.06.2018, 22:13
Воваааааа, matrix.h ещё приложите сюда, будет Волшебно
0
6 / 5 / 0
Регистрация: 03.06.2018
Сообщений: 11
13.06.2018, 23:26  [ТС]
там в скобка ссылка на архив там matrix.h внутри
2
 Аватар для vlisp
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,343
14.06.2018, 00:40
напиши комментарии к коду, заголовочный комментарий, кто написал, когда, условия распространения... написать код - это всего 5% работы разработчика
0
2 / 2 / 0
Регистрация: 14.10.2018
Сообщений: 11
01.01.2020, 20:32
Спасибо автору темы за данную либу. Надо было написать класс для создания нейронки на C++ и решил заюзать вашу.
2
2 / 2 / 0
Регистрация: 27.04.2018
Сообщений: 10
13.01.2020, 20:47
Воваааааа, Спасибо тебе, о великий человек, если вдруг встретимся, поставлю тебе пиво, тем более что живем почти по соседству.
1
2 / 2 / 0
Регистрация: 27.04.2018
Сообщений: 10
14.01.2020, 21:55
Возможно тогда работало сейчас уже не работает
C++
1
cout << one.get_column(1);
Лечится так в верху где объявляются дружественные функции надо добавить:
C++
1
friend ostream& operator<< (ostream& os, const matrix& A);
затем добавляете метод
C++
1
2
3
4
5
6
7
8
9
ostream& operator<< (ostream& os, const matrix  &A  ) {
    for (int j = 0; j < A.height; j++) {
        for (int i = 0; i < A.width; i++) {
            os << A.values[A.width * j + i] << '\t';
        }
        os << endl;
    }
 
    return os;
Разработчику поклон
1
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
14.01.2020, 22:01
Цитата Сообщение от Воваааааа Посмотреть сообщение
using namespace std;
ой чревато такую запись в библиотеках использовать
0
2 / 2 / 0
Регистрация: 27.04.2018
Сообщений: 10
14.01.2020, 22:03
А что может произойти? Расскажите пожалуйста
0
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
14.01.2020, 22:08
Ты на всю область включаешь использования std. С учетом того что инклюды пишутся с начало то по факту во всем коде происходит это использование, не говоря о том, что в целом это дурной тон, может произойти конфликты. Советую посмотреть как stl происходит работа с именными областями. Я бы вообще ее вывел в свою область допустим mx::

Добавлено через 2 минуты
Очень коротко но доступно link
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
14.01.2020, 22:21
Цитата Сообщение от Mesteriis Посмотреть сообщение
ой чревато такую запись в библиотеках использовать
если ты про using namespace std; перед функцией main, то в *.cpp использовать using namespace std; не так критично, а вот в заголовочных файлах действительно не стоит.
0
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
14.01.2020, 22:44
Цитата Сообщение от _stanislav Посмотреть сообщение
а вот в заголовочных файлах действительно не стоит.
я как раз про Matrix.h
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
14.01.2020, 23:00
Цитата Сообщение от Andrey1309 Посмотреть сообщение
А что может произойти? Расскажите пожалуйста
Ты пишешь блин код, хочешь назвать переменную min, а потом тебе нужна функция std::min() и всё, нужно отказываться от простого названия локальной переменной

Именно поэтому я не использую в чисто своих кодах namespace std;
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
14.01.2020, 23:41
Цитата Сообщение от AndryS1 Посмотреть сообщение
пишешь блин код, хочешь назвать переменную min, а потом тебе нужна функция std::min() и всё, нужно отказываться от простого названия локальной переменной
конечно нужно.

использовать одинаковые имена для переменных и функций,
в рамках одного и того же конктекста использования - плохая идея,
независимо от нэймспейсов.

bad:
C++
1
int min = std::min(2,3);
good:
C++
1
int min_value = std::min(2,3);
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
15.01.2020, 00:09
hoggy, я просто привёл пример, в STL полно того что может назвать пользователь. std:: иногда помогает понять какую функцию при перегрузке мы используем (из STL или свою)
0
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
15.01.2020, 00:25
Цитата Сообщение от AndryS1 Посмотреть сообщение
из STL или свою
Тут даже больше вопрос когда используется связка. своя лита + stl + что то (qt, boost, graf или что то еще) там куча одноимённых функций

Добавлено через 55 секунд
а не дай бог какой нить Cocoa
0
6 / 5 / 0
Регистрация: 03.06.2018
Сообщений: 11
15.01.2020, 08:27  [ТС]
Спасибо большое за активность. Мне очень приятно слышать положительные отзывы в свой адрес, хоть код был действительно написан не идеально и примерно года 2-3 назад, и я удивлён, что кому-то действительно это оказалось полезным. Всем кто написал коментарии большое спасибо, вы не думайте, что я забыл про этот пост, мне приходят письма на почту и я прочитал каждый ваш комментарий. Если хотите улучшить или переписать код, я только за!!! Вы лучшие, оценка 4.88 из 17 голосов для меня очень много значит. Всем респект.
1
9933 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,964
Записей в блоге: 216
15.01.2020, 10:39
Цитата Сообщение от Воваааааа Посмотреть сообщение
Бесплатная библиотека для работы с матрицами
Вдруг кто-то через поиск найдёт тему. Одна из самых популярных бесплатных библиотек для линейной алгебры: GLM. Библиотека header-only.
0
1 / 1 / 0
Регистрация: 14.04.2020
Сообщений: 3
14.04.2020, 08:40
Прошу помочь.
Миниатюры
Бесплатная библиотека для работы с матрицами  
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12932 / 6800 / 1820
Регистрация: 18.10.2014
Сообщений: 17,211
14.04.2020, 09:04
Цитата Сообщение от Andrey741 Посмотреть сообщение
Прошу помочь.
С чем именно? И то такое вообще new double[]?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.04.2020, 09:04
Помогаю со студенческими работами здесь

Класс для работы с матрицами
Разработать класс обеспечивающий представление матрицы произвольного размера с возможностью изменения числа строки столбцов,вывода на экран...

Класс для работы с матрицами
Разработать класс обеспечивающий представление матрицы произвольного размера с возможностью изменения числа строки столбцов,вывода на экран...

Класс для работы с матрицами
Неплохая библиотека :) . Люди, у кого есть нервы скачать весь сайт и в архиве прислать ко мне на мыло :) (Библиотека хорошая, а на качалку...

Класс для работы с матрицами 2х2
Нужна помощь. Задание звучит так : разработать класс для работы с матрицами 2х2 . Прога уже почти написана , код работает , но вот...

Функции для работы с массивами и матрицами
Помоги пожалуйста !!! Написать перегруженные функции (int, double, char) для выполнения следующих задач: • Инициализация квадратной...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru