Русскоязычный форум закрыт из-за отсутствия активности (доступен только для чтения).
Пожалуйста, пользуйтесь англоязычной его версией. Приносим извинения за неудобства
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

4 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline smath  
#1 Оставлено : 13 февраля 2010 г. 8:28:12(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 511 раз
Поблагодарили: 260 раз в 101 постах
Описание
Проект SMath теперь предоставляет общий доступ к SVN репозиторию, на котором доступны исходники открытых плагинов (дополнений) к программе SMath Studio. Данный репозиторий может содержать как плагины (дополнения) созданные разработчиками SMath Studio, так и разработчиками, никак не связанными с проектом.

Параметры репозитория
Путь: https://smath.info/svn/public
Права: анонимный доступ на чтение (логин и пароль не требуются)

Как получить доступные исходники
  1. Загрузите программу-киент SVN: TortoiseSVN.
  2. Установите программу (возможно, в процессе установки потребуется перезагрузка).
  3. Создайте папку на диске Вашего компьютера, где будут храниться исходники.
  4. Нажмите правой клавишей по созданной папке и в появившемся контектном меню выберите пункт "SVN Checkout...".
  5. Заполните текстовые поля появившегося диалога (обычно, достаточно указать путь к репозиторию) и нажмите кнопку OK.
  6. Доступные исходники будут загружены на Ваш компьютер.

Как загрузить изменения в репозиторий
Репозиторий дуступен для чтения любому пользователю, но права на запись необходимо запросить по почте на адрес support[at]smath[dot]info если Вы хотите выложить свой проект или модифицировать уже существующий.

Отредактировано пользователем 3 августа 2011 г. 6:22:29(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил smath за этот пост.
Iosif26 оставлено 10.06.2015(UTC)
Offline smath  
#2 Оставлено : 13 февраля 2010 г. 8:29:46(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 511 раз
Поблагодарили: 260 раз в 101 постах
Программой SMath Studio 0.87 поддерживаются три типа дополнений (в следующих версиях программы их количество будет расти).
  1. Поддержка низкоуровневых вычислений (интерфейс IPluginLowLevelEvaluation).
    Описание: Все математические выражения программы изначально хранятся и обрабатываются ею в виде обратной польской записи. Данный интерфейс позволяет внедриться в самую низкоуровневую обработку выражений SMath Studio. При вычислении выражений плагин будет оповещён о каждом встретившемся операнде (переменной), операторе и функции. Получив информацию о текущем вхождении дополнение сможет произвольно изменить список элементов выражения в виде ОПЗ, что даёт возможность полностью управлять вычислением самым быстрым способом. Одновременно, реализация данного интерфейса является самой сложной. Важно также понимать, что низкоуровневая обработка математических выражений проходит до попадания этих выражений в численную или символьную библиотеку, а значит через данную обработку будет проходить абсолютно любое выражение, запросившее вычисление.
    Применение: Использование данного типа перехвата вычислений имеет смысл для операций, которые должны быть обработаны независимо от выбора типа вычисления пользователя: символьного или численного. Например, вычисление функции синуса нет необходимости выполнять на данном этапе, т.к. символьная библиотека должна получить не десятичную дробь (именно такой ответ в общем случае будет после вычисления синуса), а исходную функцию для дальнейших упрощений. И наоборот, функцию сочетаний (см. видео) стоит обрабатывать именно в этом интерфейсе, что бы не пришлось реализовывать её дважды, в численной и символьной библиотеке (ведь её результат должен быть виден при выборе любого типа вычислений).
    Приоритет: Дополнение опрашивается до обработки элементов выражений в численной или символьной библиотеке и до выполнения встроенных в SMath Studio правил (правил обработки операторов, переменных и функций), но лишь после учёта объявленных пользователем переменных и функций.
    Типы объектов: Каждый элемент выражения представлен классом Term и хранит в себе информацию о текстовом значении элемента (например имя функции), о его типе (функция, операнд, оператор или скобка) и количестве зависимых от него элементов (например количество аргументов функции).
  2. Поддержка численных вычислений (интерфейс IPluginMathNumericEvaluation).
  3. Поддержка символьных вычислений (интерфейс IPluginMathSymbolicEvaluation).


Подробная инструкция по созданию дополнений в разработке. Пожалуйста будьте терпеливы.

Отредактировано пользователем 5 ноября 2010 г. 23:43:43(UTC)  | Причина: Не указана

Offline alexant  
#3 Оставлено : 23 августа 2010 г. 13:35:00(UTC)
alexant


Статус: Member

Группы: Registered
Зарегистрирован: 31.03.2010(UTC)
Сообщений: 20
Откуда: Ганновер

Хочу попытаться поправить, с позволения автора, плагин передачи данных в excell,
но при попытке загрузить с svn выдает следующую ошибку:
Can't connect to host 'smath.info': Es konnte keine Verbindung hergestellt
werden, da der Zielcomputer die Verbindung verweigerte.
Тоесть:
не может создать соединение, так как удаленный комп соединение отклонил.

Не нашел, где указать анонимного пользователя - может из-за этого..

А вообще мне лишь нужен исходник на плагин с функциями exportcell, importcell.

Спасибо.
Offline alexant  
#4 Оставлено : 23 августа 2010 г. 13:47:52(UTC)
alexant


Статус: Member

Группы: Registered
Зарегистрирован: 31.03.2010(UTC)
Сообщений: 20
Откуда: Ганновер

И еще одно "хочу":
Может конечно не совсем к этой теме...

Как мне иметь доступ к функциям и значением из екселя например.

Либе Грюсе!
Offline smath  
#5 Оставлено : 23 августа 2010 г. 13:56:19(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 511 раз
Поблагодарили: 260 раз в 101 постах
Возможно Вы пытались соединиться в момент, когда сервер действительно был недоступен. Убедитесь, так же, что в качестве пути Вы указали svn://smath.info/public, а не http://smath.info/public. Если бы проблема была в авторизации, то ошибка была бы соответствующая. Исходники проекта ExcelCollab в репозитории.

С уважением.
Offline alexant  
#6 Оставлено : 23 августа 2010 г. 14:58:41(UTC)
alexant


Статус: Member

Группы: Registered
Зарегистрирован: 31.03.2010(UTC)
Сообщений: 20
Откуда: Ганновер

Ну как бы и сейчас пытаюсь - вряд ли дело в сервере.
А как svn протокол с нод32
контачит? Может дело в его файрволе?

Чтобы я пока на это время не тратил, можно, пожалуйста мне на почту кинуть исходник?
Offline smath  
#7 Оставлено : 23 августа 2010 г. 15:23:21(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 511 раз
Поблагодарили: 260 раз в 101 постах
Отправил. Проблема возможно и в firewall-е.
Offline уни  
#8 Оставлено : 5 ноября 2010 г. 15:17:42(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 151 раз в 103 постах
VisualSVN очень хорошая штуковина, если её подлечить.

Попробовал тут возможности интерфейса IPluginLowLevelEvaluation. Не хило. В отличие от видео-руководства тип переменных нужно уже указывать явно, а не просто количество:
Код:
        void IPlugin.Initialize() {
            this.ИнформацияСборки = new AssemblyInfo[] {
                // Plugin requires to be installed with SMath Studio 0.87 or later version
                new AssemblyInfo( "SMath Studio", new Version( 0, 89 ), new Guid( "a37cba83-b69c-4c71-9992-55ff666763bd" ) )
            };

            this.ИнформацияФункции = new TermInfo[] {
                    new TermInfo( "combin", TermType.Function, "(n, k) - возвращает число подстановок", FunctionSections.Unknown, true,
                        new ArgumentInfo[] { new ArgumentInfo( ArgumentSections.ComplexNumber ), new ArgumentInfo( ArgumentSections.ComplexNumber ) } ) 
            };
        }

Может я отстал от жизни, но выглядит всё это хозяйство сложновато. Наверное отстал. Хотя такой тип вычислений был ещё на калькуляторах МК-61.

А Decision.Preprocessing() для поддержки функций в качестве операнда, т.е. развёртывает функцию?

По сравнению с маткадовским плагинным интерфейсом UserEFI (видимо Extended Function Interface) всё намного сложнее, т.к. возможностей больше.

Может быть кому-то будет интересным про порядок записи выражения. В сети есть МК-61. Руководство по эксплуатации (pdf). Там раздел "6.6. Выполнение двухместных операций" на стр. 50.

Отредактировано пользователем 5 ноября 2010 г. 15:48:16(UTC)  | Причина: Не указана

Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#9 Оставлено : 5 ноября 2010 г. 16:19:10(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 151 раз в 103 постах
AlgLib не доделан что-ли? Или это просто рыба? Компилируется с двумя ошибками... а при попытке прояснить ситуацию, кажется, что не реализованы посредники между библиотекой и SMath. И вообще, похоже что написано по некой уже устаревшей идеологии.
Россия навсегда!
Вячеслав Мезенцев
Offline build_your_web  
#10 Оставлено : 5 ноября 2010 г. 17:32:58(UTC)
build_your_web


Статус: Advanced Member

Группы: Developers, Registered
Зарегистрирован: 28.08.2009(UTC)
Сообщений: 127

Сказал(а) «Спасибо»: 19 раз
Поблагодарили: 4 раз в 4 постах
Я работал над интеграцией alglib в качестве плагина для smath.

Как оказалось c# версия этой библиотеки полностью сделана кодогенератором.
Т.е.
* количество неадектваного кода очень велико
* код не оптимизирован под .net, да и вобще не оптимизирован (кодогенератор)
* связаться по каким-то вопросам по этому проекту не с кем

В качестве вероятной замены рассматривал Math.NET.
Но как раз тогда я переключился на другое направление, поэтому заменить alglib чем-то другим так и не успел.

Отредактировано пользователем 5 ноября 2010 г. 17:34:34(UTC)  | Причина: Не указана

Offline smath  
#11 Оставлено : 5 ноября 2010 г. 23:32:01(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 511 раз
Поблагодарили: 260 раз в 101 постах
Здравствуйте.

уни написал:
В отличие от видео-руководства тип переменных нужно уже указывать явно, а не просто количество

Пришлось так сделать, что бы генерировать левую часть описания функции автоматически. Раньше описание надо было заполнять так: "('первыйАрг', 'второйАрг'Wink - Возвращает 'первыйАрг' умноженный на 'второйАрг'.", а теперь: "Возвращает {0} умноженный на {1}.", где названия аргументов будут зависеть от их типа из описания функций плагина. Очень удобно. К тому же решение позволило избавится от некоторых ошибок, которые делают переводчики (каждый указывал разделитель между аргументами такой, какой хотелось, а теперь программа выбирает его на основе настроек ОС и программы; похожие проблемы были и с кавычками, в которые включены имена аргументов, с пробелами и т.п.).

уни написал:
А Decision.Preprocessing() для поддержки функций в качестве операнда, т.е. развёртывает функцию?

Метод Preprocessing занимается подстановкой определённых пользователем на листе функций и переменных, основываясь на их списке из store (контекст вычисления). Так же метод опрашивает плагины на наличие реализованных функций/переменных и вызывает реализации, если такие имеются. К тому же Preprocessing приводит все единицы измерения к основным, т.е. 10*'km переведёт в 10*1000*'m.
Обычно, за редкими исключениями, Preprocessing имеет смысл вызывать для каждого аргумента функции переданного в плагин. А играясь с передаваемым store можно делась с выражением различные преобразования. Ещё метод содержит в себе несколько алгоритмов для предотвращения входа в бесконечные циклы.

С уважением, Андрей Ивашов.

Отредактировано пользователем 5 ноября 2010 г. 23:33:52(UTC)  | Причина: Не указана

Offline уни  
#12 Оставлено : 6 ноября 2010 г. 0:46:15(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 151 раз в 103 постах
Цитата:
а теперь: "Возвращает {0} умноженный на {1}.", где названия аргументов будут зависеть от их типа из описания функций плагина. Очень удобно.

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

Я тут поэкспериментировал немного и думаю, что в принципе можно из ОПЗ налету генерировать неуправляемый код и результаты уже его вычисления подставлять в качестве результата. Правда для этого придётся немного продублировать работу, т.к. все функции придётся описывать самому. Если мне не изменяет память, ОПЗ используется сопроцессором и тогда можно естественно переписать код на ассемблере. Хочу убыстрить вычисление в особых функциях радикальным образом.
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#13 Оставлено : 8 ноября 2010 г. 12:20:48(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 151 раз в 103 постах
build_your_web, я посмотрел библиотеку и исходники более подробно. В принципе, там чисто рутинные "оболочки" нужно написать. Это нудновато, зато вполне работоспособно:

Если желание не пропало, то давай доделаем на пару. Версия ALGLIB 3.1.0 выглядит уже более компактно. Думаю, что даже ODEsolver() прикрутить можно будет, если в дополнении можно вычислять передаваемые "ТЕРМические" функции.

Начал тут эпопею:


Заказы на функции принимаются Wink В планах: fft и свёртки.
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#14 Оставлено : 8 ноября 2010 г. 14:36:35(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 151 раз в 103 постах
Вопрос такой. Написал тут обёртку для комплексного fft. Вот такая вещь работает:
Код:
                for ( int ii = 0; ii < Длина; ii++ ) {
                    врм = new TComplex( Буфер[ii].x,Буфер[ii].y );
                    Результат.unit.SetValue( ( TNumber ) врм , new long[] { ii, 0L } );
                }
а вот такая нет:
Код:
                for ( int ii = 0; ii < Длина; ii++ ) {
                    Результат.unit.SetValue( new TComplex( Буфер[ii].x,Буфер[ii].y ), new long[] { ii, 0L } );
                }


Перегруженный метод для комплексной матрицы отсутствует, а всё равно работает Good


П.С. Короче, кто не понял. TComplex приводится к TNumber... очень смешно, если учесть, что TNumber - это одно число, а TComplex - два. Ну... как бы Wink И конструктор у TMatrix принимает только TNumber[,] Sad
Дааа, без описалова трудно будет понимать тайные родственные связи.

Отредактировано пользователем 8 ноября 2010 г. 15:30:48(UTC)  | Причина: Не указана

Россия навсегда!
Вячеслав Мезенцев
Offline build_your_web  
#15 Оставлено : 8 ноября 2010 г. 18:18:12(UTC)
build_your_web


Статус: Advanced Member

Группы: Developers, Registered
Зарегистрирован: 28.08.2009(UTC)
Сообщений: 127

Сказал(а) «Спасибо»: 19 раз
Поблагодарили: 4 раз в 4 постах
2 уни.

Учавствовать могу, но на уровне кодинга.
Об архитектуре, целях и приоритетах нужно будет думать тебе, т.к. в этой области у меня голова сейчас занята другим проектом.

Опыта хватает, цели можешь ставить любой сложности.
skype: r-u-s-lan
icq: 255-133-308

Отредактировано пользователем 8 ноября 2010 г. 19:23:27(UTC)  | Причина: Не указана

Offline уни  
#16 Оставлено : 8 ноября 2010 г. 20:57:53(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 151 раз в 103 постах
Я ошибся, оказывается TNumber - это общий класс. Нашёл маленькое описание.

build_your_web
Ну раз так, то чего мелочиться-то. Там в руководстве написано, что:
SMath.Math.Numeric.Expression.Calculate(Term) - Numeric expression calculation

Если эта штука вычисляет термическое выражение, то можно попробовать приделать odesolve из библиотеки.
Наверное это сложно, да и скорость вряд ли будет большой. Зато эту технологию передачи функции внутрь плагина можно будет использовать для других функций, в частности: implicitplot2d(), implicitplot3d(), CreateMesh(), CreateSpace() - по аналогии с маткадовскими. В двух последних нужно передавать вектор из функций, как и в решателе ODE.

Попробую описать план действий и разбить на этапы по пакетам AlgLib. Там не так много функций, как я думал. Не n * 1000 как в Maple.

Да, кстати. Можно сделать интерфейс для подключения маткадовских пользовательских библиотек, если кому нужно, чтобы не переписывать старое ПО.
Россия навсегда!
Вячеслав Мезенцев
Offline build_your_web  
#17 Оставлено : 8 ноября 2010 г. 21:29:04(UTC)
build_your_web


Статус: Advanced Member

Группы: Developers, Registered
Зарегистрирован: 28.08.2009(UTC)
Сообщений: 127

Сказал(а) «Спасибо»: 19 раз
Поблагодарили: 4 раз в 4 постах
Пользовательских - это открытых для использования сторонними программами?
Не хочется нарушать чьих-то лицензий.
Offline уни  
#18 Оставлено : 8 ноября 2010 г. 21:38:21(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 151 раз в 103 постах
Цитата:
Пользовательских - это открытых для использования сторонними программами?

Почти да Good Я сам когда-то писал такие функции. Там будет проблема небольшая, т.к. алгоритм их вызова немножко мудрёный и "неуправляемый". С другой стороны я не видел так уж много библиотек, написанных для маткада.

Лицензии не нарушим. Это устаревший механизм. PTC пытается заменить его на что-то по-лучше, а вот Mathsoft за 10 лет так ничего и не придумала. Т.о. можно "приютить" в SMath чужие библиотечки, которые будут "утеряны" в случае отказа от механизма UserEFI в новых версиях.
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#19 Оставлено : 8 ноября 2010 г. 22:21:23(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 151 раз в 103 постах
Да, и самое интересное. Думается мне, что можно приделать к SMath Studio (на пока) символьный движок от Maple V R4. Это который шёл со всеми Маткадами до 13 версии, начиная то ли с 5-ой, то ли с 6-ой версии.

Библиотека (не упакованная) размером где-то с 2 метра + 4 метра функций. Для этого нужно налету переделывать синтаксис SMath-выражений на язык Maple и обратно, чтобы показывать результат. Вот это работка поинтересней, правда тут лицензии будут нарушаться Good, т.к. я переделал WMAPLE.EXE в mkernel.dll, чтобы можно было им пользоваться.

Вот это будет моща. Там около 3000 функций и куча багов Good

Вещь редкая, достать сложно.
Россия навсегда!
Вячеслав Мезенцев
Offline build_your_web  
#20 Оставлено : 8 ноября 2010 г. 23:56:52(UTC)
build_your_web


Статус: Advanced Member

Группы: Developers, Registered
Зарегистрирован: 28.08.2009(UTC)
Сообщений: 127

Сказал(а) «Спасибо»: 19 раз
Поблагодарили: 4 раз в 4 постах
Что-то не нравится мне идея подключать гигантские библиотеки.
99% пользователей хватит одной сотни функций. Так зачем заставлять их грузить такие монстры?!
Пользователи, просматривающие эту тему
4 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.