Главная страница

Тема-3-5. Основы работы с математическими пакетами (MathCad)


Скачать 3.25 Mb.
НазваниеОсновы работы с математическими пакетами (MathCad)
Дата28.09.2022
Размер3.25 Mb.
Формат файлаpdf
Имя файлаТема-3-5.pdf
ТипДокументы
#702801
страница12 из 17
1   ...   9   10   11   12   13   14   15   16   17
Тема 3.5. Основы работы с математическими пакетами
Страница 356
int(S, v) — возвращает неопределенный интеграл от S по переменной v .
int(S, a, b) — возвращает определенный интеграл от S с пределами интегрирования от а до b, причем пределы интегрирования могут быть как символьными, так и числовыми.
int(S, v, a, b) — возвращает определенный интеграл от S по переменной v с пределами от а до b.
Пример 7.3.8-1
>> int(sin(x)^3, x)
ans = - l/3*sin(x)^2*cos(x)-2/3*cos(x)
>> int(log(2*x), x)
ans = log(2*x)*x - x
>> int((x^2-2)/(x*3-l), x, l, 2)
ans = -inf
>> int((x^2-2)/(x*3-l), x, 2, 5)
ans = - 2/3*1og(2)+ 2/3*1og(31) + 2/3*3^(l/2)*atan(11/3*3^(l/2)) -...
2/3*log(7) - 2/3*3^(1/2)*atan(5/3*3^(l/2))
>> int([x^3 sin(x) exp(x)], x)
ans = [ l/4*x^4, -cos(x), exp(x)]
>> int(log(sin(x)),x,0,pi/2)
ans = -pi/2*log(2)
>>
С помощью функции int( ) можно вычислять имеющие аналитическое решение сложные интегралы, например с бесконечными пределами (или одним из пределов), а также кратные интегралы.
Пример 7.3.8-2
» int(log(1+exp(-x),x,0,inf)
ans = pi^2/12
» syms x a b
» int(int(int(x^2 + y^2)*z, x, 0, a), y, 0, a), z, 0, a)
ans = 1/3*a^6
>>
3.5.3.3.7 Средства визуализации результатов символьных вычислений
Визулизация функции одной переменой осуществляется при помощи функции ezplot().
1. Графопостроитель – funtool
Команда funtool создает интерактивный графический калькулятор, позволяющий быстро построить две функции одной переменной - f(x) и g(x). Например, одна может задавать собственно функцию, а другая — ее производную. Функции обозначаются как ' f = ' и
' g = ' и после знака равенства можно набрать функции с помощью клавиш калькулятора в его нижней части. С помощью полей 'х = ' и ' а = ' можно задать диапазон изменения переменной х и значение масштабирующего параметра а.
При запуске команды funtool появляются окна для двух функций и окно калькулятора
(рис. 5.3.1). По умолчанию заданы функции f(x) = х и g(x) = 1, предел изменения х от -2π
до и а = 1/2.
Верхний ряд кнопок вычислителя относится только к функции f(x) и задает следующие операторы:
df/dx — символьное дифференцирование f(x);
int f — символьное интегрирование f(x) при наличии замкнутой формы;

Тема 3.5. Основы работы с математическими пакетами
Страница 357
Рис. 7.3.9-1. Внешний вид графопостроителя funtool
simple f – упрощение выражения, если таковое возможно;
num f – выделение числителя рационального выражения;
den f – выделение знаменателя рационального выражения;
1/f – замена f(x) на 1 / f(x);
finv – замена f(x) инверсной функцией.
∂ второй ряд клавиш выполняет операции масштабирования и сдвига f(x) с применением параметра 'а'.
∂ третий ряд клавиш предназначен для осуществления бинарных операций над функциями f(x) и g(x).
∂ четвертый ряд клавиш служит для работы с памятью калькулятора и иных операций:
Insert – помещает текущую функцию в список функций.
Cycle – выполняет текущую функцию из списка.
Delete – удаляет выделенную функцию из списка.
Reset – устанавливает f, g, x, а и fxl i st в исходное состояние.
Help – выводит описание калькулятора.
Demo – запускает демонстрационный пример.
Close – завершает работу с калькулятором.
Благодаря описанным средствам, вычислитель позволяет задать инересующую вас функцию, выполнить ее преобразования (например, дифференцирование и интегрирование)
и, наконец, построить график функции и результатов ее преобразования (рис.5.3.2)

Тема 3.5. Основы работы с математическими пакетами
Страница 358
Рис. 7.3.9-2. Построения графиков некоторых функций
Таким образом, графопостроитель funtool является весьма удобным средством визуализации графиков самых различных функций.
2. Графики поверхностей – ezsurf( ) и ezsurfc( )
Команда ezsurf служит для построения графиков поверхностей, задаваемых функциями двух переменных f(x, у):
ezsurf(f) – построение поверхности f(x,y) с параметрами х и у, меняющимися по умолчанию от -2π до ;
ezsurf(f,domain) – построение поверхностиf(x,y) с пределами изменения х и у, заданными параметром domain;
ezsurf(x,y,z) – построение поверхности, заданной параметрически зависимостями
x(s, t), y(s, t), z(s, t) при s и t, меняющихся в интервале от -2π до ;
ezsurf(x,y,z,[smin, smax, tmin, tmax]) – построение поверхности, заданной параметрически зависимостями x(s, t), y(s, t), z(s, t) при s и t меняющихся в заданном интервале.
Следующий пример показывает действие этой команды:
- Пример 7.3.9-1
>>syms x у
>> ezsurf(rea1(asec(x+i*y)))
>>

Тема 3.5. Основы работы с математическими пакетами
Страница 359
Рис. 7.3.9-3. Пример построения графика поверхности командой ezsurf
Аналогичная по синтаксису записи группа команд ezsurfc( ) строит еще и контурный график поверхности на плоскости, лежащей под поверхностью.
3.5.3.4. М-файлы и программирование средствами MatLab
3.5.3.4.1. Основные понятия и средства программированиям в MatLab
До сих пор мы в основном использовали систему MatLab в режиме непосредственного счета — в
командном режиме
. Однако при решении серьезных задач возникает необходимость сохранения используемых последовательностей вычислений, а также их дальнейшей модификации. Иными словами, существует необходимость
программирования
решения задач.
Это может показаться отходом от важной цели, которая преследуется разработчиками большинства математических систем, — выполнения математических вычислений без использования традиционного программирования. Однако это не так. Выше было показано,
что множество математических задач решается в системе MATLAB без программирования.
С использованием языков высокого уровня для их решения потребовалось бы написать и оттестировать сотни программ.
Практически невозможно предусмотреть в одной, даже самой большой и мощной,
математической системе возможность решения всех задач, которые могут интересовать пользователя. Программирование в системе MatLab является эффективным средством ее расширения и адаптации к решению специфических проблем. Оно реализуется с помощью
языка программирования системы MatLab.
Большинство объектов этого языка, в частности все команды, операторы и функции,
одновременно являются объектами входного языка общения с системой в командном
режиме работы. Так что фактически мы приступили к описанию языка программирования системы MatLab с первых строк данной книги.

Тема 3.5. Основы работы с математическими пакетами
Страница 360
Так в чем же отличие входного языка от языка программирования? В основном — в способе фиксации создаваемых ими кодов. Сессии в командном режиме работы не сохраняются в памяти компьютера (ведение дневника не в счет). Хранятся только определения созданных в ходе их выполнения переменных и функций. А вот программы на языке программирования MatLab сохраняются в виде текстовых
m
-файлов. При этом могут сохраняться как целые программы в виде файлов-программ, так и отдельные программные
модули — функции. Кроме того, важно, что программа может менять структуру алгоритмов вычислений в зависимости от входных данных и данных, создаваемых в ходе вычислений.
С позиций программиста язык программирования системы является типичным
проблемно-ориентированным языком программирования высокого уровня. Точнее говоря, это даже язык сверхвысокого уровня, содержащий сложные операторы и функции,
реализация которых на обычных языках (например, Бейсике, Паскале или Си) потребовала бы много усилий и времени. К таким функциям относятся матричные функции, функции быстрого преобразования Фурье и др., а к операторам — операторы построения разнообразных графиков, генерации матриц определенного вида.
Итак, программами в системе MatLab являются
m
-файлы текстового формата,
содержащие запись программ в виде программных кодов. Язык программирования системы
MatLab имеет следующие средства:
∂ данные различного типа;
∂ константы и переменные;
∂ операторы, включая операторы математических выражений;
∂ встроенные команды и функции;
∂ функции пользователя;
∂ управляющие структуры;
∂ системные операторы и функции;
∂ средства расширения языка.
Тексты программ в системе MatLab пишутся на языке высокого уровня, достаточно понятном для пользователей умеренной квалификации в области программирования. Язык программирования MatLab является типичным интерпретатором.
Интерпретация означает, что MatLab не создает исполняемых конечных программ.
Они существуют лишь в виде
m
-файлов, для выполнения которых необходима среда
MatLab. Однако для программ на языке MatLab созданы компиляторы, транслирующие программы MatLab в коды языков программирования С и C++. Это решает задачу создания исполняемых программ, первоначально разрабатываемых в среде MatLab. Компиляторы для системы MatLab являются вполне самостоятельными программными средствами.
Начальное представление о переменных, встроенных константах и функциях уже было дано в предшествующих главах.
В
MatLab определены следующие основные типы данных, в общем случае представляющих собой многомерные массивы:

single — числовые массивы с числами одинарной точности;

double — числовые массивы с числами удвоенной точности;

char — строчные массивы с элементами-символами;

sparse — наследует свойства double, разреженные матрицы с элементами-числами удвоенной точности;

сеll — массивы ячеек; ячейки, в свою очередь, тоже могут быть массивами;

struct — массивы структур с полями, которые также могут содержать массивы;

function_handle — дескрипторы функций:

int32, uint32 — массивы 32-разрядных чисел со знаком и без знаков;

int16,uint16 — массивы 16-разрядных целых чисел со знаком и без знаков;

Тема 3.5. Основы работы с математическими пакетами
Страница 361

int8, uint8 — массивы 8-разрядных целых чисел со знаками и без знаков.
Каждому типу данных можно соотнести некоторые характерные для него операции,
называемые методами. Поскольку в иерархии типов данных сверху находятся данные типа
array
, это значит, что все виды данных в MatLab являются массивами.
Язык программирования системы MatLab вобрал в себя почти все средства,
необходимые для реализации различных технологий программирования:

процедурного;

операторного;

функционального;

логического;

структурного (модульного);

объектно-ориентированного;

визуально-ориентированного.
В основе
процедурной,
операторной
и
функциональной
технологии программирования лежат процедуры, операторы и функции, используемые как основные объекты языка. Эти типы объектов присутствуют в MatLab. Логическое программирование реализуется в MatLab с помощью логических операторов и функций.
Наиболее ярко в MatLab представлены идеи структурного программирования.
Подавляющее большинство функций и команд языка представляют собой вполне законченные модули, обмен данными между которыми происходит через их входные параметры, хотя возможен обмен информацией и через глобальные переменные.
Программные модули оформлены в виде текстовых
m
-файлов, которые хранятся на диске и подключаются к программам по мере необходимости. Важно отметить, что в отличие от многих языков программирования, применение тех или иных модулей не требует предварительного объявления, а для создания и отладки самостоятельных модулей MatLab
имеет все необходимые средства. Подавляющее большинство команд и функций системы
MatLab поставляется в виде таких модулей.
Объектно-ориентированное программирование также широко представлено в системе MatLab. Оно особенно актуально при программировании задач графики. Что качается визуально-ориентированного программирования, то в MatLab оно представлено в основном в пакете моделирования заданных блоками устройств и систем Simulink.
Здесь необходимо отметить, что для языка системы MatLab различие между
командами (выполняемыми при вводе с клавиатуры) и программными операторами
(выполняемыми из программы) является условным. И команды, и программные операторы могут выполняться как из программы, так и в режиме прямых вычислений.
В общем виде функция преобразует одни данные в другие. Для многих функций характерен возврат значений в ответ на обращение к ним с указанием списка входных
параметроваргументов. Например, говорят, что функция sin(x) в ответ на обращение к ней возвращает значение синуса аргумента х. Поэтому функцию можно использовать в арифметических выражениях, например 2*sin(x+1). Для операторов (и команд), не возвращающих значения, такое применение обычно абсурдно.
Важное фактором является двойственность операторов и функций. Многие операторы имеют свои аналоги в виде функций. Так, например, оператор «+» имеет аналог в виде функции sum(). Команды, записанные в виде Command argument нередко имеют форму записи и в виде функции Command(' argument') .
Указанная двойственность лежит в основе выбора между процедурным и функциональным подходами к программированию, каждый из которых имеет своих поклонников и противников и может (в той или иной мере) подходить для решения различных классов задач. При этом переход от одного подхода программирования к другому

Тема 3.5. Основы работы с математическими пакетами
Страница 362
возможен в пределах одной программы и происходит настолько естественно, что большинство пользователей даже не задумывается над тем, каким же подходом (или стилем)
программирования они преимущественно пользуются.
Имеющиеся в языке MatLab управляющие структуры: условных операторы
if...
else...elseif...end, case, циклы for...end и while...end, похожи на те, которые используются в языках Бейсик и Паскаль .
Программирование простых задач в среде
MatLab очень напоминает программирование на языке Bаsic. Во многих случаях программы на языке Bаsic можно почти дословно перевести на язык системы, учтя небольшие отличия в синтаксисе этих языков.
3.5.3.4.2. m-файлы, программ и функций
Итак, мы установили, что работа в командном режиме (сессия) не является программированием. Внешним атрибутом последнего в MatLab служит задание последовательности действий по программе, записанной в виде
m
-файла. Для создания
m
-
файлов может использоваться как редактор, встроенный в MatLab, так и любой текстовый редактор, поддерживающий формат ASCII. Подготовленный и записанный на диск
m
-файл
с соответствующем именем становится частью системы, и его можно вызывать как из командной строки, так и из другого
m
-файла. Имеется два типа
m
-файлов: файлы-
программы и файлы-функции. Важно, что в процессе своего создания они проходят синтаксический контроль с помощью встроенного в систему MatLab редактора/отладчика
m
-файлов.
Файл-программа, именуемый также Script-файлом, является просто записью последовательности команд без входных и выходных параметров. Он имеет следующую структуру:
-Имя_файла
% Основной комментарий
% Дополнительный комментарий
Тело файла с любыми выражениями
Файлы-программы имеют следующие особенности:

они не имеют входных и выходных аргументов;

работают с данными из рабочей области;

в процессе выполнения не компилируются;

представляют собой зафиксированную в виде файла последовательность операций, полностью аналогичную той, что используется в сессии.
Основным комментарием является первая строка текстовых комментариев, а дополнительным - последующие строки комментариев. Это связано с тем, что основной комментарий выводится при выполнении команд lookfor и help имя_каталога. Полный комментарий выводится при выполнении команды help Имя_файла. В качестве примера рассмотрим файл-программу
PlotSin и пример вызова ее

Тема 3.5. Основы работы с математическими пакетами
Страница 363
-Пример_5_3_2_1
% Построение графика синусоиды линией красного цвета
% с масштабной сеткой в интервале [xmin.xmax]
x=xmin:0.1:xmax;
plot(x.sin(x).'r')
grid on
Пример 5.3.2-1
>> xmin=-1;
>> xmax=1;
>> Пример_5_3_2_1;
>>
Первые две строки файла Пример_5_3_2_1 – это комментарий, остальные – тело файла. Знак % в комментариях должен начинаться с первой позиции строки. В противном случае команда help name_файла не будет воспринимать комментарий и возвратит сообщение вида
No help comments found in-name.m.
Обратите внимание на то, что такой файл нельзя запустить без предварительной подготовки, сводящейся к заданию значений переменным xmin и хmах, которые используются в теле файла. Это следствие первого свойства файлов-программ - они работают с данными из рабочей области. Переменные, используемые в файлах-программах,
являются глобальными, т. е. они действуют одинаково в командах сессии и внутри программного блока, которым является файл-сценарий. Поэтому заданные в сессии значения переменных используются и в теле файла. Имена файлов-программ нельзя использовать в качестве параметров функций, поскольку файлы-программы не возвращают значений.
Можно сказать, что файл-программа – это простейшая программа на языке программирования MatLab .
Результаты работы Примера 5.3.2-1. приведены на рис. 5.3.2-1.
Рис.5.3.2-1. Результат работы файла-программы Пример_5_3_2_1
m
-функция является типичным объектом языка программирования системы MatLab.
Одновременно он является полноценным модулем с точки зрения структурного программирования, поскольку содержит входные и выходные параметры и использует

1   ...   9   10   11   12   13   14   15   16   17


написать администратору сайта