Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ № 6 Вывод математических формул на график.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
370.69 Кб
Скачать

Расположение формул в несколько строк и вывод матриц

Разумеется, вывод формул в несколько строк возможен при помощи создания нескольких текстовых объектов при помощи функции text. Однако, использование одного текстового объекта и интерпретатора LaTeX дает определенные преимущества, например при наборе матриц. Для вывода формулы в несколько строк следует использовать окружение array, в котором указываются: способ выравнивания (c - по центру, l - по левому краю и r - по правому краю), разделители в строке символом & и концы строк символами \\

\begin{array}{lll}

формула & формула & формула \\

формула & формула & формула \\

формула & формула & формула

\end{array}

Например, команды

figure

hT=text('Position', [0.1 0.5], 'Interpreter', 'latex', 'String',...

'$$\begin{array}{lll} 2x+3y&=&5 \\ 4x+y&=&5 \end{array}$$', 'FontSize', 20)

приводят к появлению двух формул (одного текстового объекта), в которых выравнивание сделано по знаку равенства

При включенном интерпретаторе LaTeX, функция text требует в качестве значения свойства String строку или строковую переменную, которую можно сформировать из нескольких строк для того, чтобы обращение к функции text не занимало слишком длинную строку. Предыдущий текстовый объект можно было вывести, разбив строку с формулой на две части, записав их в переменные s1 и s2 и сцепить их затем, например при помощи квадратных скобок или функции horzcat:

figure

s1 = '$$\begin{array}{lll} 2x+3y&=&5 \\';

s2 = '4x+y&=&5 \end{array}$$';

text('Position', [0.1 0.5], 'Interpreter', 'latex', 'String', [s1 s2], 'FontSize', 20)

Расположение формул одного текстового объекта в несколько строк позволяет использовать скобку, автоматически изменяющую размер, для записи уравнений в виде системы, например:

figure

s1='$$\left\{\begin{array}{lll} 2x+3y&=&5 \\'

s2='4x+y&=&5 \end{array}\right.$$'

hT=text('Position', [0.1 0.5], 'Interpreter', 'latex', 'String',...

[s1 s2], 'FontSize', 20)

приводит к системе

Окружение array позволяет набирать и более сложные формулы, например матрицы. Операторы

figure

s1='$$A=\left(\begin{array}{llll} a_{11}&a_{12}&\ldots&a_{1n}\\'

s2='a_{21}&a_{22}&\ldots&a_{2n}\\'

s3='\vdots&\vdots&\ddots&\vdots\\'

s4='a_{m1}&a_{m2}&\ldots&a_{mn}'

s5='\end{array}\right)$$'

s=[s1 s2 s3 s4 s5]

hT=text('Position', [0.1 0.5], 'Interpreter', 'latex', 'String', s, 'FontSize', 20)

выводят в графическое окно следующую матрицу

В результате получается один текстовый объект, который позволяет применить к нему свойства текстового объекта, описанные в разделе Изменение вида текстового объекта, например можно изменить цвет фона и шрифта

set(hT,'Color','y','BackgroundColor','k')

В качестве примера автоматизации этого процесса для матриц, содержащих числовые значения, приведем простую функцию mat2tex, которая по заданной матрице формирует соответствующую строку для интерпретатора LaTeX (слишком длинные строки интерпретатор MATLAB не может обработать):

function s=matr2tex(A,fmt)

[m,n]=size(A);

s='$$\left(\begin{array}';

s=[s '{' repmat('l',1,n) '}'];

for i=1:m-1

for j=1:n-1

s=[s num2str(A(i,j),fmt) '\,' '&'];

end

s=[s num2str(A(i,j),fmt) '\\'];

end

for j=1:n-1

s=[s num2str(A(m,j),fmt) '\,' '&'];

end

s=[s num2str(A(m,n),fmt) '\end{array}\right)$$'];

Ее входные аргументы: A - матрица и fmt - строка с форматом представления числа или количество значащих цифр, например:

figure

A=rand(5)

s=matr2tex(A,'%11.2f')

hT=text('Position', [0.1 0.5], 'Interpreter', 'latex', 'String',s, 'FontSize', 15)

приводит к