В MATLAB є можливість виведення досить складних математичних формул, що містять індекси, дробу, коріння, інтеграли і суми, матриці і спеціальні математичні знаки, з використанням інтерпретаторів TeX і LaTeX.
У довідковій системі MATLAB відповідна інформація розміщена в наступних розділах:
- MATLAB: Handle Graphics Property Browser, в правому вікні треба клацнути по посиланню Axes, потім по Core Objects і потім по Text і подивитися на значення властивостей Interpreter і String текстового об'єкта.
- MATLAB: Graphics: Annotating Graphs: Adding Text Annotations to Graphs: Mathematical Symbols, Greek Letters, and TEX Characters - наведено приклад формули, що містить грецькі літери і індекси, зробленої за допомогою інтерпретатора TeX.
- Сторінка з інформацією про функції text, перейти до якої можна, наприклад за допомогою команди >> doc text.
Зміна шрифтів, накреслення, розмірів, індекси, різні знаки. Інтерпретатор TeX.
Формула є текстовим об'єктом, який створюється за допомогою функції text (див. Розміщення текстового об'єкта, визначення його розмірів і положення). Як простий приклад розглянемо розміщення підпису на графіку функції sin x 2; e -x. побудованому на відрізку [0, 5] за допомогою fplot, яка сама підбирає значення аргументу для отримання найбільш точного графіка:
Для створення текстового об'єкта можна застосувати функцію text, вказавши в її вхідних аргументах координати текстового об'єкта по осі абсцис 2.5 і по осі ординат 0.15, рядок тексту 'sin (^ 2) ^>' і розмір шрифту 20 пунктів.
На осі виводиться формула, а не в точності ті символи, які були задані в текстовому рядку
Так відбувається тому, що за замовчуванням функція text інтерпретує деякі символи і поєднання як теги формату TeX (через те, що властивість Interpreter текстового об'єкта має значення 'tex') і відповідним чином форматує виведений на осі текст так, як вказано на малюнку нижче .
В даному випадку команда \ it привела до форматування курсивом того тексту, який разом з \ it укладений у фігурні дужки, а символ ^ дозволив створити верхні індекси: двійку і вміст фігурних дужок -, з якого вийшло -x. Для створення нижнього індексу слід скористатися знаком підкреслення, наприклад послідовність команд:
призводить до наступного результату:
Якщо нижнім або верхнім індексом розмічається більше одного символу, то всі вони повинні бути укладені у фігурні дужки, порівняйте:
'A_ij ^ (1)' призводить до невірного результату
форматування курсивом застосовано до всієї рядку, а додаткова розмітка жирним шрифтом діє тільки всередині фігурних дужок
Крім зміни форматування, можливо змінювати шрифт і його розмір. Для цього призначені наступні команди:
- \ Fontname - зміна шрифту. У фігурні дужки вводиться назва одного з шрифтів, встановлених на комп'ютері.
- \ Fontsize - зміна розміру шрифту. За замовчуванням, вказане в фігурних дужках значення сприймається в пунктах, тому що властивість FontUnits текстового об'єкта за замовчуванням має значення 'points' (пункти). Якщо властивість FontUnits текстового об'єкта встановлено в інше значення, то будуть використовуватися відповідні одиниці виміру (див. Розміщення текстового об'єкта, визначення його розмірів і положення).
В одному текстовому об'єкті можна відформатувати текст кількома шрифтами. При цьому слід врахувати, що область дії однієї команди \ fontname поширюється до іншої команди \ fontname або до кінця рядка. Наприклад, вказівка у вхідних аргументах функції text наступного рядка
призводить до появи текстового об'єкта, в якому перша половина тексту відформатована Моноширинний шрифтом Courier, а друга - пропорційним шрифтом Arial
Зрозуміло, можна поєднувати перераховані вище команди зміни шрифту, його накреслення і розміру, своєчасно вказуючи необхідні параметри форматування тексту. Наприклад, завдання в функції text наступного рядка
дозволяє отримати такий текст:
в якому розмір символів спочатку 40пт. потім 10пт. застосовані шрифти Courier і Arial, а так само курсив і жирний шрифт.
Для підписів осей, заголовка і легенди, які робляться функціями xlabel, ylabel, zlabel і title, також можна використовувати верхній і нижній індекс, зміну накреслення, шрифту і його розміру, наприклад:
Так відбувається тому, що підписи осей і заголовок, створювані функціями високорівневою графіки xlabel, ylabel, zlabel і title, в дійсності є текстовими об'єктами, що належать осях в ієрархії графічних об'єктів MATLAB (див. Розділ Тема і підписи осей це текстові об'єкти, нащадки осей) .
У вікні досить перейти за гіперпосиланням String і подивитися таблицю. У ній наведено команди TeX, що починаються зі знака зворотної косої межі, для виведення наступних символів:
- великих і малих грецьких літер \ alpha, \ beta, \ gamma, \ Gamma, \ Sigma, \ Pi і т.д.
- різних стрілок \ leftarrow, \ uparrow, \ rightarrow і т. д.
- символів перетину, об'єднання і приналежності \ cup, \ cap, \ in і т.д.
- знаків "більше або дорівнює", "менше або дорівнює", "не дорівнює" \ geq, \ leq, \ neq
- кванторів \ forall, \ exists
- інших знаки
За допомогою цих знаків можна набирати нескладні формули, наприклад вказівка в функції text рядки
призводить до наступного тексту:
яка вже виглядає не дуже красиво.
Великі можливості для набору математичних формул надає інтерпретатор LaTeX.
Для того, щоб MATLAB використовував інтерпретатор LaTeX замість інтерпретатора TeX, слід встановити властивості Interpreter текстового об'єкта значення 'latex' і укладати виносну формулу (тобто формулу, яка записується на окремому рядку) зліва і справа в знаки $$ (два йдуть підряд знака долара). Якщо формула повинна бути в тексті, то її слід оточувати зліва і справа знаками $. Встановити значення властивості текстового об'єкта можна за допомогою функції set (див. Наприклад розд. Розміщення текстового об'єкта, визначення його розмірів і положення), або прямо при його створенні функцією text в її вхідних аргументах, як і буде робитися в усіх наступних прикладах.
Детальну інформацію про роботу в пакеті LaTeX можна почерпнути, наприклад, з таких джерел:
Ми розглянемо основні прийоми набору найбільш часто зустрічаються формул за допомогою інтерпретатора LaTeX пакета MATLAB.
Суми, твори, інтеграли, дробу, межа, коріння.
Попередня формула, отримана в інтерпретаторі TeX,
може бути виведена в такий спосіб (у всіх прикладах використовується figure для створення нового графічного вікна, оскільки, якщо осі існують, то низкоуровневая функція text виводить новий текстовий об'єкт на них, не видаляючи наявні на них графічні об'єкти, що призводить до накладання об'єктів):
У цьому прикладі використані наступні команди:
- команда \ sum для виведення знака підсумовування, в якій верхній і нижній межі підсумовування вказуються за допомогою знаків верхнього і нижнього індексів (^ і _);
- команда \ frac для отримання дробу.
Якщо чисельник і знаменник дробу містять більше одного символу (або чисельник не цифри), то їх слід укладати в фігурні дужки. Надалі, для уникнення плутанини, будемо завжди використовувати фігурні дужки, тобто наприклад замість \ frac12 писатимемо \ frac. Послідовність команд:
приводить до формули
в якій символи x і цифри мають різні розміри в залежності від того, в який з дробів вони знаходяться.
Для того, щоб розмір символів в дробу, що стоїть в знаменнику в попередній формулі, збігався з розміром інших символів в цій формулі, слід використовувати команду \ displaystyle, що поміщається перед командою \ frac, як це зроблено в наступному прикладі
Для написання інтегралів використовується команда \ int, однак вказівка меж за допомогою знаків _ і ^ призводить до того, що межі розташовані не зверху і знизу від знака інтеграла (як для суми), а правіше нього:
Якщо ж потрібно розташувати верхній і нижній межі інтегрування строго зверху і знизу по відношенню до знаку інтеграла, то необхідно додати команду \ limits відразу після команди \ int, наприклад:
робить формулу, яка займає трохи більше місця по вертикалі, в порівнянні з попередньою, але виглядає дещо красивіше:
Крім звичайного знака інтеграла є ще знак для контурного інтеграла, який виводиться за допомогою команди \ oint, наприклад:
виводить інтеграл по контуру:
Зрозуміло, для того, щоб символ Г знаходився знизу, а не праворуч від знака інтеграла, слід відразу після \ oint застосувати команду \ limits, як і в попередньому прикладі.
На відміну від інтегралів, межі підсумовування за замовчуванням вказуються над і під знаком суми. Якщо ж потрібно розташувати їх праворуч від знака підсумовування, то слід вказати команду \ nolimits, наприклад:
забезпечує необхідний результат
Для виведення знака межі застосовується команда \ lim, яка дозволяє задати підпис під нею за допомогою знака нижнього індексу:
Команди для інших символів, що допускають завдання меж, приклади їх використання і виходить результат приведені в наступній таблиці.
Знак квадратного кореня виводиться за допомогою команди \ sqrt, а саме подкоренное вираз полягає в фігурні дужки, наприклад:
створює вираз, до якого входять квадратного кореня
Якщо ж потрібно отримати корінь заданого ступеня, то значення ступеня вказується в квадратних дужках після команди \ sqrt, а вже після неї йде подкоренное вираз, взяте в фігурні дужки, наприклад:
Різні дужки і обмежувачі змінного розміру.
Дужки, набрані у формулі, не змінюють свого розміру в залежності від того, що вони оточують, наприклад команди
призводять до не дуже красивою формулі
Дужки або обмежувачі (наприклад, знак модуля) можуть змінювати свої розміри автоматично, для чого слід використовувати команди \ left і \ right в поєднанні з потрібними дужками або обмежувачами, наприклад:
призводять до тієї ж формулою, що і в попередньому прикладі, яка виглядає набагато краще.
Виникає питання, як виводити фігурні дужки, які використовуються в LaTeX з метою обмеження певної групи символів, які наприклад, повинні стати верхнім або нижнім індексом у формулі або верхнім або нижньою межею суми або інтеграла. наступне звернення
приведе до висновку попередження в командне вікно про неможливість інтерпретувати рядок Warning: Unable to interpret TeX string. Missing delimiter (. Inserted). а сам текстовий об'єкт не буде містити формули. Замість символів фігурних дужок цього слід вказати команди \<и \>, тобто
приведе до правильного результату
Крім круглих, квадратних і фігурних дужок, доступні також і інші обмежувачі, в тому числі вертикальні рисочки для модуля і норм, які наведені в таблиці нижче разом з прикладами їх використання і получающимся результатом.
Часто потрібно поставити тільки один обмежувач, розмір якого підбирається автоматично. Для цього так само використовується комбінація команд \ left і \ right, і замість одного обмежувача ставиться крапка, наприклад:
призводить до появи праворуч від дробу знака вертикальної риси:
Тригонометричні, гіперболічні функції і логарифми
Для тригонометричних, гіперболічних функцій і логарифмів передбачені спеціальні команди:
оскільки за прийнятими правилами вони повинні набиратися прямим шрифтом. Наприклад команда \ sin і текст sin призводять до різних результатів, причому перший є правильним, оскільки за замовчуванням латинські букви виводяться курсивом
Якщо ж потрібно набрати не tan, а tg, як це прийнято в російській літературі, то доведеться вдатися до зміни шрифтів.
Для установки прямого шрифту при роботі з інтерпретатором LaTeX слід використовувати команду
приводить до формули
в якій не вистачає невеликого пробілу після знака тангенса. Для того установки пробілу можна діяти двома способами:
- або встановити його за допомогою спеціальних команд (пробіл в рядку '$$ x $$' перед x не приведе до бажаного результату), які описані в розд. Установка інтервалів в формулах;
- або скористатися командою \ mathop наступним чином: '$$ \ mathop> x $$', тоді вийде стандартний пробіл між ім'ям функції і її аргументом, такий же, як робиться за замовчуванням в інших функціях:
Зміна шрифтів для інтерпретатора LaTeX
При використанні інтерпретатора LaTeX, команди \ rm, \ bf і \ it, які міняли накреслення в TeX, працювати не будуть. Замість них застосовуються інші команди, одна з них, \ mathrm, використовувалася в попередньому розділі Тригонометричні, гіперболічні функції і логарифми для отримання прямого шрифту. Інші команди наведені в таблиці разом з прикладами і получающимся результатом.
Установка інтервалів в формулах
Як правило, інтервали в формулах ставляться автоматично і результат виглядає добре, однак іноді доводиться вдаватися до ручного встановлення інтервалів. Наприклад, у формулі
краще зробити невеликий інтервал перед dx скориставшись командою установки пробілу \, (коса риска і кома) наступним чином '$$ \ int_ ^ x \, dx $$'
Для завдання інтервалів різної ширини існує кілька команд:
- \ Quad - інтервал, довжина якого збігається з шириною букви M;
- \ Qquad - інтервал, рівний 2-розум \ quad;
- \, - інтервал, рівний 1/6-ї \ quad;
- \: - інтервал, рівний 2/9-м \ quad;
- \; - інтервал, рівний 5/18-им \ quad;
- \! - зменшення інтервалу на 1/6-у \ quad.
Горизонтальні дужки, лінії і стрілки
Для отримання горизонтальних ліній, дужок і стрілок над і під формулами слід використовувати такі команди, укладаючи виділяється текст в фігурні дужки і поміщаючи його після команди:
- \ Overline - риса над формулою
- \ Underline - риска під формулою
- \ Overrightarrow - стрілка над формулою, спрямована вправо
- \ Overleftarrow - стрілка над формулою, спрямована вліво
- \ Overbrace - горизонтальна фігурна дужка над формулою
- \ Underbrace - горизонтальна фігурна дужка під формулою
Для дужок можна використовувати і підпис до неї, задаючи її індексом. наприклад,
Аналогічно за допомогою верхнього індексу робиться підпис для верхньої горизонтальної дужки.
Формули в тексті і текст в формулах.
Якщо формули повинні бути в тексті, то їх слід оточувати знаками $ з кожного боку, наприклад
Для отримання такого ж знака інтеграла, як в виносної формулою, досить поставити в останній формулі два знака долара $$ без пробілу зліва і справа:
У цьому відмінність інтерпретатора LaTeX в MATLAB від класичного LaTeX, в якому формула, укладена в два знака долара $$ стає виносної, тобто розміщується на окремому рядку документа.
Текст у формулі вводиться за допомогою команди \ mbox, сам текст поміщається після неї в фігурних дужках, причому прогалини в тексті враховуються. Наприклад, наступна послідовність операторів
призводить до того ж самого результату:
Якщо не використовувати команду \ mbox, то символи тексту буде інтерпретуватися як змінні, виводитися курсивом без пробілів і вийде негарно:
Розташування формул в кілька рядків і висновок матриць
Зрозуміло, висновок формул в кілька рядків можливий за допомогою створення декількох текстових об'єктів за допомогою функції text. Однак, використання одного текстового об'єкта і інтерпретатора LaTeX дає певні переваги, наприклад при наборі матриць. Для виведення формули в кілька рядків слід використовувати оточення array, в якому зазначаються: спосіб вирівнювання (c - по центру, l - по лівому краю і r - по правому краю), роздільники в рядку символом і кінці рядків символами \\
призводять до появи двох формул (одного текстового об'єкта), в яких вирівнювання зроблено за знаком рівності
При включеному інтерпретаторі LaTeX, функція text вимагає в якості значення властивості String рядок або строкову змінну, яку можна сформувати з кількох рядків для того, щоб звернення до функції text не цікавило занадто довгий рядок. Попередній текстовий об'єкт можна було вивести, розбивши рядок з формулою на дві частини, записавши їх в змінні s1 і s2 і зчепити їх потім, наприклад за допомогою квадратних дужок або функції horzcat:
Розташування формул одного текстового об'єкта в кілька рядків дозволяє використовувати дужку, автоматично змінює розмір, для запису рівнянь у вигляді системи, наприклад:
призводить до системи
Оточення array дозволяє набирати і більш складні формули, наприклад матриці. Оператори
виводять в графічне вікно наступну матрицю
В результаті виходить один текстовий об'єкт, який дозволяє застосувати до нього властивості текстового об'єкта, описані в розділі Зміна виду текстового об'єкта, наприклад можна змінити колір фону і шрифту
Як приклад автоматизації цього процесу для матриць, що містять числові значення, наведемо просту функцію mat2tex, яка по заданій матриці формує відповідний рядок для інтерпретатора LaTeX (занадто довгі рядки інтерпретатор MATLAB не може обробити):
Її вхідні аргументи: A - матриця і fmt - рядок з форматом подання числа або кількість значущих цифр, наприклад:
Перетворення формули в малюнок (об'єкт Image)