|
|
  |
scilab vs python, что выбрать? |
|
|
|
Dec 30 2014, 07:05
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(shf_05 @ Dec 30 2014, 09:34)  я так понимаю, на примере того, как сделал автор, можно перегрузить оператор * , чтобы он умножал какие угодно матрицы с предпроверкой их размерностей. Я в собственной реализации перегружала оператор "=", нагружая выполнение операции именно на него, поскольку только в этом операторе известен адрес приемника результата. Тогда как операторы действий "+", "-", "*" возвращают у меня всего лишь малую структуру с адресами обоих операндов, флагами их транспонирования и типом операции (т.е. два адреса и один байт с флагами). Вот поэтому мне и интересны чужие реализации "прикручивания". Тем более что реализация в лоб сопровождается дополнительным копированием результирующей матрицы, возвращаемой оператором, в приемник на этапе присваивания этого результата. А при больших матрицах эта довольно накладно, т.к. помимо копирования включает в себя деаллокацию промежуточного объекта, не говоря уже о необходимости его предшествующей аллокации. Т.е. результат операции при реализации в лоб переносится через промежуточный объект размером во всю матрицу, потому его при каждой операции приходится аллокировать, деаллокировать и дважды копировать его содержимое. Тогда как на этапе присваивания ("=") уже могут быть известны все три адреса, чтобы можно было запустить на них стандартную библиотечную функцию.
|
|
|
|
|
Dec 30 2014, 15:11
|
Местный
  
Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778

|
Цитата(Xenia @ Dec 30 2014, 07:45)  Если матрица диагональная, то ее хранят в векторе  . А такие свойства, как симметрия и эрмитовость, обычно не позволяют ускорить операции сложения, вычитания и умножения, поскольку для этого требуется, чтобы ОБА операнда обладали таким свойством. Что же касается разряженных матриц, то это скорее не алгебраическая проблема, а ... "процессоростроительная", т.к. касается только того, способен ли FPU быстрее выполнять бинарные операции, если один из операндов нулевой. Причем, в электронной реализации (а так же на FPGA) такая проверка операндов на нулёвость не привела бы к замедлению арифметики с прочими числами, поскольку признак нулёвости регистра всегда можно сделать схемотехническим, экстренно отменяющим выполнение операции. Но если процессоростроители этого не предусмотрели, то проверять каждый операнд на нулёвость в программе будет не менее накладно по времени, чем честно умножать на нуль. Я говорю о "compile time" оптимизациях, то есть во время выполнения уже не будет производится умножения на ноль или единицу. В фильтре Калмана таким образом можно много операций исключить. Симметрия матриц ковариации тоже помогает делать меньше вычислений, и память экономит. Но руками под каждую задачу это делать долго, и ошибок много. Цитата ...
Отсюда и вопрос мной поставлен так: допускает ли механизм определения операторов языка C++ определить их для матриц и векторов таким образом, чтобы три операции (+,-,*) над ними имели естественно-арифметический вид записи? Если да, то почему это до сих пор не сделано производителями библиотек линейной алгебры? А если где-то уже сделано, то где именно? Если посмотреть на boost обертку над blas то становиться понятно, что есть много вариантов операции *, поэтому они определены через свои названия а не символом умножения.
|
|
|
|
|
Jan 3 2015, 11:17
|

Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-12-05
Из: Perth, WA
Пользователь №: 12 375

|
Добавлю свои 5 копеек... Python для меня - открытие года. Фактически убил во мне юзера Матлаба, коим я пользовался более 10 лет... Есть все что надо - от символьных вычислений и квантовых алгоритмов до мощной графики. Переучиться получилось довольно быстро и весело.  Так что рекомендую!
--------------------
"We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard," - John F. Kennedy in September 1962.
|
|
|
|
|
Jan 4 2015, 08:04
|

Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-12-05
Из: Perth, WA
Пользователь №: 12 375

|
Цитата(Xenia @ Jan 3 2015, 15:29)  А как на Питоне МК программировать? Я не знаю. Мне это не надо  это уже давно не входит в круг моих интересов. Максимум куда дотягиваются мои шаловливые руки - это общение с кучей аппаратуры Agilent/rohde&schwarz по GPIB. Раньше у меня это студент на Matlab делал, но мне всегда казалось что это не comme il faut... так что теперь все работает под python
--------------------
"We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard," - John F. Kennedy in September 1962.
|
|
|
|
|
Jan 4 2015, 10:44
|

Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-12-05
Из: Perth, WA
Пользователь №: 12 375

|
Цитата(ViKo @ Jan 4 2015, 13:07)  Я правильно понимаю, что для этого нужен только бесплатный Питон, и всё? А если передавать заказчику программу управления прибором, то им тоже нужно будет установить питон? Нужно еще как минимум pyVISA Так же это дело может потребовать NI-VISA библиотеки (бесплатые) установить отдельно. У меня это работает и под Windows и под Mac У меня нет заказчиков, работаю для себя  В принципе, всегда можно установить эти вещи, на них нет особо ограничений. Так же известно что можно скомпилировать код python в исполняемый exe файл и делать установку python. Для этого есть много утилит и не только для Windows. Как это будет работать c дрйверами и аппаратурой, я не знаю.
--------------------
"We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard," - John F. Kennedy in September 1962.
|
|
|
|
|
Jan 10 2015, 02:34
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(Obi @ Jan 4 2015, 13:44)  Нужно еще как минимум ... Какую версию Питона предпочитаете использовать? Хорошо, что кто-то додумался всю эту тучу пакетов и библиотек для Питона, да еще и с нормальной IDE, скомпоновать в один дистрибутив, ориентированный на научные вычисления. PythonXY
Сообщение отредактировал x736C - Jan 10 2015, 03:03
|
|
|
|
|
Jan 10 2015, 17:50
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(_Pasha @ Jan 10 2015, 15:30)  а также, совсем недавно пересел на spyder, доволен как слоняка. Кто мне может объяснить, чем спайдер хуже указанных анаконды и ху? Спайдер окружение (Scientific PYthon Development EnviRonment), которое использует PythonXY. У меня он запускается под виндой вместе с PythonXY. Просто под Линуксом надо самому собирать все в кучу, насколько понимаю. Поэтому не совсем понятен вопрос «чем спайдер хуже xy?».
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|