Wolfram Research, Champaign — Wolfram Language, Mathematica, Wolfram Alpha и др. / Статьи / Хабр
Перевод доклада Стивена Вольфрама, прочитанного им на фестивале SXSW 2014.
Оригинальный текст вы можете найти здесь.
Две недели назад я выступал с речью на конференции SXSW в Остине, Техас. Эта статья является немного доработанными тезисами доклада (это конспект текста, включающий демонстрации, от которых пришлось отказаться в процессе выступления):
Итак, на этот час запланировано довольно много.
В целом, мне бы хотелось рассказать историю, происходящую со мной в течение последних 40 лет, которая начинает приносить удивительные результаты только сейчас. Я имею ввиду что мы практически можем наблюдать эти результаты сегодня. Я хотел бы впервые представить вам весь спектр технологий, являющийся довольно-таки значительным результатом этих сорокалетних трудов. И я думаю что это достаточно важно.
Мне всегда нравилось представлять программы вживую. Но сегодня я собираюсь рискнуть больше обычного и продемонстрировать многие вещи, находящиеся еще на стадии тестирования. Надеюсь, что хотя бы большая часть из них работает.
Итак, основная задача в том чтобы начать относиться к вычислениям серьезно. Понять идею вычислений как таковых, а затем создать технологию, которая позволит внедрить их повсюду — после чего посмотреть к чему это приведет.
Можно сказать, я гонялся за этой идеей 40 лет. Я уже давно балансирую на стыке науки и технологий — создаю все более масштабные строительные блоки и строю из них все более высокую башню. И каждые несколько лет мне удается увидеть куда она будет расти дальше. По-моему, получается здорово. Однако, в последние несколько лет случилось нечто удивительное — своего рода великая унификация, которая ведет к технологическому Кембрийскому взрыву. И сегодня я впервые вам частично её представлю.
Но, для начала, немного истории. 40 лет назад я был 14-летним юнцом, который впервые прикоснулся к компьютеру (он тогда еще был размером со стол).
Вернемся в 1981-й год. В этом году случилось нечто восхитительное для 21-летнего ученого — я превратил все это в свой первый продукт и свою первую компанию. Важно то, что это заставило меня осознать — программные продукты могут стимулировать интеллектуальное мышление.
В итоге, я понял, что в то время как с математикой все хорошо, её фундаментальная концепция нуждается в обобщении. Я начал изучать всю вселенную всевозможных формальных систем, которая по сути является всеобщей вычислительной вселенной возможных программ. Я ставил небольшие эксперименты — как бы направлял свой вычислительный телескоп на части этой вселенной и смотрел что там было. То что я увидел, было потрясающе. Ниже я покажу вам несколько простых программ.
Аналоги Wolfram Alpha — 5 похожих программ и сервисов для замены
Аналоги Wolfram Alpha — 5 похожих программ и сервисов для замены186
SpeedCrunch
SpeedCrunch — бесплатный, быстрый и высокоточный алгебраический калькулятор.
- Бесплатная
- Windows
- Mac OS
SpeedCrunch — это бесплатный, быстрый и высокоточный алгебраический калькулятор, находящийся в свободном доступе, с интуитивно понятным интерфейсом и широким списком функций, в том числе:
58
fxSolver
Программа для решения математических задач онлайн, уравнений и построения графиков.
- Бесплатная
- Онлайн сервис
Онлайн программа для решения математических задач, библиотека уравнений, калькулятор для построения графиков, а также помощник в вопросах науки и техники.
37
Calculator
Калькулятор предоставляет простые и сложные математические функции в красиво оформленном приложении.
- Бесплатная
- Android
- Онлайн сервис
Калькулятор предоставляет простые и сложные математические функции в красиво оформленном приложении.
19
Soulver
Умный блокнот со встроенным калькулятором.
- Платная
- iPhone
- Mac OS
Soulver — это умный блокнот со встроенным калькулятором. Он дает мгновенные ответы на любые вычисления, которые он находит в вашем тексте. Это лучший способ для работы, чем с традиционным калькулятором, и более легкий инструмент для быстрых вычислений, чем электронная таблица.
Grapher
С Grapher вы можете составить график уравнений и наборов данных и визуализировать результаты на вашем Mac в реальном времени.
- Бесплатная
- Mac OS
С Grapher вы можете составлять графики уравнений и наборов данных и визуализировать результаты на своем Mac в режиме реального времени. Grapher отображает алгебраические отношения, как явные, так и неявные, в 2D и 3D. Вы можете использовать различные системы координат и выбирать из широкого спектра математических функций, включая дифференциальные уравнения, параметрические кривые и многое другое. Когда вы закончите, вы можете экспортировать свою графику в виде анимации, которую можно воспроизвести в QuickTime Player.
Математика: Mathematica и Wolfram|Alpha Pro | Математика
- Доступ для преподавателей и сотрудников
- Доступ для студентов
- Учебники
- Обучение с помощью Mathematica
- Исследования с Mathematica
Получите доступ к Mathematica Desktop, Mathematica Online и Wolfram|Alpha Pro.
![](/800/600/http/allweb2me.com/wp-content/uploads/2015/06/wolf1.jpg)
Mathematica в настоящее время установлена в следующих местах:
- Компьютерные классы —
Все общие или общедоступные лаборатории. Во многих ведомственных лабораториях также установлена система Mathematica. - Компьютерные кластеры —
Лицензия Mathematica Колледжа Олоне может использоваться для распределенных вычислений. Если вы заинтересованы в использовании Mathematica для параллельных вычислений в выделенном кластере или в распределенной сетевой среде, сообщите об этом Полу Фишу из Wolfram Research.
Чтобы запросить Mathematica Desktop, Mathematica Online и Wolfram|Alpha Pro, следуйте приведенным ниже инструкциям.
- Преподаватели и сотрудники
- Создать учетную запись (только для новых пользователей) :
- Перейдите на user.wolfram.com и нажмите «Создать учетную запись»
- Заполните форму, используя адрес электронной почты @ohlone.
edu , и нажмите «Создать Wolfram ID»
- Проверьте свою электронную почту и нажмите на ссылку, чтобы подтвердить свой идентификатор Wolfram ID
- Запросить доступ к продукту:
- Mathematica Desktop
- Для школьных машин:
- Заполните эту форму, чтобы запросить ключ активации
- Щелкните ссылку «Страница сводки по продукту», чтобы получить доступ к лицензии
- Нажмите «Получить загрузки» и выберите «Загрузить» рядом с вашей платформой
- Запустите программу установки на своем компьютере и введите ключ активации в ответ на запрос .
- Для личной машины:
- Заполните эту форму, чтобы запросить у Wolfram лицензию для домашнего использования.
- Для школьных машин:
- Mathematica Online
- Заполните эту форму, чтобы запросить доступ
- Перейдите в Mathematica Online и войдите в систему, чтобы получить доступ к Mathematica Online
- Вольфрам|Альфа Про
- Заполните эту форму, чтобы запросить доступ
- Перейдите в Wolfram|Alpha и нажмите «Войти», чтобы получить доступ к Wolfram|Alpha Pro
- Mathematica Desktop
- Создать учетную запись (только для новых пользователей) :
- Студенты
- Создать учетную запись (только для новых пользователей) :
- Перейдите на user.
wolfram.com и нажмите «Создать учетную запись»
- Заполните форму, указав свой адрес электронной почты, и нажмите «Создать Wolfram ID»
- Проверьте свою электронную почту и нажмите на ссылку, чтобы подтвердить свой идентификатор Wolfram ID
- Перейдите на user.
- Запросить доступ к продукту:
- Mathematica Desktop
- Для личной машины:
- Заполните эту форму, чтобы запросить ключ активации
- Щелкните ссылку «Страница сводки по продукту», чтобы получить доступ к лицензии
- Нажмите «Получить загрузки» и выберите «Загрузить» рядом с вашей платформой
- Запустите программу установки на своем компьютере и введите ключ активации в ответ на запрос .
- Для личной машины:
- Mathematica Online
- Заполните эту форму, чтобы запросить доступ
- Перейдите в Mathematica Online и войдите в систему, чтобы получить доступ к Mathematica Online
- Вольфрам|Альфа Про
- Заполните эту форму, чтобы запросить доступ
- Перейдите в Wolfram|Alpha и нажмите «Войти», чтобы получить доступ к Wolfram|Alpha Pro 9.
0004
- Mathematica Desktop
- Создать учетную запись (только для новых пользователей) :
Учебные пособия
Mathematica
Первые три учебных пособия отлично подходят для новых пользователей и могут быть назначены учащимся в качестве домашнего задания для изучения Mathematica во внеурочное время.
- Практическое знакомство с Mathematica (видео) —
Продолжайте изучать Mathematica, наблюдая за этим состоящим из нескольких частей скринкастом, который научит вас основам: как создать свой первый блокнот, расчеты, визуализации, интерактивные примеры и многое другое. . - Практическое руководство по Wolfram Mathematica и программированию на языке Wolfram Language (книга) —
Изучайте Mathematica в удобном для вас темпе от авторов с более чем 50-летним опытом работы с Mathematica — с практическими примерами, упражнениями в конце главы , а также советы авторов, которые знакомят вас с широкими возможностями Mathematica с упором на простоту использования. - Краткое введение в Mathematica и язык Wolfram Language для студентов, изучающих математику (онлайн-книга) —
Используйте это учебное пособие, чтобы узнать о решении математических задач в языке Wolfram Language — от основ арифметики до интегрального исчисления и не только. - Что нового в Mathematica 11 —
Содержит список новых функций в Mathematica 11, а также ссылки на документацию и примеры этих новых функций, включая 3D-печать, обработку звука, машинное обучение и нейронные сети, а также обработку текста и языка. - How To Topics —
Доступ к пошаговым инструкциям, начиная от создания анимации и заканчивая базовой информацией о синтаксисе. - Ресурсы Mathematica —
Просмотрите большую коллекцию учебных материалов и вспомогательных ресурсов Wolfram.
Mathematica Online
- Практическое руководство по началу работы с Mathematica Online (видео) —
В этой серии видеороликов представлены пошаговые инструкции по началу работы с Mathematica Online — от создания первой записной книжки с текстом и расчетами., визуализации и интерактивные примеры, чтобы поделиться своей записной книжкой с другими для совместной работы и просмотра через Wolfram Cloud.
Wolfram|Alpha Pro
- Знакомство с Wolfram|Alpha —
Впервые в Wolfram|Alpha? Совершите экскурсию, чтобы узнать, что вы можете делать с Wolfram|Alpha, и изучить дополнительные функции, которые вы получаете с Wolfram|Alpha Pro.
Преподавание с помощью Mathematica
Mathematica предлагает интерактивный учебный процесс, который помогает учащимся изучать и понимать концепции, а также предоставляет преподавателям инструменты, необходимые для простого создания вспомогательных учебных материалов, заданий и презентаций.
Ресурсы для преподавателей
- Бесплатный видеокурс по системе Mathematica для преподавания и образования —
Узнайте, как сделать свой класс динамичным с помощью интерактивных моделей, изучите возможности вычислений и визуализации в системе Mathematica, которые делают ее полезной для преподавания практически любого предмета в любое время уровень и получить рекомендации по интеграции курса. - Как создать лекционный слайд-шоу-видеоруководство —
Узнайте, как создать слайд-шоу для класса, которое показывает смесь графики, вычислений и красиво отформатированного текста с живыми вычислениями или анимацией. - Демонстрационный проект Wolfram —
Загрузите готовые примеры с открытым кодом из ежедневно растущей коллекции интерактивных визуализаций, охватывающих широкий спектр тем. - Образовательные курсы Wolfram Training —
Доступ к онлайн-курсам и онлайн-курсам по Mathematica, SystemModeler и другим технологиям Wolfram.
Исследование с помощью Mathematica
Вместо того, чтобы требовать разных наборов инструментов для разных задач, Mathematica объединяет крупнейший в мире набор алгоритмов, высокопроизводительные вычислительные возможности и мощный механизм визуализации в одной целостной системе, что делает ее идеальной для академических исследований практически в любых условиях. любая дисциплина.
Ресурсы для исследователей
- Mathematica для университетов Бесплатный видеокурс —
Изучите высокоуровневый и мультипарадигменный язык программирования Mathematica, поддержку параллельных вычислений и архитектур графических процессоров, встроенные функции для специализированных областей применения и несколько вариантов публикации и развертывания для совместного использования вашей работы. - Курсы обучения языку Wolfram — бесплатные видеокурсы —
Узнайте о возможностях языка Wolfram Language, включая основы и концепции программирования, встроенные функции, символьные выражения и советы по улучшению и ускорению кодирования. - Utilizing HPC and Grid Computing Бесплатный видеокурс —
Узнайте, как создавать программы, использующие преимущества многоядерных компьютеров или доступных кластеров. - Приложения для конкретных областей —
Узнайте, какие области Mathematica полезны для конкретных областей.
Получите ответы на свои вопросы за считанные минуты с помощью R и Wolfram Alpha | Илья Эйдлин
Логотип Tidyverse с сайта www.tidyverse.org, логотип Wolfram с сайта https://www.wolfram.com/1. «Быстрые» задачи
Недавно в одной из социальных сетей у меня были дебаты о самом плодовитом возрасте для автора. Здесь, в России, у нас есть два наших самых обожаемых поэта, Александр Пушкин и Михаил Лермонтов, убитые на дуэли в возрасте 30 и 20 лет соответственно. С другой стороны, известный русский писатель Лев Толстой закончил «Воскресение» в свои 70 лет.
Этот вид спора, бессмысленный, но приятный, имеет три основных
особенности:
- В Интернете имеется лишь ограниченная информация по проблеме
- Вам нужен хотя бы приблизительный ответ быстро, чтобы выиграть интернет-войну
- Вопрос хотя бы частично статистический, что означает, что вам нужно получить некоторые данные, чтобы ответить
![](/800/600/http/content.wolfram.com/uploads/sites/35/2013/04/GetReal-2.png)
Оказалось, что примерный ответ можно найти сразу, воспользовавшись славной Wolfram Alpha.
2. Получение данных
Для начала анализа нам необходимо иметь произвольный список книг. Google порекомендовал мне «100 книг века по версии Le Monde»
100 книг века по версии Le Monde — Википедия
100 книг века (французский: Lescent livres du siècle) — это список ста самых запоминающихся книг…
en.wikipedia.org
Я собираюсь очистить список с помощью R, но, конечно, могу использовать язык по вашему выбору. Если вы используете R и по какой-то причине у вас нет tidyverse, установите его, используя приведенный ниже код. Кроме того, вы можете использовать RColorBrewer. Это упрощает выбор цветов для ваших диаграмм.
insatll.packages("tidyverse")
# RColorBrewer не является обязательным. Это просто помогает выбрать цвета для
# ваших диаграмм
insatll.packages("RColorBrewer")
Вы можете загрузить tidyverse в свою среду с помощью библиотеки (tydiverse), но я представлю ее части, которые мы на самом деле собираемся использовать:
# для очистки веб-страниц и работы с xml
библиотека (rvest)
# для аккуратной магии
библиотека (dplyr)
библиотека (tyr)
# аккуратная магия для строк и множителей
library(stringr)
library(forcats)
# результаты построения графика
library(ggplot2)
library(RColorBrewer)
Чтобы получить вики-таблицу, мы можем сделать следующее:
url <- 'https://en.wikipedia .org/wiki/Le_Monde%27s_100_Books_of_the_Century'
# список книг - это первая таблица, которая появляется на странице
table_number <- 1wiki_df <- read_html(url) %>%
# выбирать только таблицы
html_nodes(css = "table ") %>%
# оставить только первую таблицу со страницы
.[[table_number]] %>%
# преобразование в data.frame
html_table()head(wiki_df)
Хорошо, dataframe содержит всего четыре строки кода. Есть только небольшая проблема со столбцом «Год». Приведем все годы к последнему году публикации:
wiki_df <- wiki_df %>%
mutate(YearFinal = as.integer(case_when(
nchar(Year) > 7 ~ str_sub(Year, -4, -1), # 1899-1901 => 1901
nchar(Год) > 4 ~ paste0(str_sub(Год, 1, 2), # 1901-03 => 1903
str_sub(Год, -2, -1)),
ИСТИНА ~ Год)) # 1901 => 1901
Вот и все. Наши данные готовы, и мы собираемся поиграть с Wolfram Alpha.
3. Почему Wolfram Alpha?
С помощью Wolfram Alpha можно задавать вопросы на естественном языке и получать ответы в определенном структурном формате. Давайте сначала рассмотрим это через пользовательский интерфейс:
Wolfram|Alpha: Делаем мировые знания вычислимыми
Ого! Wolfram|Alpha не работает без JavaScript. Пожалуйста, включите JavaScript. Если не знаешь как, то можно найти…
www.wolframalpha.com
Немного информации о Льве Толстом. Скриншот с https://www.wolframalpha.com/Ответом является таблица во втором разделе (ниже «Интерпретация ввода»).
Мы можем попробовать что-то другое:
Скриншот с https://www.wolframalpha.com/Скриншот с https://www.wolframalpha.com/Единообразие ответов по формату дает нам возможность писать повторно используемый код. Также можно использовать Wolfram API. Аккаунт бесплатного уровня позволяет отправлять до 2000 запросов в месяц. Чтобы получить Wolfram ID, следуйте инструкциям на сайте Wolfram.
Wolfram ID — учетная запись Wolfram
Управляйте и обновляйте свои данные и настройки Wolfram ID.
account.wolfram. com
Давайте попробуем. Я попрошу информацию о Толстом через API:
# Просто пример. Не иметь учетных данных в коде в виде текста
app_id <- "your_wolfram_id"
# Изменяющиеся и сохраняемые части вопроса
изменяющиеся <- "Лев Толстой"
сохраняемые <- "год рождения и пол"
# Получение результатов раздел часть
# создать ссылку
wa_url <- paste0("http://api.wolframalpha.com/v2/query?input=",
URLencode(paste(variable, conserved)),
"&appid=", app_id)
# прочитать ответ в формате xml
wa_cont <- xml2::read_xml(wa_url)
# найти узлы открытого текста,
# оставить только вторые разделы (где хранятся результаты)
wa_data <- xml2::xml_find_all(wa_cont, xpath = './ /plaintext')[[2]] %>%
# извлечь текст
xml2::xml_text() %>%
# Начало части Data Wranglin
# разделить по строке
str_split(pattern = "\n", упростить = TRUE) %>%
# транспонировать вектор в истинный
t() %>%
# сформировать табличку
as_tibble() %>%
# вызов единственный столбец 'результат'
setNames("результат") %>%
# разделяется символом ' | ' (по столбцам) с использованием регулярного выражения
, отдельный(результат,
c("переменная", "значение"),
"\\s\\|\\s\\b") %>%
pivot_wider(names_from = variable)
Распечатать результаты:
print(wa_data)# Таблица: 1 × 2
пол `год рождения`
1 мужской 1828
Спорная часть может немного сбивать с толку. Для тех, кто хочет разбить его построчно, есть хороший инструмент https://tidydatatutor.com/vis.html
. Он поможет вам визуализировать, что аккуратные глаголы на самом деле делают с данными.
Тем не менее, нам удалось получить структурированную информацию, задав произвольный вопрос на естественном языке.
4. Собираемся вместе
На данный момент у нас есть список книг и код, который дает ответы на вопросы. Давайте немного улучшим наш код, связанный с wolfram, завернув его в tryCatch, чтобы возвращать NA, если что-то пошло не так, и преобразуем его в векторизованную функцию.
Это ни в коем случае не твердое решение (надеюсь, оно скоро появится, следите за обновлениями), но достаточно, чтобы немного поиграть.
WolframSearch <- function(variing, conserved, app_id) {
# в случае ошибки или предупреждения вернуть нет данных
tryCatch( {
wa_url <- paste0("http://api.wolframalpha.com/v2/query?input=",
URLencode(paste(variable, conserved)),
"&appid=", app_id)
wa_cont <- xml2::read_xml(wa_url)
wa_data <- xml2::xml_find_all(wa_cont, xpath = './/plaintext')[[2]] %>%
xml2::xml_text() %>%
str_split( шаблон = "\n", упростить = ИСТИНА) %>%
t() %>%
as_tibble() %>%
setNames("результат") %>%
отдельный(результат,
c("переменная", "значение"),
"\\s\\|\\s\\b") %>%
pivot_wider(names_from = variable) },# вернуть NA в случае ошибки или предупреждения
warning = function(w) {return(NA) },
error = function(e) {return(NA)})
}#Векторизовать функцию WolframSearch, чтобы использовать ее в каналах.
WolframSearch_v <- Vectorize(WolframSearch)
И теперь мы можем запросить информацию о каждом авторе из вики-списка
Combined_df <- wiki_df %>%
# Создать столбец 'data' с результатами из Wolfram
mutate(data = WolframSearch_v(Author, conserved, app_id)) %>%
# удалить столбец данных
unnest(data) %>%
# удалить нет, если существует
filter(!is.na(`год рождения`) ) %>%
# рассчитать возраст писателя в год публикации "вычесть 0,5, чтобы скорректировать среднее значение для случая, когда, например, у
авторов день рождения приходится на январь, а книга вышла в мае." mutate(Age = YearFinal - as.integer(`год рождения`) - 0.5) %>%
select("Название", "Автор", "Язык", "Пол"="пол", "Возраст")
Сводка:
> сводка(combined_df$Age)
Мин. 1 кв. Медиана Среднее 3-е кв. Макс.
17.50 32.50 40.50 41.62 47.50 75.50
Получается, что известные книги обычно пишутся в конце 30-х — начале 40-х годов. Забавный факт, что он довольно хорошо согласуется с ответом кворы выше, где средний возраст составил 36,2 только из пяти случайно выбранных книг.
5. Построение графиков
Диаграммы — лучший способ сообщить о результатах. Поскольку мы хотим сообщить их за считанные минуты, как сказано в заголовке, давайте, следуя правилу 80/20, создадим относительно простую, но красивую гистограмму ggplot2 9.0015
ggplot(combined_df, aes(x = Age)) +
geom_histogram(aes(y = ..count..), color="darkblue", fill="lightblue", binwidth = 5) +
geom_density(aes( y= ..density.. * nrow(result) * 5), alpha = 0.1, color="darkblue", fill="lightblue") +
theme_classic() +
labs(x = "Возраст", y = " Количество книг",
fill = NULL)
В качестве бонуса давайте рассмотрим, как выборы Le Mondo распределяются по полу и языку автора.