Телефонуйте » (+38) 096 227 41 41

Повний варіант мови Wolfram доступний для Raspberry Pi і поставляється в комплекті з операційною системою Raspbian. Програми можна запустити з командного рядка RPi або у фоновому режимі, а також через інтерфейс блокнота на RPi. На RPi мова Wolfram підтримує прямий програмний доступ до стандартних портів RPi і пристроїв.

Mathematica є інструментом програмування для обчислень, які використовуються в науці, математиці, обчислювальній техніці та в інших  технічних галузях. Комерційний пакет обчислень вперше випущений в 1988 році, але його можете безкоштовно використовувати на RPi з ОС Raspbian.

Запуск Mathematica

Двічі клацніть значок Mathematica на робочому столі або відкрийте його з меню додатків, щоб запустити. Ви побачите заставку з червоним логотипом Mathematica під час завантаження програми:

Після завантаження побачите два вікна. Це інформаційне вікно Wolfram:

і блокнот Mathematica:

Програмування в Mathematica

Клацніть у вікні блокнота і введіть:

Print["Hello world"]

Натисніть Shift + Enter; буде запущена команда і виведено на екрані "Hello world", як:

Ви можете виконувати математичні обчислення, наприклад:

In[2]:= 2 + 2
Out[2]= 4

In[3]:= 16254 / 32
Out[3]= 8127 / 16

In[4]:= 1024 * 32
Out[4]= 32768

Редагування в блокноті

Ви можете повернутися раніше введений команду, натиснувши її або переміщуючи курсор редагування за допомогою клавіатури. Ви можете видалити, відредагувати або додати щось і натисніть Shift + Enter, щоб виконати нову команду на своєму місці.
Ви можете зберегти блокнот і повернутися до нього пізніше, відправити його другу, опублікувати в Інтернеті, або навіть передати його як домашнє завдання! Просто зайдіть в меню File > Save As у вікні блокнота.
Коли відкриваєте збережений блокнот, будуть показані всі попередні записи, зокрема всі входи і виходи. Ви можете виконати кожну клітину знову з Shift + Enter, або все відразу, вибравши з меню Evaluation > Evaluate Notebook.

Змінні

Ви можете зберегти результати обчислень в змінних:

radius = 5;
diameter = 2 * radius;
circumference = 2 * Pi * radius;
area = Pi * radius^2;

Зверніть увагу на крапку з комою в кінці кожного рядка, яка пригнічує вихідний друк.

Символічні значення

Зверніть увагу на використання вбудованого символу Pi, який містить символічне значення π. Це означає, що якщо ви передаєте його в рівняння, то зберігається посилання на істинне значення π, а не перетворюється на десяткове і не округляється:

In[19]:= Pi
Out[19]: π

In[20]:= tau = 2 * Pi
Out[20]: 2 π

Щоб отримати десяткове подання символічного значення, використайте функцію N:

In[5]:= N[Pi]
Out[5]: 3.14159

За замовчуванням кількість значущих цифр рівна 6, але можна задати більше, вказавши кількість через другий аргумент:

In[6]:= N[Pi, 10]
Out[6]: 3.141592654

Зверніть увагу, що це число цифр, а не знаків після коми; тому 3 входить в підрахунок, залишаючи 9 десяткових знаків після коми.

Списки

Можна зберігати колекції даних у списку:

nums = {1, 2, 3, 5, 8}
people = {"Alice", "Bob", "Charlotte", "David"}

Діапазон

Функція Range може бути використаний для отримання списку чисел:

Range[5] (*Числа від 1 до 5*)
Range[2, 5] (*Числа від 2 до 5*)
Range[2, 5, 2] (*Числа від 2 до 5 з кроком 2*)

Таблиці

Функція Table є способом отримання значення у списку з функцією:

Table[i ^ 2, {i, 10}] (*Квадрати чисел від 1 до 10*)
Table[i ^ 2, {i, 5, 10}] (*квадрати чисел від 5 до 10*)
Table[i ^ 2, {i, nums}] (*Квадрати чисел зі списку nums*)

Цикли

Ви можете запустити цикл кілька разів, або через більше пунктів у списку, з Do:

Do[Print["Hello"], {10}] (*Друк "Hello" 10 разів*)
Do[Print[i], {i, 5}] (*Друк чисел від 1 до 5*)
Do[Print[i], {i, 3, 5}] (*Друк чисел від 3 до 5*)
Do[Print[i], {i, 1, 5, 2}] (*Друк чисел від 1 до 5 з кроком 2*)
Do[Print[i ^ 2], {i, nums}] (*Друк квадратів чисел зі списку nums*)

Функція допомоги

Ви можете отримати допомогу по використанню функції, додавши знак питання (?) перед ім'ям функції і натиснувши Shift + Enter:

Функція пошуку

Ви можете також шукати для функцій, ввівши частину імені функції, яку шукаєте, і «зірочки». Просто почніть з (?) і додайте зірочку (*) наприкінці як шаблон:

In[15]:= ?Device*

Ви можете використовувати декілька символів підстановки:

In[16]:= ?*Close*

Коментарі

Як видно з попередніх прикладів, ви можете залишити в сценаріях коментарі (примітки, які ігноруються в програмі) за допомогою амперсантів ((&)) і зірочок (*):

Print["Hello"] (*Print "Hello" to the screen*)

Доступ до командного рядка Wolfram

Програми командного рядка

Ви також можете отримати доступ до мови Wolfram (/usr/bin/wolfram) з командного рядка, ввівши wolfram в терміналі, або двічі клацнувши значок Wolfram на робочому столі. Це дасть тільки текстове (без графіки) середовище програмування з інтерфейсом у стилі In[x] / Out[x], але без інтерактивної функціональності блокнота. Функції Mathematica будуть працювати очікувано як і раніше:

Ви знайдете інтерфейс командного рядка більш швидким при використанні через відсутність графічної обробки, необхідної для виконання блокноту, однак йому не вистачає інтерактивності графічного інтерфейсу і швидкого виводу.
Для виходу натисніть Ctrl + D.
Аналогічно, mathematica - інтерфейс блокнота для Mathematica (/usr/bin/mathematica)

Запуск скриптів з Wolfram

Ви можете написати програму, зберегти її як звичайний файл (зазвичай файл з розширенням .m або .wl) і виконати сценарій з командного рядка, додавши прапор -script.
Для запуску test.m:

wolfram -script test.m

Для виконання сценарію при запуску відредагуйте файл /etc/rc.local, в якому вкажіть команди.

Графіки

Ви можете побудувати цікаві речі, використовуючи Mathematica, наприклад, намалювати Бетмена:

Або побудувати echidnahedron за допомогою наступної команди:

Graphics3D[{Opacity[.8], Glow[RGBColor[1,0,0]], EdgeForm[White], Lighting -> None, PolyhedronData["Echidnahedron", "Faces"]}]

Підключення пристроїв та зовнішніх сервісів

Команди для підключених пристроїв:

DeviceRead  ▪ DeviceReadList  ▪ DeviceReadTimeSeries  ▪ DeviceReadBuffer  ▪ ...

DeviceWrite  ▪ DeviceExecute  ▪ BinaryRead

Стандартні пристрої:

"GPIO" - доступ на читання/запис для всіх виводів GPIO
"Serial" - читання/запис для вбудованих і зовнішніх послідовних з'єднань
"RaspiCam" ▪ "AudioOut"

Додаткові пристрої:

"UltimateGPS"  ▪ "PiWeather"  ▪ ...

Зовнішні сервіси:

SendMail - відправити електронний лист з RPi
SendMessage - відправити твіт або інше повідомлення

GPIO

Ви можете отримати доступ до виводів GPIO з Mathematica, використовуючи функції DeviceWrite і DeviceRead.
Щоб отримати доступ до виводу GPIO вам потрібно запуститися від root. Щоб зробити це, виконайте sudo wolfram з терміналу (це буде працювати з командного рядка середовища wolfram), або команду sudo mathematica &, щоб запустити блокнот Mathematica від root.
Наступна команда включає контакт 14 GPIO (з використанням нумерації BCM для контактів):

DeviceWrite["GPIO", 14 -> 1]

Наступна команда вимикає вивід 14:

DeviceWrite["GPIO", 14 -> 0]

Ви також можете прочитати статус вхідного пристрою GPIO (для перевірки, чи натиснута, наприклад,  кнопка) з DeviceRead, аналогічним чином:

button = DeviceRead["GPIO", 14]

Тепер змінна button повинна містити 0 для виключеного виводу або 1 для включеного.

Приклад використання мови Wolfram для керування світлодіодами наведений в статті.

Камера

Ви можете робити знімки з камери, використовуючи функцію DeviceRead. По-перше, підключити камеру, як це робили на попередні заняттях.
Для того, щоб отримати нерухоме зображення з камери, введіть наступну команду:

img = DeviceRead["RaspiCam"]

Потім, щоб зберегти зображення у вигляді файлу, використайте Export і вкажіть шлях та змінну, що містить збережене зображення:

Export["/home/pi/img.jpg", img]

(За матеріалами raspberrypi.org)

Новини

  • Модуль SMARC запускає Android або Linux на Snapdragon 820
    Модуль SMARC запускає Android або Linux на Snapdragon 820

    SMART 2.0 "Snapdragon 820 SOM" iWave має 3 Гб LPDDR4, 32 Гб eMMC, Wi-Fi та Bluetooth, а також вхідні/вихідні виводи, включаючи GbE, HDMI 2.0, MIPI-CSI, USB 3.0 та PCIe. Комп'ютер розміром 82x50 мм працює на ОС Android Snailbone або вище, з наступною підтримкою Linux. Snapdragon 820 об'єднує чотири 14-нм Cortex з технологією FinFET - два на частоті 2,15 ГГц, а два з 1,6 ГГц, які намагаються імітувати високоякісні Cortex-A72. Крім того, SoC оснащений 624 МГц Adreno 530 GPU, Hexagon 680 DSP і 14-розрядним ISP для Spectra. Snapdragon 820 SOM підтримує кодування H.265 4K@60 та кодування 4K@30.

    in Новини

Записатися на курс