Написание дроби c++ [закрыт]
Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.
Закрыт 7 лет назад .
Как в c++ написать дробь, чтобы знаменатель был под числителем?
Отслеживать
6,488 6 6 золотых знаков 24 24 серебряных знака 31 31 бронзовый знак
задан 28 фев 2016 в 18:12
Егор Смирнов Егор Смирнов
55 1 1 серебряный знак 8 8 бронзовых знаков
Что вы имеете в виду? Просто вывести в текстовом режиме? в три строки. Так первые Mathematica работали — страшно смотреть было 🙂 Если неверно вас понял — уточните вопрос, pls.
28 фев 2016 в 18:13
Да, в текстовом режиме
28 фев 2016 в 18:18
Вам нужно одиночные дроби выводить или в составе выражения?
28 фев 2016 в 19:03
@velikodniy в составе выражения
28 фев 2016 в 19:46
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
За отсутствием форматирования в комментариях вынужден прибегнуть к ответу 🙂
В тексте — если a/b никак не устраивает — только в первой строке выводить знаменатель, во второй — рисовать знак дроби, и в третьей — числитель.
5 8 31 - + - = -- 2 3 6
Отслеживать
ответ дан 28 фев 2016 в 18:21
218k 15 15 золотых знаков 118 118 серебряных знаков 229 229 бронзовых знаков
И это компилируется? )
28 фев 2016 в 19:03
@gil9red казалось бы при чем тут вывод и компиляция?
28 фев 2016 в 19:24
@gil9red cout << "5 8 31\n- + - = --\n2 3 6\n" - вполне, почему бы и нет.
28 фев 2016 в 22:29
- c++
- математика
-
Важное на Мете
Похожие
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
График ряда Фурье
пробывала сама вроде получилось, только хочу построить теперь график чтобы посмотреть как он выглядит с помощью пакета mathematica не получается, выводит просто оси, ничего не рисует, может потому что ряд не сходиться, сходимость , сходимость тоже пыталась проверить в mathematica ничего не выдает, нуждаюсь в помощи, кто что скажет по этому поводу
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Разложить в ряд Фурье периодическую функцию, записать сумму ряда и построить график
Кто знает как решать методом фурье в программе Mathematica. Разложить в ряд Фурье периодическую.
Какая программа подойдет для построения частичной суммы ряда Фурье?
подскажите в какой программе можно п построить графики нескольких частичных сумм (например, S1, S3.
Разложить функцию в ряд Фурье и построить график суммы ряда Фурье
Здравствуйте. Дана задача: На интервале (-π;π) задана периодическая (с периодом 2π) функция.
График функции, представленный в виде ряда Фурье
Подскажите пожалуйста, как построить график, представленный таким разложением. Соответственно.
Символьная математика, наконец, начинает поддаваться нейросетям

Переводя задачи символьной математики в древовидные структуры, мы, наконец, можем заставить нейросети решать абстрактные задачи
Более 70 лет назад исследователи на переднем крае изучения искусственного интеллекта (ИИ) придумали нейросети – революционный способ представить работу мозга человека. В мозге человека сети, состоящие из миллиардов связанных между собой нейронов, осмысливают приходящие с органов чувств данные, что позволяет нам учиться на опыте. Искусственные нейросети тоже умеют фильтровать через взаимосвязанные слои данные в огромных количествах, и, пользуясь самостоятельно выученными правилами, делать предсказания и распознавать закономерности.
Сегодня люди считают нейросети некоей панацеей из области ИИ, способной решать любые технические задачи, которые можно переформулировать в виде задач на распознавание закономерностей. Они умеют делать [почти] естественно звучащие переводы с языка на язык. Приложения для работы с фотографиями используют их для распознавания и разделения по категориям лиц, встречающихся на снимках. Программы на основе нейросетей обыграли лучших игроков мира в разные настольные игры, включая шахматы и го.
Однако в одной области нейросети традиционно отставали: в решении сложных задач символьной математики. Это, например, типичные задачи из курсов дифференциального и интегрального исчисления. Проблемы возникают по причине устройства самой математики, требующей точных решений задач. Нейросети тем временем обычно полагаются на вероятности. Они учатся распознавать закономерности – какой из вариантов перевода на испанский лучше звучит, или как выглядит ваше лицо на фото – и способны создавать новые.
Ситуация изменилась в конце прошлого года, когда Гийом Лампл [Guillaume Lample] и Франсуа Шартон [François Charton], пара специалистов по информатике из парижской исследовательской группы ИИ в Facebook, раскрыли первый удачный подход к решению задач символьной математики при помощи нейросетей. В их метод не входят обработка гор цифр или числовые аппроксимации. Вместо этого они сыграли на сильных сторонах нейросетей, переформулировав математические задачи в терминах задач, уже почти решённых: переводов с языка на язык.
«В институте мы оба изучали математику и статистику», — сказал Шартон, изучающий применение ИИ в математике. «Изначально мы говорили на языке математики».
В итоге программа Лампла и Шартона может выдавать точные решения сложных интегралов и дифференциальных уравнений – включая и такие, на которых спотыкаются популярные математические программы со встроенными правилами решения задач.

Франсуа Шартон (слева) и Гийом Лампл, специалисты по информатике из парижской исследовательской группы ИИ в Facebook
Новая программа эксплуатирует одно из основных достижений нейросетей: способность самостоятельно формулировать правила работы. В итоге, «правила и исключения не хранятся отдельно», — сказал Джей Маклиланд, психолог из Стэнфордского университета, использующий нейросети для моделирования процесса изучения математики людьми. На практике это означает, что программа не спотыкается на самых сложных интегралах. В теории такой подход может вывести нетрадиционные «правила», которые помогут человеку или машине разобраться с нерешёнными на сегодня задачами. Это могут быть такие математические задачи, как открытие новых доказательств или понимание природы самих нейросетей.
Конечно, пока такого мы не видим. Но команда явно утвердительно ответила на вопрос возрастом в несколько десятков лет – может ли ИИ заниматься символьной математикой? «Модели у них общепризнанные. Алгоритмы общепризнанные. Они хитрым образом формулируют задачи», — сказал Войцех Заремба, сооснователь группы исследования ИИ OpenAI.
«Им удалось создать нейросети, способные решать задачи, выходившие за рамки возможностей машин, следовавших правилам, — сказал Маклиланд. – И это очень здорово».
Обучаем компьютер математическому языку
Компьютеры всегда хорошо справлялись с обработкой чисел. Системы компьютерной алгебры комбинируют десятки и сотни чётко определённых алгоритмов, жёстко прописанных в коде. Обычно они строго следуют правилам, направленным на выполнение конкретных операций, и не приемлют исключений. Для многих символьных задач они выдают численные решения – с точностью, достаточной для инженерных и физических целей.
Нейросети так не работают. В них не записаны чёткие правила. Они обучаются на больших наборах данных – чем больше, тем лучше – и используют статистику, чтобы делать очень хорошее приближение. В процессе они обучаются тому, что даёт наилучший результат. Особенно хороши программы перевода текстов: они переводят не пословно, а сразу целыми фразами в контексте всего текста. Исследователи из Facebook решили, что это может стать не препятствием, а преимуществом при решении задач символьной математики. Такой подход даёт программе некую свободу в решении.
Такая свобода особенно полезна для определённых задач открытого типа, например, интегрирования. У математиков есть старая поговорка: «взятие производных – действие механическое, а интегралов – творческое». Чтобы найти производную функции, нужно следовать хорошо описанным действиям. Но при поиске интеграла часто требуется что-то ещё, что-то более близкое к интуиции, чем к вычислениям.
Группа из Facebook подозревала, что эту интуицию можно аппроксимировать при помощи распознавания образов. «Интегрирование – одна из наиболее похожих на распознавание закономерностей задач в математике», — сказал Шартон. Так что хотя нейросеть может и не понимать, что делают функции, или что означают переменные, она вырабатывает определённый инстинкт. Нейросеть начинает «чувствовать», что может сработать, даже не понимая, почему.
К примеру, математик, которому предложат проинтегрировать выражение типа yy′(y 2 +1) −1/2 , он интуитивно предположит, что первообразная функция – выражение, которое нужно продифференцировать, чтобы получить заданное – содержит что-то вроде квадратного корня из y 2 +1.
Чтобы дать нейросети возможность работать с символами, как это делают математики, Шартон и Лампл начали с перевода математических выражений в более удобную форму. В итоге они представили их в виде деревьев – в формате, похожем на разбор членов предложения в виде диаграммы. Математические операторы – сложение, вычитание, умножение, деление – стали узлами дерева, как и возведение в степень или тригонометрические функции. Аргументы (переменные и числа) стали его листьями. Древовидная структура, за некоторыми редкими исключениями, отражает то, как операции располагаются внутри длинных выражений.
«Изучая большую функцию, мы можем видеть, что она состоит из более мелких, и интуитивно представляем, каким может быть решение, — сказал Лампл. – Мы думаем, что модель пытается находить в символах подсказки по поводу решения». Он сказал, что этот процесс сравним с тем, как люди берут интегралы – и вообще решают математические задачи – сводя их к узнаваемым подзадачам, которые они уже решали ранее.

Переписав уравнения в виде ветвящихся наборов взаимосвязей, исследователи создали нейросети, способные работать с символьной математикой. Математические операторы – сложение, вычитание, умножение, деление – становятся узлами дерева, а аргументы (переменные и числа) — листьями. Такой подход позволяет нейросети вырабатывать что-то вроде математической интуиции.
Разработав такую архитектуру, исследователи использовали базу элементарных функций, чтобы сгенерировать несколько обучающих наборов данных, в сумме содержащих порядка 200 млн уравнений и их решений, представленных в виде деревьев. Затем они скормили эти данные нейросети, чтобы она обучилась тому, как выглядят решения этих задач.
После обучения настала пора посмотреть, на что способна нейросеть. Учёные испытали её на 5000 уравнений, уже без готовых ответов (ни одно из них, правда, нельзя было отнести к «нерешаемым»). Нейросеть отлично справилась с задачей, и нашла правильные решения для большинства из них. Особенно хорошо ей удавалось интегрирование, она решила почти 100% из таких испытательных задач, но немного хуже справилась с обычным дифференцированием.
На выдачу правильного решения почти всех задач у программы обычно уходило не более 1 секунды. На задачах по интегрированию она обогнала по скорости и точности популярные программы для решения задач, Mathematica и Matlab. Команда из Facebook сообщила, что нейросеть даже выдавала решения таких задач, которые были не под силу коммерческим программам.
Что в чёрном ящике
Несмотря на все эти результаты, математик Роджер Гермундсон, возглавляющий отдел исследования и разработки компании Wolfram, производителя пакета Mathematica, не согласен с таким прямым сравнением. Исследователи из Facebook сравнили свой метод только с небольшим количеством функций пакета Mathematica – integrate для интегралов и DSolve для дифференциальных уравнений. Однако у пользователей Mathematica есть доступ к сотням других инструментов.
Гермундсон также отметил, что, несмотря на огромный размер набора обучающих данных, в него входили только уравнения с одной переменной, и основанные на элементарных функциях. «Это тонкий срез всех возможных выражений», — сказал он. Нейросеть не проверяли на более запутанных функциях, которые часто используются в физике и финансах, типа функции ошибок или функции Бесселя (группа из Facebook ответила, что это будет возможно в будущих версиях нейросети, после небольших модификаций).
А Фредерик Гибу, математик из Калифорнийского университета в Санта-Барбаре, изучавший методы использования нейросети для решения дифференциальных уравнений в частных производных, не был убеждён в непогрешимости нейросети, созданной группой из Facebook. «Нужно быть уверенным, что система сработает во всех случаях, а не только на нескольких избранных задачах, — сказал он, — а здесь такой уверенности нет». Другие критики отмечали, что нейросеть группы из Facebook не понимает математику, а просто делает очень хорошие догадки.
И всё же они соглашаются с тем, что новый подход будет полезным. Гермундсон и Гибу считают, что нейросети заслужат себе место в ряду программ для решения уравнений следующего поколения – просто ряд будет очень длинным. «Думаю, что они станут одним из множества инструментов», — сказал Гермундсон.
Кроме решения конкретной задачи из символьной математики, работа группы из Facebook служит вдохновляющим доказательством работоспособности принципа и его возможностей. «Математиков в целом очень впечатлит, если эти технологии позволят им решить задачи, недоступные до этого людям», — сказал Андерс Хансен, математик из Кембриджского университета.
Ещё одно вероятное направление использования нейросетей, которое стоит изучить – разработка автоматических генераторов теорем. Математики всё чаще ищут способы использовать ИИ для генерации новых теорем и доказательств, хотя «лучшие из них пока ещё не демонстрируют прогресса, — сказал Лампл. – Пока мы изучаем этот вопрос».
Шартон описывает, по меньшей мере, два способа, которыми их подход может помочь развить генераторы теорем. Во-первых, нейросеть может служить чем-то вроде ассистента математика, помогая разбираться с существующими задачами посредством поиска закономерностей в известных теоремах. Во-вторых, машина могла бы выдавать список потенциально доказуемых результатов, которые математики могли пропустить. «Мы считаем, что если она с интегрированием справляется, то и с доказательствами должна справиться», — сказал он.
Приложение, помогающее в поиске доказательств, может стать отличным подспорьем, и даже выйти за пределы того, что описывала команда из Facebook. Один из распространённых способов опровергнуть теорему – найти контрпример, показывающий, что она неверна. Когда-нибудь нейросети окажутся идеально подходящим для этой задачи инструментом: они будут искать неожиданные способы вставлять палки в колёса.
Ещё одна нерешённая задача, в решении которой такой подход может помочь, связана с наиболее неприятным аспектом нейросетей: никто не понимает, как они работают. С одной стороны в нейросеть входят обучающие данные, а с другой выходят предсказания, но что происходит в середине – конкретный процесс, позволяющий нейросети выдавать такие хорошие догадки – остаётся критически важным открытым вопросом.
Символьная математика, с другой стороны, определённо менее загадочная вещь. «Мы знаем, как работает математика, — сказал Шартон. – Используя определённые математические проблемы в качестве проверки того, где машины справляются, а где – нет, мы можем разобраться в том, как работают нейросети».
Вскоре они с Ламплом планируют начать подавать своим сетям на вход математические выражения и отслеживать, как их программа реагирует на небольшие изменения в этих выражениях. Разметка того, как изменения во входных данных изменяют выходные, может помочь раскрыть процесс работы нейросети.
Заремба считает, что такое понимание потенциально может помочь нам научить нейросети рассуждать, и реально понимать вопросы, на которые они ищут ответы. «В математике достаточно легко изменить данные и посмотреть, насколько хорошо справляется нейросеть, когда выражение меняется. Мы можем научиться рассуждать, а не просто получать ответ, — сказал он. – И тогда у нас появятся огромные возможности».
- «Нейросетевой калькулятор для сложения и вычитания не очень больших чисел»
- «Идея, взятая из физики, помогает ИИ работать в высших измерениях»
- «Почему требования к ИИ объясниться могут только ухудшить ситуацию»
Mathematica 3.0: борьба за лидерство
Интерфейс Аналитические расчеты Численные методы Математические функции Графика и звук Программирование Стандартные дополнения Профессиональные приложения Сравнение программ Mathematica и Maple Определенные недостатки Заключение Коротко о продукте Едва исчезли со страниц
Едва исчезли со страниц журналов восторженные отзывы на новую версию математического пакета Maple V 4.0 компании Maple Waterloo, как компания Wolfram Research представила не менее интересный продукт — Mathematica 3.0.
Немного истории для тех, кто недостаточно хорошо знаком с этой программой.
Она разработана компанией Wolfram Research Inc., основанной известным математиком и физиком Стефаном Вольфрамом, одним из создателей теории сложных систем. Первая версия программы, появившаяся в 1988 г., стала новым словом в автоматизации математических расчетов.
Mathematica отличается охватом широкого круга задач, так как ее разработчики задались целью объединить все известные математические методы, использующиеся для решения научных задач, в унифицированном и согласованном виде, включая аналитические и численные расчеты.
За основу был взят специально разработанный язык символьного программирования, который способен оперировать очень широким спектром различных объектов с применением небольшого числа базисных конструкций.
Однако программа не приобрела большой популярности из-за того, что ее сложно было освоить и невозможно работать без использования объемной документации. Только в 1991 г., после выхода в свет второй версии, в которой разработчики устранили многие ошибки предыдущей версии, а также применили более дружелюбный интерфейс и включили подсказки по встроенным функциям, программа начала быстро завоевывать популярность. А к моменту выхода Mathematica 3.0 уже было зарегистрировано более миллиона постоянных пользователей программы.
Mathematica дает возможность специалистам решать большое количество достаточно сложных задач, не вдаваясь в тонкости программирования. Благодаря этому программа получила широкое распространение в таких областях, как физика, биология, экономика. Программа также применяется как для выполнения, так и для оформления инженерных проектов.
Mathematica является важным инструментом при разработке программного обеспечения. Она может быть модернизирована самим пользователем, так как относится к открытым программным продуктам. Была разработана примерно сотня профессиональных приложений, расширяющих возможности системы применительно к конкретным областям деятельности.
Программа Mathematica наряду с программами Maple, MatLab и MathCad применяется в качестве базисной для построения курса математики во многих высших как технических, так и гуманитарных учебных заведениях. Несколько периодических изданий и более двухсот книг посвящено этой программе.
Интерфейс
Программа состоит из двух частей — ядра, которое, собственно, и производит вычисления, выполняя заданные команды, и интерфейсного процессора, который определяет внешнее оформление и характер взаимодействия с пользователем и системой. Основной рабочий документ программы — тетрадь, в которой пользователь записывает все выкладки. Вид рабочей тетради на экране монитора зависит от интерфейсного процессора, реализация которого для разных платформ несколько отличается.
Пользовательский интерфейс программы Mathematica 3.0 сначала кажется несколько примитивным: инструментальная панель — это просто строка меню, а отдельное окно документа выглядит как бы подвешенным. Кроме того, на инструментальной панели отсутствуют кнопки для выполнения часто повторяемых операций, которые были в предыдущей версии.
Однако впечатление примитивности интерфейса сразу же исчезает, когда выясняется, что можно подключать настраиваемые кнопочные палитры, которых в программе имеется больше десятка. С их помощью можно выполнять различные функции, а часть кнопок соответствуют специальным символам. Всего в программе более 700 математических, языковых и других символов. При нажатии на кнопки с символом последний переносится в рабочий документ на указанное курсором место. Другие кнопки палитры соответствуют наименованиям ряда функций программы, которые при выборе вводятся в командную строку. При нажатии кнопки алгебраических преобразований предварительно выделенное алгебраическое выражение трансформируется в соответствии с названием выбранной команды, например упрощается командой Simplify[].
Программа позволяет применять различные стили для оформления документа на экране и вывода его на печать, причем в новой версии стилей может быть значительно больше, чем в предыдущей. Для их изменения предусмотрена специальная палитра.
Программа дает возможность отображать математические символы с достаточно высоким полиграфическим качеством в тексте на экране, в командах, а также при выводе на печать. Увеличено количество опций форматирования всего текста и его частей. Возможно создание гипертекстовых связей.
Рабочую тетрадь можно сохранять в HTML-формате, а также в формате полиграфического языка LaTex и некоторых других.
Усовершенствована и расширена система подсказок, имеется интерактивный доступ к полному тексту электронной версии документации, которая состоит из инструкции пользователя, справочника по стандартным дополнениям, учебника для начинающих и демонстрационных файлов.
Меню окна справки очень хорошо продумано, что позволяет получить информацию различными путями. Можно получить справку по интересующей теме или функции, а также просмотреть текст всех документов, содержащих введенное ключевое слово. Файлы справки снабжены гипертекстовыми ссылками.
Аналитические расчеты
Умение проводить аналитические расчеты — одно из главных достоинств этой программы, автоматизирующей математические расчеты. Mathematica умеет преобразовывать и упрощать алгебраические выражения, дифференцировать и вычислять определенные и неопределенные интегралы, вычислять конечные и бесконечные суммы и произведения, решать алгебраические и дифференциальные уравнения и системы, а также разлагать функции в ряды и находить пределы. Кроме того, Mathematica имеет стандартные дополнения для аналитических расчетов, которые будут подробнее рассмотрены ниже.
Следует заметить, что возможности каждой новой версии программы качественно возрастают. В версии 3.0 программы команда упрощения алгебраических выражений Simplify[] дополнена значительно более мощной командой FullSimplify[], которая позволяет обрабатывать математические выражения, включающие специальные функции.
Расширен спектр математических выражений, для которых аналитически находятся неопределенные и определенные интегралы. Появилась также возможность задавать область изменения параметров в подынтегральных выражениях, что позволяет интегрировать многие выражения, которые в общем случае не имеют первообразной.
Значительно возросло число различных (конечных и бесконечных) сумм и произведений, вычисляемых аналитически, а также аналитически решаемых обыкновенных дифференциальных уравнений и уравнений в частных производных.
Из числа других улучшений можно выделить повышение скорости решения задач линейной алгебры.
Численные методы
Для тех задач, которые невозможно решить аналитически, Mathematica 3.0 предлагает большое количество эффективных алгоритмов для проведения численных расчетов. Она позволяет находить конечные и бесконечные суммы и произведения, вычислять интегралы, решать алгебраические и дифференциальные уравнения и системы, задачи оптимизации (линейного программирования, нахождения экстремумов функций), а также задачи математической статистики.
При численном решении математических задач наряду с правильностью алгоритмов расчета особую роль играет точность вычислений. В Mathematica 3.0 реализован адаптивный контроль точности, основанный на выборе внутренних алгоритмов, позволяющих ее максимизировать. В этой версии программы повышена эффективность одно- и многомерной интерполяции, оптимизированы алгоритмы численного решения дифференциальных уравнений.
Добавлены многократное численное интегрирование, а также численное дифференцирование. Оптимизированы алгоритмы нахождения экстремумов. Поддерживается арифметика интервалов.
Осуществлен независимый от конкретной компьютерной платформы механизм ввода и вывода числовых данных без потери точности.
Математические функции
Mathematica 3.0 позволяет включать в расчеты все известные элементарные функции, а также сотни специальных встроенных функций. Разумеется, пользователь программы может вводить и свои функции как для применения в течение одного сеанса работы, так и для постоянного использования.
В новой версии 3.0 добавлены интегралы Френеля, интегральные гиперболические синус и косинус, обратная функция ошибок, гамма- и бета-функции, дополнительная функция Вейерштрасса, эллиптические и родственные с ними функции, функции Матье. Введены числа и полиномы Фибоначчи. В качестве примера на рис. 2 показано, как Mathematica оперирует с функцией Френеля FresnelC(x).
Графика и звук
Mathematica позволяет строить двух- и трехмерные графики различных типов: в виде точек и линий на плоскости, поверхностей, а также контурные, градиентные (dencity plot), параметрические. Имеется большое количество опций оформления и настройки, например изменение подсветки, цвета, размеров и точки наблюдения.
Mathematica выполняет построение графика в три этапа. На первом создается множество графических примитивов, на втором они преобразуются в независимое от вычислительной платформы описание на языке PostScript, а на третьем это описание переводится в графический формат для той системы, на которой установлена Mathematica. Если первые два этапа осуществляет ядро программы, то последний — интерфейсный процессор.
Mathematica позволяет также строить серии картинок, которые могут быть воспроизведены как анимация. Программа содержит функции, позволяющие создавать и воспроизводить различные звуки, а также воспринимает и может анализировать некоторые типы стандартных звуковых файлов.
На рис. 7 показан вид команды, создающей звук. После выполнения команды в рабочей тетради появляется картинка, представляющая собой график синусоид, входящих в аргумент команды, а звуковой файл (так же как и файл анимации) запоминается в документе. Это позволяет сразу после открытия документа воспроизвести их без повторного вычисления.
В новой версии 3.0 программы заметно улучшено текстовое оформление графиков. Теперь заголовки и текст меток на графиках могут быть представлены с достаточно высоким полиграфическим качеством (правильное изображение математических символов). Возможно также включение в сам график форматированных текстовых строк.
Ячейки рабочего документа теперь автоматически конвертируются в EPS, TIFF, GIF и другие графические форматы.
Программирование
Входной язык Mathematica содержит большое количество конструкций, позволяющих для каждой конкретной задачи выбрать оптимальный метод программирования. Помимо обычного процедурного программирования с применением условных переходов и операторов цикла, имеется еще несколько методов:
В каждой конкретной программе пользователь может одновременно применять несколько методов или даже все перечисленные.
Серьезным недостатком предыдущей версии программы было неэкономное использование памяти компьютера. В третьей версии программы типичные операции ядра осуществляются быстрее и с меньшим использованием памяти, чем во второй. Для ускорения загрузки уменьшено количество первоначально загружаемых в память функций.
Введены новые мощные операторы символьного программирования и усовершенствованные операторы для манипулирования строками.
Появилась возможность компилировать вычисляемые выражения и процедуры. При этом скорость вычислений может быть сравнима со скоростью такой же процедуры, написанной на языке Си или Фортране, или даже выше.
В приведенном на рис. 8 примере выполняется 10 000-кратный цикл сначала без компиляции, а затем после нее. В обоих случаях при помощи функции Timing[] вычисляется время выполнения программы для значения переменной t=0,37.
Стандартные дополнения
Mathematica 3.0 содержит 11 стандартных дополнений, включающих подпрограммы (пакеты), значительно расширяющие функциональные возможности в таких областях, как алгебра, аналитические и численные расчеты, графика, дискретная математика, теория чисел и статистика. Стандартные дополнения могут загружаться по мере надобности. Для загрузки пакета используется соответствующее название, включающее имя дополнения и имя пакета из данного дополнения. Рассмотрим подробнее стандартные дополнения.
Алгебра
В это дополнение входят пакеты, позволяющие задавать различные алгебраические поля и оперировать в них, а также несколько пакетов, расширяющих функциональность программы при оперировании с полиномами и нахождении их корней. В новой версии оно пополнилось пакетами для решения некоторых типов алгебраических неравенств и симметричных полиномов и, кроме того, добавлена Гамильтонова алгебра кватернионов и элементы полей Галуа.
Вычисления
Это дополнение содержит пакеты, позволяющие расширять возможности программы при вычислении интегралов, нахождении пределов, решении дифференциальных уравнений и задач линейной алгебры в различных системах координат, а также включает команды преобразования Фурье и Лапласа, обобщенные функции, вариационные методы. В новой версии оно пополнилось пакетом для нахождения полных интегралов и дифференциальных инвариантов нелинейных уравнений в частных производных.
Дискретная математика
Дополнение предлагает примерно 200 функций для проведения исследований в области комбинаторики и теории графов; вычислительную геометрию, которая содержит несколько геометрических функций для непараметрического анализа данных; пакеты для оперирования с функциями от целых чисел, в частности для решения рекуррентных уравнений, выполнения преобразований.
Графика
Дополнение включает 21 пакет. Оно значительно расширяет возможности программы при построении графиков и анимаций. Введены новые типы: логарифмические графики, графики тел вращения, полярные, контурные, матричные графики, трехмерные параметрические, двух- и трехмерные графики векторных полей, графики неявно заданных функций и др. Появилась возможность отображать ортогональные проекции трехмерных графических объектов на координатные плоскости.
Добавлены также функции для графического представления комплексных функций.
Геометрия
Геометрическое дополнение содержит пакеты, включающие функции для задания параметров правильных многоугольников и многогранников, а также функции, обеспечивающие вращение на плоскости и в пространстве.
Линейная алгебра
В это дополнение входят функции для создания ортогональных векторных базисов, решения матричных уравнений, разложения матриц и выполнения других операций с матрицами. Оно включает пакеты Cholesky, GaussianElimination, MatrixManipulation, Orthogonalization, Tridiagonal.
Теория чисел
Функции, относящиеся к теории чисел, широко представлены в ядре программы Mathematica, например PrimePi, EulerPhi, MoebiusMu и DivisorSigma.
Дополнение теории чисел расширяет этот список функций. В него включены пакеты для доказательства простоты чисел, разложения целых чисел на множители. Имеются функции для аппроксимации действительных чисел рациональными и полиномов с действительными корнями, полиномами с целыми коэффициентами. Пользуясь дополнениями, можно найти разложение действительного числа в бесконечную дробь или произвольное разложение действительного числа разбить на непериодическую и периодическую части. Поддерживаются также такие функции теории чисел, как Ramujan и Siegel.
В новой версии появились возможности для нахождения базисных элементов для произвольных алгебраических расширений рациональных чисел.
Приближенные вычисления
Это дополнение расширяет список встроенных функций программы Mathematica для приближенных численных расчетов. Оно содержит средства подгонки функциями (полиномом, сплайнами, тригонометрическими), численные версии некоторых аналитических функций ядра (ND, NLimit, NResidue, NSeries), функции численного интегрирования (CauchyPrincipalValue, ListIntegrate, IntegrateInterpolationFunction), аппроксимации отношением полиномов, поддержки численного решения дифференциальных уравнений (BesselZeros, Butcher, OrderStar), а также альтернативный способ нахождения корней (FindRoot) с использованием методов интервалов или интерполяции.
В последнюю версию введены пакеты для численного нахождения вычетов и разложений комплексных функций.
Статистика
Это дополнение включает методы статистической обработки данных. В нем содержатся функции известных непрерывных и дискретных статистических распределений.
В новую версию добавлены пакеты подгонки и сглаживания данных, классической и робастной описательной статистики, линейной и нелинейной регрессии с диагностикой.
Утилиты и разное
Дополнение «утилиты» содержит команды для контроля времени вычислений, оптимизации использования памяти и др. К «разному» относятся те функции, которые трудно классифицировать, в частности функции, расширяющие аудиовозможности системы, — модуляция звуковых волн и музыкальные гаммы. В «разное» входят также календарные данные, физические постоянные, единицы измерения физических величин, свойства химических элементов и, кроме того, различные географические данные и даже функции для построения географических карт.
Пакеты и отдельные функции из них могут загружаться по мере необходимости. Если же какой-либо пакет часто используется, то его можно инициализировать при загрузке ядра программы.
В новой версии доступна полная документация по стандартным дополнениям в интерактивном режиме.
Профессиональные приложения
Для программы Mathematica помимо стандартных дополнений разработано большое количество профессиональных приложений — пакетов, расширяющих возможности программы в специальных областях. Библиотека предлагаемых корпорацией Wolfram Research профессиональных приложений в настоящее время содержит 23 различных пакета, из которых 18 разработано корпорацией, а остальные — другими разработчиками. Причем эта библиотека очень быстро пополняется.
Перечислим только некоторые из профессиональных приложений, демонстрирующих их разнообразие: Structural Mechanics, Experimental Data Analyst, Time Series, Finance Essentials, Fuzzy logic, Optica, Electrical Engineering, Scientific Astronomer, Joy of Mathematica, Industrial Thermics.
Сравнение программ Mathematica и Maple
Имеет смысл сравнить программу Mathematica 3.0 компании Wolfram Research Inc. и близкую по функциям Maple V 4.0 компании Maple Waterloo.
Обе программы автоматизируют как аналитические, так и численные расчеты. По диапазону задач, выполняемых аналитически, Mathematica 3.0 несколько отстает от программы Maple V 4.0, однако по диапазону и скорости выполнения численных задач во многих случаях превосходит ее благодаря использованию компилятора.
Программа Maple имеет более удобный интерфейс, в частности имеет широкие возможности для непосредственной настройки многих параметров построения графиков. Зато Mathematica может создавать звуки и оперировать с ними.
Обе программы поддерживаются на многих вычислительных платформах. Однако если в программе Maple это достигается одинаковостью языка команд, то в программе Mathematica — независимостью рабочей тетради от конкретной вычислительной платформы. Язык программирования Mathematica, на мой взгляд, более строгий и функциональный, чем объясняется широкое использование программы для создания профессиональных приложений. Программа Maple расширяется в основном за счет пополнения библиотеки пользователей (Share library).
Обе программы широко используются в качестве дополнения к другим приложениям, например, программа Maple — для выполнения расчетов в программах Scientific Word (программа Scientific WorkPlace) и Microsoft Word (MathOffice), а также в качестве инструмента аналитических расчетов в программах MatLab и MathCad.
С другой стороны, программа Mathematica включает модуль MathLink, позволяющий подключать ее к интерфейсам других программ. Так, в настоящее время распространяются как независимые коммерческие продукты MathLink-дополнения к программам Microsoft Excel, Microsoft Word, Xmath и некоторым другим программам. Кроме того, в самой программе есть языковые возможности для самостоятельной организации взаимодействия Mathematica с другими программами.
Обе программы имеют электронную поддержку пользователей через Internet, которые могут получить информацию по новым статьям и книгам, по улучшенным версиям, новым функциям и приложениям. Однако программа Mathematica позволяет также создавать электронные публикации для Internet, а ее документы, как уже упоминалось, могут конвертироваться в формат HTML.
Как видим, программа Mathematica по одним параметрам превосходит программу Maple, а по другим отстает от нее. Какие же рекомендации в этом случае можно дать потенциальным пользователям?
Обе программы могут быть использованы как для преподавания, так и для серьезной профессиональной работы. И все-таки, работая с Maple, получаешь больше удовольствия. Возможно, это связано с тем, что интерфейс программы Maple более дружелюбный, а язык команд более привычный и легче усваивается. Поэтому пользователь быстро начинает получать результаты, что его и вдохновляет. Для изучения математики или для выполнения проектов, требующих в основном аналитических расчетов, я бы порекомендовал программу Maple. Для выполнения проектов, требующих преимущественно численных расчетов, а также для создания профессиональных приложений, по моему мнению, предпочтительнее программа Mathematica.
Определенные недостатки
Можно, конечно, назвать недостатком неумение решить ту или иную задачу, однако я так не считаю. Программа, как, впрочем, и все направление автоматизации математических расчетов, находится в развитии. Поэтому те задачи, которые невозможно решить в ней сегодня, будут решаться в следующих версиях. Важно то, что программа многое умеет делать лучше других, т. е. находится в числе лидеров. Но есть и некоторые недостатки другого рода.
Эти недостатки были замечены при тестировании пробной версии (Trial version). Возможно, в коммерческом продукте они будут устранены.
Заключение
Основная идея разработчиков программы Mathematica — объединить все известные понятия и методы математики в единую универсальную систему. В идеале эта система должна представлять собой базу данных по всем существующим математическим понятиям, методам, доказательствам, решениям и алгоритмам; уметь для каждой конкретной задачи выбрать оптимальный метод решения, аналитический или численный; функционировать на любой вычислительной платформе. Такая идея, несмотря на всю свою амбициозность, весьма плодотворна, причем не только с чисто коммерческой точки зрения — увеличения количества потенциальных потребителей. Действительно, было бы очень удобно решать совершенно различные математические задачи, обращаясь к одной и той же системе. При этом отпадает необходимость в поиске и освоении новых программ. Если вычислительные возможности компьютера не достаточны для решения той или иной задачи, то написанная программа без всяких переделок переносится на более мощный компьютер.
Если продолжить эти рассуждения и предположить, что большинство специалистов, исходя из универсальности Mathematica, будут в основном применять именно эту программу, а высшие учебные заведения — преподавать математику на ее основе, то очень скоро появится универсальный язык современной математики и программирования, что будет способствовать взаимопониманию специалистов.
Нужно сказать, что компания Wolfram Research Inc. достигла определенного успеха в продвижении этой идеи, а также сумела увлечь ею многих разработчиков и преподавателей. Об этом свидетельствует быстро растущее число профессиональных приложений и использующих ее учебных заведений. Возможно, в будущем на вопрос: «Что такое математика?» — последует ответ: «Это программа, разработанная компанией Wolfram Research Inc». Остается пожелать, чтобы когда-нибудь это действительно произошло.
Борис Михайлович Манзон — к.ф.-м.н., тел.: (095) 208-36-10.
Коротко о продукте
Программа распространяется на CD-ROM Платформа: ОС X/UNIX, NeXT, Macintosh и Windows. Системные требования для Windows-версии: процессор 386 или выше, 8-Мбайт ОЗУ (рекомендуется 16 Мбайт), операционная система Windows 95 или Windows NT 3.51 и выше, дисковое пространство при запуске с жесткого диска: 24 Мбайт (рекомендуется 83 Мбайт). Программа может запускаться также непосредственно с CD-ROM. Wolfram Research Inc., тел. поставщика в Москве: (095) 232-00-23, e-mail: root@sofline.msk.su
