Вход на сайт



Главное меню
Поиск
Статистика


Президент России

Тиц и pr сайта Рейтинг@Mail.ru статистика Я - Слушаю подкаст Radio-T

SMáth Stúdio

SMáth Stúdio — бесплатная программа для вычисления математических выражений и построения графиков функций. Работа с интерфейсом программы напоминает работу с обычным листом бумаги, так как все математические выражения в ней записываются не в строчку текстом а в графическом, удобном для человека, виде.

 

 

Первая публичная бета-версия программы была создана в 2005 году для карманных компьютеров на языке C# под платформу Microsoft .NET Compact Framework 1.0. На текущий момент SMath Studio имеет версии для нескольких платформ: КПК, коммуникаторов, смартфонов, персональных компьютеров на базе операционных систем Windows и Linux и логически разделена на две программы: Handheld (карманная) и Desktop (настольная), которые соответствуют типу поддерживаемых платформ.

Возможности программы

  • Мультиязычный интерфейс (переведена на 22 языка: английский, немецкий, датский, голландский, испанский, французский, португальский, хорватский, сербский, греческий, турецкий, китайский упрощённый, китайский традиционный, чешский, венгерский, итальянский, польский, русский, болгарский, литовский, украинский);

  • Работа на устройствах с любым разрешением и ориентацией экрана (начиная с 240х240 пикселей и выше);

  • Развитая поддержка единиц измерения (более двухсот встроенных, возможность создавать пользовательские);

  • Отображение двумерных (2D) и трёхмерных (3D) графиков функций;

  • Возможность работы с файлами Mathcad (открытие и сохранение);

  • Поддерживается работа как с числами, так и с символами;

  • Работа со стандартными функциями программирования (таких как if, for, while);

  • Поддерживается работа с параметрами и функциями (как встроенными, так и пользовательскими);

  • Всплывающее меню вставки встроеных функций и операторов при редактировании (как в визуальных средах программирования);

  • Поддержка следующих типов данных: системы, матрицы, векторы, комплексные числа, дроби и работа с бесконечностью;

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

Коробка SMath Studio

Версии

  • SMath Studio 0.25 4 ноября 2005 — бета

  • SMath Studio 0.50.4 26 декабря 2006 — стабильная

  • SMath Studio 0.75 10 января 2009 — стабильная

  • SMath Studio 0.78 1 марта 2009 — стабильная

  • SMath Studio 0.80 1 мая 2009 — стабильная

  • SMath Studio 0.82 9 июля 2009 — стабильная

  • SMath Studio 0.85 1 сентября 2009 — стабильная

  • SMath Studio 0.87 10 февраля 2010 — стабильная

  • SMath Studio 0.88 12 апреля 2010 — стабильная

  • SMath Studio 0.89 23 июля 2010 — стабильная

 

CPLEX

CPLEX — пакет программного обеспечения (решатель), предназначенный для решения задач линейного и квадратичного программирования, в том числе целочисленного программирования.

CPLEX может быть использован из ряда коммерческих систем моделирования (AMPL, GAMS, AIMSS и OPL Development Studio), а также некоторых свободных (OpenOpt, PuLP).

Изначально CPLEX был разработан Робертом Биксби (Robert E. Bixby) и продавался через CPLEX Optimization Inc., которая была куплена ILOG в 1997; затем в 2009 ILOG был куплен IBM.

Fityk

Fityk — программа аппроксимации данных, спектров. Основное назначение — аппроксимация пикоподобными функциями. Имеется поддержка скриптов.

GAP

GAP (от англ. Groups, Algorithms, Programming — Группы, Алгоритмы, Программирование) — свободно распространяемая на условиях лицензии GNU GPL кроссплатформенная система компьютерной алгебры для вычислительной дискретной алгебры с особым вниманием к вычислительной теории групп. Совместная разработка университетов Сент-Эндрюс (Шотландия), Аахен (с 1986), Брауншвейг (Германия) и университета штата Колорадо (США). Возможности системы GAP можно расширить используя внешние пакеты и библиотеки, либо воспользовавшись паскалеподобным языком программирования, также называемым GAP.

Награды

  • В 2008 году группа разработчиков системы GAP стала лауреатом мемориальной премии имени Ричарда Дженкса.[2]

Пример работы с GAP в консоли

gap> G:=SmallGroup(8,1); # G объявлена как группа порядка 8.
<pc group of size 8 with 3 generators>
gap> i:=IsomorphismPermGroup(G); # Найти изоморфизм i группы G с соответствующей группой перестановок
<action isomorphism>
gap> Image(i,G); # Образ G под действием i. Результат — порождающие элементы образа.
Group([ (1,5,3,7,2,6,4,8), (1,3,2,4)(5,7,6,8), (1,2)(3,4)(5,6)(7,8) ])
gap> Elements(Image(i,G)); # Все элементы образа G под действием i.
[ (), (1,2)(3,4)(5,6)(7,8), (1,3,2,4)(5,7,6,8), (1,4,2,3)(5,8,6,7),
(1,5,3,7,2,6,4,8), (1,6,3,8,2,5,4,7), (1,7,4,5,2,8,3,6), (1,8,4,6,2,7,3,5) ]

 

Maxima

Maxima — свободная система компьютерной алгебры, написанная на языке Common Lisp.

История

Maxima произошла от системы Macsyma, разрабатывавшейся в MIT с 1968 по 1982 годы в рамках проекта Project MAC, финансируемого Министерством энергетики США (DOE) и другими государственными организациями. Вариант системы, известный как DOE Macsyma, поддерживался профессором Уильямом Шелтером (англ. William F. Schelter) в Техасском университете в Остине с 1982 года до своей смерти в 2001 году.

В 1998 году Шелтер получил от Министерства энергетики разрешение опубликовать исходный код DOE Macsyma под лицензией GPL, и в 2000 году он создал проект на SourceForge.net для поддержания и дальнейшего развития DOE Macsyma под именем Maxima.

Возможности

Maxima имеет широчайший набор средств для проведения аналитических вычислений, численных вычислений и построения графиков. По набору возможностей система близка к таким коммерческим системам как Maple и Mathematica. В то же время она обладает высочайшей степенью переносимости: она может работать на всех основных современных операционных системах на компьютерах, начиная от самых маломощных, вплоть до наладонных компьютеров.

Интерфейс

Maxima имеет несколько графических интерфейсов пользователя и надстроек: XMaxima (включен в поставку во многих ОС), wxMaxima и т. д., а также может работать в режиме командной строки (используя псевдографику).

Для редактирования научных текстов в Maxima может использоваться программа texmacs, которая позволяет экспортировать документы в ряд популярных форматов, включая TeX/LaTeX и HTML/MathML.

 

CalculiX

CalculiX — открытый, свободный программный пакет, предназначенный для решения линейных и нелинейных трёхмерных задач механики твёрдого деформируемого тела с помощью метода конечных элементов. Распространяется под лицензией GNU General Public License. Авторы программы Guido Dhondt (модуль CCX — решатель) и Klaus Wittig (модуль CGX — пре-, постпроцессор) работают в холдинге MTU Aero Engines, производящем двигатели для самолётов. Изначально создавался для Linux, в настоящее время существуют сборки для Windows и MacOS. Sun Microsystems предлагает использование CalculiX в своём коммерческом гриде Sun Grid.

CalculiX входит в состав дистрибутива CAELinux.

KmPlot

 

KmPlot — графопостроитель функций, входящий в пакет образовательных программ KDE Education Project. Распространяется согласно GNU General Public License.

Возможности программы

  • Работа с параметрическими функциями и функциями заданными в полярных координатах.

  • Несколько режимов отображения координатной сетки.

  • Расчёт площади, ограниченной осью абсцисс и графиком в некотором диапазоне.

  • Поиск экстремумов функции.

  • Построение производной и первообразной от функции.

 

Sage

Sage (анг. мудрец) — система компьютерной алгебры покрывающая много областей математики, включая алгебру, комбинаторику, вычислительную математику и матанализ.

Первая версия Sage была выпущена 24 февраля 2005 года в виде свободного программного обеспечения с лицензией GNU GPL. Первоначальной целью проекта было «создание открытого программного обеспечения альтернативного системам Magma, Maple, Mathematica, и MATLAB». Разработчиком Sage является Уильям Стейн — математик Университета Вашингтона.

Возможности

Веб-интерфейс Sage notebook работает в большинстве современных веб-браузеров.

Решение уравнений с использованием веб-интерфейса Sage notebook.

Многочисленные возможности Sage включают:

  • Интерфейс notebook для просмотра и повторного использования введённых команд и полученных результатов, включая графики и текстовые аннотации, доступный из большинства современных веб-браузеров. Доступно защищённое соединение через протокол HTTPS, когда конфиденциальность имеет значенние. Так же Sage может выполняться как локально, так и удалённо.

  • Интерфейс ввода на основе командной строки, с использованием мультипарадигменного языка IPython.

  • Поддержка параллельных вычислений с использованием как многоядерных процессоров, так и многопроцессорных системраспределённых вычислений.

    и систем
  • Матанализ реализован на основе систем Maxima и SymPy.

  • Линейная алгебра реализована на основе систем GSL, SciPy и NumPy.

  • Библиотеки элементарных и специальных математических функций.

  • Плоские и трёхмерные графики для функций и данных.

  • Средства работы с матрицами и массивами данных с поддержкой разреженных массивов.

  • Различные статистические библиотеки функций, использующие функциональность R и SciPy.

  • Набор инструментов для добавления собственного пользовательского интерфейса к вычислениям и приложениям.

  • Средства для обработки изображений с использованием pylab и Python.

  • Средства визуализации и анализа теории графов.

  • Процедуры для импорта и экспорта различных форматов данных: изображений, видео, аудио, САПР, ГИС, документов и медицинских форматов.

  • Поддержка комплексных чисел, символьных и вычислений с произвольной точностью.

  • Подготовка научно-технической документации с использованием редактора формул и возможностью встраивания Sage в документацию формата LaTeX.

  • Сетевые инструменты для соединения с базами данных SQL, поддержка сетевых протоколов, включая HTTP, NNTP, IMAP, SSH, IRC, FTP.

  • Программные интерфейсы для работы с системами Mathematica, Magma, и Maple.

Хотя это не представлено непосредственно, Sage может быть вызван из интерфейса Mathematica.

Философия разработки Sage

В процессе разработки Sage Уильям Стейн основывался на следующих фактах:

  • Для создания достойной альтернативы системам Magma, Maple, Mathematica, и MATLAB потребуются сотни или тысячи человеко-лет, если начинать процесс разработки с нуля.

  • Существует большое количество готового математического ПО с открытым исходным кодом, но написанного на различных языках программирования, из которых наиболее встречаемыми являются C, C++, Fortran и Python.

Таким образом, вместо того, чтобы начинать с нуля, было решено объединить всё специализированное математическое ПО в систему с общим интерфейсом. Конечному пользователю необходимо лишь знать язык Python.

Если для какой-то частной задачи не существовало ПО с открытым кодом, тогда стояла задача написания соответствующего блока для Sage. Но Sage не изобретает колесо, и в отличие от коммерческих систем компьютерной алгебры может открыто использовать исходные коды свободного ПО.

К разработке Sage привлекаются как профессионалы, так и студенты. Разработчики работают на общественных началах и поддерживаются грантами.

Производительность

Исходный код и исполняемые файлы Sage доступны для скачивания. Если компиляция производится на конечном компьютере, многие входящие в комплект библиотеки будут автоматически настроены для оптимальной работы на данном оборудовании, принимая в расчёт количество процессоров, размер кэш-буферов и поддержку специальных наборов инструкций, например SSE.

Лицензирование и доступность

Sage — свободное программное обеспечение, распространяемое по условиям лицензии GNU General Public License версии 2+. Доступность Sage имеет следующие аспекты:

  • Исходный код может быть скачан со страницы загрузки. Так же доступны релизы, находящиеся в процессе разработки, хотя они не рекомендуются обычным пользователям.

  • Исполняемые файлы доступны для операционных систем Linux, OS X и Solaris (как под архитектуру x86, так и SPARC).

  • Также доступен live CD с версией Linux, что позволяет опробовать Sage без установки на компьютер.

  • Пользователи могут использовать он-лайн версию Sage, доступную по адресу t2nb.math.washington.edu:8000. При этом имеются ограничения на объём доступной памяти и конфиденциальность работы.

Несмотря на то, что Microsoft спонсировала разработку версии Sage специально под ОС Windows, на данный момент пользователям этой операционной системы нужно использовать технологию виртуализации для работы с Sage. Рекомендуемая программа виртуализации — VirtualBox.

Содержащиеся в Sage программные пакеты

Математические пакеты

Алгебра

GAP, Maxima, Singular

Алгебраическая геометрия

Singular

Арифметика произвольной точности

GMP, MPFR, MPFI, NTL

Арифметическая геометрия

PARI, NTL, mwrank, ecm

Матанализ

Maxima, SymPy, GiNaC

Комбинаторика

Symmetrica, Sage-Combinat

Линейная алгебра

Linbox, IML

Теория графов

NetworkX

Теория групп

GAP

Численные расчёты

GSL, SciPy, NumPy, ATLAS

Другие пакеты

Интерфейс командной строки

IPython

Базы данных

ZODB, Python Pickles, SQLite

Графический интерфейс

Sage Notebook, jsmath

Графика

Matplotlib, Tachyon3d, GD, Jmol

Интерпретатор команд

Python

Сетевые возможности

Twisted

Анализ

x,a,b,c = var('x,a,b,c')

log(sqrt(a)).simplify_log() # returns (log(a))/2
log(a/b).simplify_log() # returns log(a) - log(b)
sin(a+b).simplify_trig() # returns cos(a)*sin(b) + sin(a)*cos(b)
cos(a+b).simplify_trig() # returns cos(a)*cos(b) - sin(a)*sin(b)
(a+b)ˆ5 # returns (b + a)ˆ5
expand((a+b)ˆ5) # returns bˆ5 + 5*a*bˆ4 + 10*aˆ2*bˆ3 +
# 10*aˆ3*bˆ2 + 5*aˆ4*b + aˆ5

limit((xˆ2+1)/(2+x+3*xˆ2), x=infinity) # returns 1/3
limit(sin(x)/x, x=0) # returns 1

diff(acos(x),x) # returns -1/sqrt(1 - xˆ2)
f = exp(x)*log(x)
f.diff(x,3) # returns e^x*log(x) + 3*e^x/x - 3*e^x/x^2 + 2*e^x/x^3

solve(a*x^2 + b*x + c, x) # returns [x == (-sqrt(b^2 - 4*a*c) - b)/(2*a),
# x == (sqrt(b^2 - 4*a*c) - b)/(2*a)]

f = xˆ2 + 432/x
solve(f.diff(x)==0,x) # returns [x == 3*sqrt(3)*I - 3,
# x == -3*sqrt(3)*I - 3, x == 6]

Дифференциальные уравнения

t = var('t') # define a variable t
x = function('x',t) # define x to be a function of that variable
DE = lambda y: diff(y,t) + y - 1
desolve(DE(x(t)), [x,t]) # returns '%e^-t*(%e^t+%c)'

Линейная алгебра

A = Matrix([[1,2,3],[3,2,1],[1,1,1]])
y = vector([0,-4,-1])
A.solve_right(y) # returns (-2, 1, 0)
A.eigenvalues() # returns [5, 0, -1]

B = Matrix([[1,2,3],[3,2,1],[1,2,1]])
B.inverse() # returns [ 0 1/2 -1/2]
# [-1/4 -1/4 1]
# [ 1/2 0 -1/2]

# Call numpy for the Moore-Penrose pseudo-inverse,
# since Sage does not support that yet.

import numpy
C = Matrix([[1 , 1], [2 , 2]])
matrix(numpy.linalg.pinv(C.numpy())) # returns [0.1 0.2]
# [0.1 0.2]

Теория чисел

prime_pi(1000000) # returns 78498, the number of primes less than one million

E = EllipticCurve('389a') # construct an elliptic curve from its Cremona label
P, Q = E.gens()
7*P + Q # returns (2869/676 : -171989/17576 : 1)

История версий

Ниже приведены только значительные релизы. В разработке Sage практикуются правило «release early, release often» (англ. "выпускай раньше, выпускай чаще"), новые релизы появляются каждые две-три недели.

Версии Sage

Версия Дата Релиза Описание

0.1

Январь, 2005

Включена Pari, но отсутствуют GAP и Singular

0.2 — 0.4

С марта по июль 2005

База данных Cremona, мультивариантные полиномы, large finite fields и больше документации

0.5 — 0.7

С августа по сентябрь 2005

Векторные поля, кольца, modular symbols и windows usage

0.8

Октябрь 2005

В полном составе включены GAP, Singular

0.9

Ноябрь, 2005

Добавлены Maxima и clisp

1.0

Февраль, 2006

 

2.0

Январь, 2007

 

3.0

Апрель, 2008

 

4.0

Май, 2009

 

В 2007 году Sage выиграл первый приз международного конкурса свободного программного обеспечения en:Les Trophées du Libre (англ.) в разделе научного ПО.

Axiom

Axiom — свободная система компьютерной алгебры общего назначения. Она состоит из среды интерпретатора, компилятора и библиотеки, описывающей строго типизированную, математически правильную иерархию типов.

История

Разработка системы была начата в 1971 году группой исследователей IBM под руководством Ричарда Дженкса (англ. Richard Dimick Jenks). Изначально система называлась Scratchpad. Проект развивался медленно и в основном рассматривался как исследовательская платформа для разработки новых идей в вычислительной математике.

В 90-х система была продана компании Numerical Algorithms Group (NAG), получила название Axiom и стала коммерческим продуктом. Но по ряду причин система не получила коммерческого успеха и была отозвана с рынка в октябре 2001.

NAG решила сделать Axiom свободным программным обеспечением и открыла исходные коды под модифицированной лицензией BSD.

В 2007 у Axiom появились два форка с открытым исходным кодом: OpenAxiom и FriCAS.

Разработка системы продолжается, новые версии выходят каждые два месяца.

Документация

Axiom — литературная программа. Исходный код доступен в наборе томов на сайте: axiom-developer.org. Эти тома содержат актуальный исходный код системы.

На данный момент доступны следующие документы:

  • Общее оглавление

  • Volume 0: Axiom Jenks and Sutor — Основной учебник

  • Volume 1: Axiom Tutorial — Простое введение

  • Volume 2: Axiom Users Guide — Подробные примеры использования доменов (незавершённый)

  • Volume 3: Axiom Programers Guide — Руководство в примерах для написания программ (незавершённый)

  • Volume 4: Axiom Developers Guide — Короткие наброски на темы, специфичные для разработчиков (незавершённый)

  • Volume 5: Axiom Intepreter — Исходый код интерпретатора Axiom (незавершённый)

  • Volume 6: Axiom Command — Исходый код системных команд и скриптов (незавершённый)

  • Volume 7: Axiom Hyperdoc — Исходный код и разъяснения браузера справки X11 Hyperdoc

    • Volume 7.1 Axiom Hyperdoc Pages — Исходный код страниц Hyperdoc

  • Volume 8: Axiom Graphics — Исходый код подсистемы X11 Graphics

  • Volume 9: Axiom Compiler — Исходый код компилятора Spad (незавершённый)

  • Volume 10: Axiom Algebra Implementation — Наброски особенностей реализации (незавершённый)

    • Volume 10.1: Axiom Algebra Theory — Наброски, содержащие базовую теорию

    • Volume 10.2: Axiom Algebra Categories — Исходный код категорий Axiom

    • Volume 10.3: Axiom Algebra Domains — Исходый код доменов Axiom (незавершённый)

    • Volume 10.4: Axiom Algebra Packages — Исходый код Axiom packages (незавершённый)

  • Volume 11: Axiom Browser — Исходные страницы внешнего интерфейса Axiom для браузера Firefox

  • Volume 12: Axiom Crystal — Исходный код внешнего интерфейса Axiom Crystal (незавершённый)

Видео

Важной целью проекта Axiom является предоставление документации. В ноябре 2008 года проект анонсировал первое из серии обучающих видео, которые также доступны на сайте: axiom-developer.org. Первое видео рассказывает о источниках информации о Axiom.

Философия проекта

Технология литературного программирования Кнута используется по всему исходному коду. Проект Axiom планирует использовать проверенные технологии (такие как Coq и ACL2) для доказательства корректности алгоритмов.

Особенности

В Axiom все объекты имеют тип. Примерами типов являются математические структуры (такие как кольца, поля, многочлены), а также структуры данных из вычислительной техники (например, списки, деревья, хеш-таблицы).

Функция может получить тип в качестве аргумента, и её возвращаемое значение также может быть типом. Например, Fraction — функция, получающая IntegralDomain в качестве аргумента, и возвращающая поле отношений своего аргумента. В качестве другого примера кольцо 4\times 4 матриц действительных чисел может быть построено как SquareMatrix(4, Fraction Integer). Конечно, если работать в этом домене, 1 интерпретируется как единичная матрица и A^-1 позволяет получить обратную матрицу A, если она существует.

Некоторые операции могут иметь одинаковые имена, и тогда типы аргументов и результата используются для определения того, какая операция применяется, подобно тому, как в ООП.

Язык расширений Axiom называется SPAD. Вся математическая база Axiom написана на этом языке. Интерпретатор принимает почти такой же язык.

SPAD в дальнейшем разрабатывался под именем A# и позже Aldor. Последний, кроме того, может быть использован как альтернативный язык расширений. Однако, следует учесть, что он распространяется под другой лицензией.

 

Примеры

3j-символы

Вычисление 3j-символов и коэффициентов Клебша-Гордана.

j3Sum (j1, j2, j3, m1, m2, m3) ==
maxz := reduce (min, [j1+j2-j3, j1-m1, j2+m2])
minz := max(0, max ( -(j3-j2+m1), -(j3-j1-m2) ))
minz > maxz => 0
maxz < 0 => 0
sum ( (-1)^(z+j1-j2-m3) / _
( factorial(z) * factorial(j1+j2-j3-z) * factorial(j1-m1-z) * _
factorial(j2+m2-z) * factorial(j3-j2+m1+z) * factorial(j3-j1-m2+z) ), _
z=minz..maxz)

j3 (j1, j2, j3, m1, m2, m3) ==
m1 + m2 + m3 ~= 0 => 0
abs(j1 - j2) > j3 => 0
j1 + j2 < j3 => 0
abs(m1) > j1 => 0
abs(m2) > j2 => 0
abs(m3) > j3 => 0
not integer? (j1+j2+j3) => 0
sqrt ( _
factorial(j1+j2-j3) * factorial(j1-j2+j3) * factorial(-j1+j2+j3) / _
factorial(j1+j2+j3+1) * _
factorial(j1+m1) * factorial(j1-m1) * _
factorial(j2+m2) * factorial(j2-m2) * _
factorial(j3+m3) * factorial(j3-m3)
) * j3Sum (j1, j2, j3, m1, m2, m3)

clebschGordan (j1, j2, j, m1, m2, m) ==
(-1)^(j1-j2+m) * sqrt(2*j+1) * j3(j1, j2, j, m1, m2, -m)

Общая теория относительности

«Аксиома» выводит символы Кристоффеля и тензоры Римана и Риччи в решении Шварцшильда.

x := vector ['t, 'r, '%theta, '%phi];
dim := #x;

%nu := operator '%nu;
%lambda := operator '%lambda;
lg := matrix [
[exp(%nu r), 0, 0, 0], _
[ 0, - exp(%lambda r), 0, 0], _
[ 0, 0, -r^2, 0], _
[ 0, 0, 0, -r^2*sin(%theta)^2] _
];

ug := inverse lg;

grSetup(metric, names) ==
free x
free dim
free lg
free ug
x := names
dim := #x
lg := metric
ug := inverse lg

sum(list) == reduce (+, list)

Christoffel (k,l,i) ==
(1/2) * sum [ ug(i,m)*(D(lg(k,m), x(l)) + D(lg(m,l), x(k)) - D(lg(k,l), x(m)))
for m in 1..dim ]

Riemann (k,l,m,i) ==
D(Christoffel(k,m,i), x(l)) -
D(Christoffel(k,l,i), x(m)) +
sum [
Christoffel(n,l,i)*Christoffel(k,m,n) -
Christoffel(n,m,i)*Christoffel(k,l,n)
for n in 1..dim ]

Ricci (i,k) == sum [ Riemann(i,l,k,l) for l in 1..dim ]

scalarCurvature () == sum [ sum [
ug(i,k) * Ricci(i,k)
for i in 1..dim ] for k in 1..dim ]

lRiemann (i,i,l,m) == 0
lRiemann (i,k,l,l) == 0
lRiemann (i,k,l,m | i > k) == - lRiemann (k,i,l,m)
lRiemann (i,k,l,m | l > m) == - lRiemann (i,k,m,l)
lRiemann (i,k,l,m) == sum [ lg(i,n) * Riemann(k,l,m,n) for n in 1..dim ]

showChristoffel () ==
for k in 1..dim repeat
for l in 1..k repeat
for i in 1..dim repeat
if Christoffel(k,l,i) ~= 0 then
k > l => output infix ('=, [script('%Gamma,[[k-1,l-1],[i-1]]), _
script('%Gamma,[[l-1,k-1],[i-1]]), _
Christoffel(k,l,i)::OUTFORM])
k = l => output infix ('=, _
[script('%Gamma,[[k-1,l-1],[i-1]]), _
Christoffel(k,l,i)::OUTFORM])

showRicci () ==
for i in 1..dim repeat
for k in 1..i repeat
if Ricci(i,k) ~= 0 then
i = k => output infix ('=, [subscript('R,[i-1,k-1]), Ricci(i,k)::OUTFORM])
i > k => output infix ('=, [subscript('R,[i-1,k-1]), _
subscript('R,[k-1,i-1]), _
Ricci(i,k)::OUTFORM])

showRiemann () ==
for k in 1..dim repeat
for l in 1..dim repeat
for m in 1..dim repeat
for i in 1..dim repeat
if Riemann(k,l,m,i) ~= 0 then
output infix ('=, _
[script('R, [[k-1,l-1,m-1 ], [i-1]]), Riemann(k,l,m,i)::OUTFORM])

(21) -> showChristoffel()
Compiling function sum with type List Expression Integer ->
Expression Integer
Compiling function Christoffel with type (PositiveInteger,
PositiveInteger,PositiveInteger) -> Expression Integer
Compiling function showChristoffel with type () -> Void
%nu(r) ,
%e %nu (r)
1
%Gamma = ---------------
0,0 %lambda(r)
2%e
,
%nu (r)
0 0
%Gamma = %Gamma = -------
1,0 0,1 2
,
%lambda (r)
1
%Gamma = -----------
1,1 2
2 2 1
%Gamma = %Gamma = -
2,1 1,2 r
1 r
%Gamma = - ------------
2,2 %lambda(r)
%e
3 3 1
%Gamma = %Gamma = -
3,1 1,3 r
3 3 cos(%theta)
%Gamma = %Gamma = -----------
3,2 2,3 sin(%theta)
2
1 r sin(%theta)
%Gamma = - --------------
3,3 %lambda(r)
%e
2
%Gamma = - cos(%theta)sin(%theta)
3,3
Type: Void
(22) -> Ricci(3,3)
Compiling function Riemann with type (PositiveInteger,
PositiveInteger,PositiveInteger,PositiveInteger) -> Expression
Integer
Compiling function Ricci with type (PositiveInteger,PositiveInteger)
-> Expression Integer

, , %lambda(r)
- r%nu (r) + r%lambda (r) + 2%e - 2

(22) ---------------------------------------------
%lambda(r)
2%e
Type: Expression Integer



 

FreeMat

FreeMat — свободная среда для численных вычислений и язык программирования, подобный MATLAB и GNU Octave. В дополнение к поддержке многих функций MATLAB и некоторых функциональных возможностей IDL, имеет интерфейс к внешнему коду на C, C++, и Fortran, а также коннективные алгоритмы (через MPI), построение графиков и трехмерные визуализации.


GNU Octave

 

GNU Octave — свободный язык для математических вычислений, использующая совместимый с MATLAB язык высокого уровня.

Octave представляет интерактивный командный интерфейс для решения линейных и нелинейных математических задач, а также проведения других численных экспериментов. Кроме того, Octave можно использовать для пакетной обработки. Язык Octave оперирует арифметикой вещественных и комплексных скаляров и матриц, имеет расширения для решения линейных алгебраических задач, нахождения корней систем нелинейных алгебраических уравнений, работы с полиномами, решения различных дифференциальных уравнений, интегрирования систем дифференциальных и дифференциально-алгебраических уравнений первого порядка, интегрирования функций на конечных и бесконечных интервалах. Этот список можно легко расширить, используя язык Octave (или используя динамически загружаемые модули, созданные на языках C, С++, Фортран и др.).

Технические детали

  • Octave написан на C++ с использованием библиотек STL;

  • Для запуска скриптов Octave использует интерпретатор;

  • Octave можно дополнять динамически подгружаемыми модулями;

  • Для создания и распечатки графиков Octave использует gnuplot и Grace.

Язык Octave

Octave — интерпретируемый язык программирования. Он похож на C и поддерживает большинство основных функций стандартной библиотеки C, а также основные команды и и системные вызовы Unix. С другой стороны, он не поддерживает передачу аргументов (особенность дизайна).

Синтаксис языка очень похож на MATLAB, и грамотно написанные скрипты будут запускаться как в Octave, так и в MATLAB.

Графический интерфейс

Графический интерфейс представлен дополнениями (графики он может выводить и без них):

  • Kalculus — MATLAB-подобный интерфейс, написанный на Qt4;

  • Xoctave — очень похож на MATLAB;

  • OctaveNB — интеграция с NetBeans IDE;

  • QtOctave Graphical User Interface — находится в состоянии разработки.

Некоторые возможности

Дополнение команд и переменных

При нажатии клавиши TAB, Octave попытается дополнить до полного имена переменной, функции и файлов (подобно автодополнению в Bash).

История команд

В интерактивном режиме, Octave сохраняет набранные команды во внутреннем буфере, так что их можно вызвать заново и редактировать.

Интеграция с C++

Программы, написанные на C++, можно запускать внутри скриптов Octave. К примеру, фрагмент кода для вызова rand([9000,1]):

#include <octave/oct.h>
...
ColumnVector NumRands(2);
NumRands(0) = 9000;
NumRands(1) = 1;
octave_value_list f_arg, f_ret;
f_arg(0) = octave_value(NumRands);
f_ret = feval("rand",f_arg,1);
Matrix unis(f_ret(0).matrix_value());

Совместимость с MATLAB

Octave был написан с учётом совместимости с MATLAB и реализует многие его возможности:

  • Матрицы в качестве основных типов данных;
  • Встроенная поддержка комплексных чисел;
  • Мощные встроенные математические функции и большие библиотеки функций;
  • Расширяемость, благодаря возможности создания пользовательских функций.

Но есть и отличия:

  • Комментарии могут начинаться как с символа #, так и с символа %;
  • Поддерживаются C-подобные операторы ++, --, +=, *=, /=;
  • Элементы могут быть адресованы без создания новой переменной, например [1:10](3);
  • Строки могут быть заданы как символом ", так и символом '.

 

Scilab

 

Scilab — пакет прикладных математических программ, предоставляющий мощное открытое окружение для инженерных (технических) и научных расчётов.

История

С 1994 года распространяется вместе с исходным кодом через Интернет. В 2003 году для поддержки Scilab был создан консорциум Scilab Consortium. Сейчас в него входят 25 участников, в том числе Mandriva, INRIA и ENPC (Франция).

Возможности

Scilab содержит сотни математических функций, и есть возможность добавления новых, написанных на различных языках (C, C++, Fortran …). Так же имеются разнообразные структуры данных (списки, полиномы, рациональные функции, линейные системы), интерпретатор и язык высокого уровня.

Scilab был спроектирован как открытая система, и пользователи могут добавлять в него свои типы данных и операции путём перегрузки.

В системе доступно множество инструментов:

  • 2D и 3D графики, анимация

  • Линейная алгебра, разреженные матрицы (sparse matrices)

  • Полиномиальные и рациональные функции

  • Интерполяция, аппроксимация

  • Симуляция: решение ОДУ и ДУ

  • Scicos: гибрид системы моделирования динамических систем и симуляции

  • Дифференциальные и не дифференциальные оптимизации

  • Обработка сигналов

  • Параллельная работа

  • Статистика

  • Работа с КА

  • Интерфейс к Fortran, Tcl/Tk, C, C++, Java, LabVIEW

Scilab имеет схожий с MATLAB язык программирования. В состав пакета входит утилита, позволяющая конвертировать документы Matlab в Scilab.

Scilab позволяет работать с элементарными и большим числом специальных функций (Бесселя, Неймана, интегральные функции), имеет мощные средства работы с матрицами, полиномами (в том числе и символьно), производить численные вычисления (например численное интегрирование) и решение задач линейной алгебры, оптимизации и симуляции, мощные статистические функции, а также средство для построения и работы с графиками.

Для численных расчётов используются библиотеки Lapack, LINPACK, ODEPACK , Atlas и другие.

В состав пакета также входит Scicos — инструмент для редактирования блочных диаграмм и симуляции (аналог simulink в пакете MATLAB). Имеется возможность совместной работы Scilab с программой LabVIEW.

Распространение

Программа доступна для различных операционных систем, включая Linux и Microsoft Windows. Возможности Scilab могут быть расширены внешними программами и модулями, написанными на разных языках программирования. Программа имеет открытый исходный код, что позволяет как свободное коммерческое использование и распространение неизменённых версий, так и некоммерческое распространение измененных версий, которые должны включать в себя исходный код. Для коммерческого распространения измёненных версий необходимо согласование с INRIA.

Начиная с версии 5.0 программа распространяется под совместимой с GNU GPL 2 лицензией CeCILL.

Отличительные особенности

Отличия от некоторых коммерческих программ:

  • Бесплатность

  • Свободность (с версии 5.0)

  • Маленький размер — дистрибутив 4 версии занимал менее 20Мб против более чем двухгигабайтного пакета MATLAB. Инсталятор 5-й версии увеличился в объёме до 75 Мб.

  • Возможность запуска в консоли без использования графического интерфейса в том числе в версии под Windows (в UNIX-версии MatLab-а эта возможность присутствует). Это позволяет производить автоматизированные вычисления, есть пакетный режим.

Примеры

Простые вычисления

Код, задающий матрицу и считающий определитель:

M=[1 6 8; 7 8 8; 1 6 0]
det(M)

Графики

Построение простого графика функции

//установка значения x
x=[0:0.1:2*%pi]';
//простой график
plot2d(sin(x))

Более сложный график функции:

График, нарисованный с помощью Scilab

set("figure_style","new") //создать фигуру
subplot(211)
a=gca() //получить текущие оси координат
a.box="off";
t=-%pi:0.3:%pi;plot3d(t,t,sin(t)'*cos(t),80,50,'X@Y@Z',[5,2,4]);
subplot(212)
plot2d(); //простой график
a=gca(); //получить текущие оси координат
a.box="off";
a.x_location="middle";

 

MATLAB ON LINE

MATLAB ON LINE - адаптированная версия Matlab для решения задач непосредственно в сети, поддерживает аккаунты пользователей, позволяя решать и возвращаться к решениям, сдавать лабораторные работы через сеть, визуализировать компьютерный эксперимент, содержит процедуры решения ЛСАУ, моделирования динамики Lsim, популярные матричные разложения и т.д.,  регулярно обновляется, с портал-поддержкой.
Добавлен режим реального времени (управление объектами через сеть интернет), обработка фотографий web-камер (анализ web-датчиков), в дополнение пиксельной добавлена векторная графика, значительно расширено количество демо-примеров.
Добавлен Виртуальный Роботрек (с субмариной): на базе постоянно работающего сервера пущена в строй Виртуальная Субмарина (имитация реальной субмарины с поставкой информации от датчиков глубины и руля глубины непосредственнно в интернет, с возможностью решать типовые задачи систем реального времени с программированием их через форум/блог) http://artspb.com/online/index.php.
Программа предназначена для студентов, аспирантов и преподавателей ВУЗОВ.
Сайт программы: http://artspb.com/matlab/index.php
Для освещения электрической части интернет-робототехники вышел компьютерный журнал http://artspb.com/articles

Последнее обновление (30.01.11 22:16)

 
Close
Red Z Group