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

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


Скачать 3.25 Mb.
НазваниеОсновы работы с математическими пакетами (MathCad)
Дата28.09.2022
Размер3.25 Mb.
Формат файлаpdf
Имя файлаТема-3-5.pdf
ТипДокументы
#702801
страница6 из 17
1   2   3   4   5   6   7   8   9   ...   17
Тема 3.5. Основы работы с математическими пакетами
Страница 300
Для выделения результата вычисления или значения переменной MatLab вставляет пустую строку перед выводимым значением. Управлять появлением пустой строки или ее отсутствием можно в в раскрывшемся диалоговом окне Preferences внутри группы Text
display с помощью следующих форматов
:
compact - строки с результатами выводятся подряд;
loose - строки с результатами разделяются пустой строкой.
Команда format служит для установки формата из командной строки. Например,
обращение
Пример 3.5.3-4
>>
format short e
>>
аналогично выбору короткого формата в окне Preferences.
Еще раз необходимо напомнить, что вне зависимости от установленного формата все вычисления производятся с двойной точностью, следовательно, после смены формата с
short на long не требуется повторно находить значения переменных. Достаточно снова вывести их значения в командном окне.
Также еще раз напомним, что содержимое командной строки MatLab легко редактируется. Курсор можно перемещать с помощью стрелок <←>, <→> и удалять неправильно набранные символы с помощью клавиш <Backspace> или . Как было уже сказано, удобным свойством системы является возможность использовать клавиши- стрелки <↑>,<↓> для доступа к стеку с ранее введенными командами. Таким образом,
имеется возможность заново вызывать ранее вызванную команду, отредактировать ее и снова выполнить. Для небольших процедур это гораздо удобнее, чем писать и отлаживать специальные m-файлы, что требует постоянного перехода из окна MatLab в окно текстового редактора.
Все команды строчного редактора перечислены в таблице 3.5.3-2.
Таблица 3.5.3-2
Комбинация
клавиш
Назначение

Перемещение курсора вправо на один символ

Перемещение курсора влево на один символ
Ctrl+→
Перемещение курсора вправо на одно слово
Ctrl+←
Перемещение курсора влево на одно слово
Home
Перемещение курсора в начало строки
End
Перемещение курсора в конец строки
↑ и ↓
Перелистывание предыдущих команд вверх или вниз для подстановки в строку ввода
Del
Стирание символа справа от курсора
Backspace
Стирание символа слева от курсора
Ctrl+k
Стирание до конца строки
Esc
Очистка строки ввода
Ins
Вкл/выкл режима вставки
PgUp
Перелистывание страниц сессии вверх
PgDn
Перелистывание страниц сессии вниз

Тема 3.5. Основы работы с математическими пакетами
Страница 301
3.5.3.1.3. Основные объекты системы MatLab
Математические выражения в MatLab стоятся, как и в большинстве языков программирования, из числовых констант, переменных, стандартных и нестандартных функций, соединенных знаками арифметических операций, например + ,- ,* , / ,^, и круглых скобок. Кроме того, как было показано ранее, вид результата зависит от установленного формата.
Число – простейший объект языка MatLab, представляющий числовые данные.
Числа могут быть представлены в целом, дробном, с фиксированной и плавающей точкой, а также в экспоненциальном виде. Например,
0, 2, -4, 4.67, 0.0005, 567.9e-7, 0.89e12.
Числа могут быть как действительными, так и комплексными. Комплексные числа содержат как действительные, так и комплексные чисти. В MatLab мнимая часть имеет множитель i
или j, означающий корень квадратный из -1. Например,
3i, 5j, -5.1 +i8, 005e-5- j0.006.
Все операции над числами в MatLab выполняются в формате с двойной точностью.
Однако, как нам уже известно, MatLab выдает числовые результаты в нормализованной форме с четырьмя цифрами после десятичной точки и одной до нее. Поэтому при работе с числовыми данными можно задавать различные форматы представления чисел.
Числовая константа – это предварительно определенное число (числовое значение). Числа (например, 1, -5, 3.97) являются безымянными числовыми константами.
Системные константы (табл. 3.5.3-3) – это такие константы, значения которых задаются системой при загрузке. Однако по мере необходимости эти константы могут переопределяться.
Таблица 3.5.3-3
Константа
Назначение
i или j
Мнимая единица
pi
Число π=3.1415926…
eps
Погрешность вычислений над числами с плавающей точкой
(по умолчанию 2
-52
)
realmin
Наименьшее число с плавающей точкой (по умолчанию 2
-1022
)
realmax
Наибольшее число с плавающей точкой (по умолчанию 2 1022
)
inf
Значение машинной бесконечности
NaN
Указание на нечисловой характер данных (Not-a-Number)
Символьная константа – это последовательность символов, заключенных в одиночные апострофы. Например:
'Кафедра ВМиП'
'88+0'

Тема 3.5. Основы работы с математическими пакетами
Страница 302
Комментарии в MatLab определяются с помощью символа %. Например,
% Это комментарий
Переменные – это имеющие имена объекты, способные хранить некоторые, разные по значению, данные. В зависимости от этих данных, переменные могут быть числовыми или символьными, векторными или матричными. При использовании переменных необходимо придерживаться правил:
∂ имя переменной (ее идентификатор) может состоять из символов латинского алфавита, знака подчёркивания и цифр, но начинаться обязательно с символа алфавита;
∂ прописные и строчные буквы различаются;
∂ пробел не входит в имя переменной.
Для задания переменным определенных значений используется операция
присваивания, обозначаемая знаком равенства =.
Пример 3.5.3-5
>> a=3.25*(0.7-3.3/5.1)+2.3^3
a =
12.3391
>> b=5*(2.2+3.9i)+0.8
b =
11.8000 +19.5000i
>>
Простейшие арифметические операции системы MatLab приведены в табл. 3.5.3-4.
Таблица 3.5.3-4
Функция
Название
Операция Синта-сис
plus
Плюс
+
M1+M2
uplus
Унарный плюс
+
+M
minus
Минус
-
М1-M2
uminus
Унарный минус
-

mtimes
Матричное умножение
*
M1*M2
times
Поэлементное умножение массивов
.*
A1.*A2
mpower
Возведение матрицы в степень
^
М^х
power
Поэлементное возведение массива в степень
.^
A.^x
mldivide
Обратное (справа налево) деление матриц
\
M1\M2
mrdivide
Деление матриц слева направо
/
M1/M2
ldivide
Поэлементное деление массивов справа налево
.\
A1.\A2
rdivide
Поэлементное деление массивов слево направо
./
A1./A2
Необходимо обратить внимание на то, что каждая операция имеет аналогичную по назначению функцию. Например, операции матричного умножения * соответствует функция
mtimes(Ml,M2). Примеры применения арифметических операций уже не раз приводились,
так что ограничимся несколькими дополнительными примерами.

Тема 3.5. Основы работы с математическими пакетами
Страница 303
Пример 3.5.3-6
>>А=[1 2 3];
>>В=[4 5 6]:
>>В-А
ans=
3
3
3
>>minus (В. А)
ans =
3
3
3
>>А. ^ 2
ans =
1
4
9
>> power(A,2)
ans =
1
4
9
>>А.\В
ans=
4.0000
2.5000
2.0000
>>ldivide(A.B)
ans=
4.0000
2.5000
2.0000
>>rdivide(A.B)
ans=
0.2500
0.4000
0.5000
Соответствие функций операторам и командам в системе MatLab является одним из основных положений программирования в MatLab. Оно позволяет одновременно использовать элементы как операторного, так и функционального программирования.
Следует отметить, что в математических выражениях операции имеют определенный
приоритет исполнения. Например, в MatLab приоритет логических операций выше, чем арифметических, приоритет возведения в степень выше приоритетов умножения и деления,
приоритет умножения и деления выше приоритета сложения и вычитания. Для изменения приоритета операций в математических выражениях используются круглые скобки.
MatLab обладает большим набором стандартных встроенных математических
функций. Некоторые из них приведены в табл. 3.5.3-5. При вызове математических функций аргумент заключается в круглые скобки. Полный список всех встроенных элементарных математических функций можно получить, набрав в командной строке.
Пример 3.5.3-7
>>help elfun
>>

Тема 3.5. Основы работы с математическими пакетами
Страница 304
Таблица 3.5.3-5
Тригонометрические функции (результат вычисляется в радианах)
sin, cos, tan, cot
Синус, косинус, тангенс и котангенс
sec, csc
Секанс, косеканс
Обратные тригономе-кие функции (результат вычисляется в рад.)
asin, acos,atan,atan2, acot
Арксинус, арккосинус, арктангенс и арккотангенс
asec, acsc
Арксеканс, арккосеканс
Гиперболические функции
sinh, cosh, tanh, coth
Гипербол. синус, косинус, тангенс и котангенс
sech, csch
Гиперболические секанс и косеканс
asinh, acosh, atanh, acoth
Гиперболические арксинус,
арккосинус, арктангенс и арккотангенс;
Экспоненциальная функция, логарифмы, степенные функции
exp
Экспоненциальная функция
log, log2, log10
Логарифм натуральный, по основанию 2 и 10
sqrt
Квадратный корень
Модуль, знак и функции для работы с комплексными числами
abs, sign
Модуль и знак числа
conj, imag, real
Комплексно-сопряжённое
mod, rem
Остаток от деления с учетом знака делимого и без
gcd, lcm
Наибольший и наименьший общий делитель
cell, fix, floor, round
округления
Команда help отображает в командном окне список разделов справочной системы.
Для получения содержимого раздела необходимо указать через пробел его название после
help, а для вывода детальной информации о какой-либо функции, следует ввести в строке с
help имя функции.
Возникающий в процессе вычислений комплексный результат не является ошибкой.
MatLab автоматически переходит в область комплексных чисел, если это необходимо,
продолжая вычисления. Например, если необходимо найти квадратный корень из –1. Более того, допустимы операции деления на ноль, которые приводят к стандартным переменным
Inf или –Inf. Результат деления нуля на ноль есть NaN (Not a Number – не число).

Тема 3.5. Основы работы с математическими пакетами
Страница 305
Переполнение или потеря точности в MatLab при выполнении операций с числами с плавающей точкой не вызывает прекращение вычислений.
Запись комплексных величин, используемых в арифметических выражениях,
напоминает общепринятые математические стандарты. Мнимые части комплексных чисел сопровождаются либо буквой i, либо буквой j:
Пример 3.5.3-8
>>x=1.5-0.5i
x =
1.5000 - 0.5000i
>>y=1.5-0.5j
y =
1.5000 – 0.5000j
>>
Если переменным i и j не присвоены какие-либо значения, то их можно использовать для формирования комплексных данных, используя знак умножения и располагая такой
“сомножитель” до или после мнимой части:
Пример 3.5.3-9
>>a=1;
>>x=i*a
x =
0 + 1.0000i
>>y=a*i
y =
0 + 1.0000i
>>
Когда полные комплексные числа используются в операциях умножения, деления и возведения в степень, то для устранения неоднозначности их заключают в круглые скобки.
С помощью функции real и imag можно выделить вещественную и мнимую часть комплексного значения, а функция complex позволяет сконструировать комплексное значение по паре двух вещественных чисел.
Пример 3.5.3-10
>>b=5+j10;
>>c=real(d)
c=
5
>>d=imag(b)
d=
10
>>
Функцией conj() можно воспользоваться для получения комплексного сопряженного числа. Тот же результат можно получить, располагая апостроф вслед за комплексным значением.

Тема 3.5. Основы работы с математическими пакетами
Страница 306
Пример 3.5.3-11
>>t=conj(b)
t=
5.0000e+000 -1.0000e+001i
>>g=b'
g=
5.0000e+000 -1.0000e+001i
>>
Отметим, что над комплексными данными в MatLab определены все арифметические операции, а комплексные операнды и выражения могут использоваться в качестве аргументов стандартных функций.
Необходимо обратить внимание, что числовые переменные в MatLab являются двумерными массивами размера один на один. Представление всех данных в MatLab в виде массивов оказывается очень полезным, о чем подробнее будет сказано в следующих разделах.
3.5.3.1.4. Работа с векторами и матрицами
Пакет MatLab построена как система, ориентирующая на работу с матрицами, то есть все численные вычисления производятся в матричной форме. Система MatLab
выполняет сложные и трудоемкие операции над векторами и матрицами даже в режиме прямых вычислений без какого-либо программирования. Ею можно пользоваться как мощнейшим калькулятором, в котором наряду с обычными арифметическими и алгебраическими действиями могут использоваться такие сложные операции, как инвертирование матрицы, вычисление ее собственных значений и принадлежащих им векторов, решение систем линейных уравнений, вывод графиков двумерных и трехмерных функций и многое другое. Важно отметить, что даже обычные числа и переменные в MatLab
рассматриваются как матрицы размера 1 x 1, что дает единообразные формы и методы проведения операций над обычными числами и массивами. Это также означает, что большинство функций может работать с аргументами в виде векторов и матриц. При необходимости вектора и матрицы преобразуются в массивы, и значения вычисляются для каждого их элемента.
Массивы являются одним из самых распространенных способов хранения данных и используются во всех языках программирования и математических пакетах. К особенностям работы с массивами в MatLab относится то, что одномерный массив может быть вектор-
строкой или вектор-столбцом. Если способ представления массива важен, то мы будем подчеркивать, о строке или о столбце идет речь. Если же это несущественно, то будем говорить о вектор-строках и вектор-столбцах просто как о векторах или одномерных массивах. Напомним, что одномерный массив в MatLab есть двумерный, у которого ода из размерностей равна единице.
Для определения вектора используются квадратные скобки, а элементы вектора отделяются друг от друга:
∂ точкой с запятой, если требуется получить вектор–столбец;
∂ пробелом или запятой, если необходимо разместить элементы в векторе-строке.

Тема 3.5. Основы работы с математическими пакетами
Страница 307
Пример 3.5.3-12
>>a=[0.2; -3.9; 4.6]
a =
0.2000
-3.9000
4.6000
>>b=[7.6; 0.1; 2.5]
b =
7.6000
0.1000
2.5000
>>u=[0.1 0.5 -3.7 8.1]
u =
0.1000 0.5000 -3.7000 8.1000
>>v=[5.2 9.7 3.4 –0.2]
v =
5.2000 9.7000 3.4000 –0.2000
>>
Получить информацию о переменных, как мы уже знаем, можно с помощью окна
Workspace или при помощи команды whos.
Для определения длины вектора используется функция length(а), вектор
а
указывается в качестве ее входного аргумента.
Пример 3.5.3-13
>>L=length(a)
L =
3
>>
Вектор-столбцы с одинаковым числом элементов можно складывать и вычитать друг из друга при помощи опрераций "+" и "–". Эти правила верны и для вектор-строк.
Сложение и вычитание вектор-строк и вектор-столбцов или векторов разных размеров приводит к ошибке. Операция * предназначена для умножения векторов по правилу матричного умножения. Поскольку MatLab различает вектор-строки и вектор-
столбцы, то допустимо либо умножение вектор-строки на такой же по длине вектор-
столбец (скалярное произведение), либо умножение вектор-столбца на вектор-строку
(внешнее произведение, в результате которого получается прямоугольная матрица).
Скалярное произведение двух векторов возвращает функция dot(), а векторное - cross():
Пример 3.5.3-14
>>s=dot(a, b)
s=
1.2630e+001
>>c=cross(a, b)
c=
-1.0210e+001
3.4460e+001
2.9660e+001
>>
Для операции транспонирования зарезервирован символ апостроф - '. Если вектор содержит комплексные числа, то операция ' приводит к комплексно-сопряженному вектору.
При вычислении скалярного и векторного произведений функциями cross() и dot() не

Тема 3.5. Основы работы с математическими пакетами
Страница 308
обязательно следить за тем, чтобы оба вектора были либо столбцами, либо строками.
Результат получается верный, например, при обращении c=cross(a,b'), только c становится вектор-строкой.
MatLab поддерживает поэлементные операции с векторами. Наряду с умножением по правилу матричного умножения, существует операция поэлементного умножения - .* (точка со звездочкой). Данная операция применяется к векторам одинаковой длины и приводит к вектору той же длины, что исходные, элементы которого равны произведениям соответствующих элементов исходных векторов. Например, для векторов a и b, введенных выше, поэлементное умножение дает следующий результат:
Пример 3.5.3-15
>>c=a.* b
c =
1.5200
-0.3900
11.5000
>>
Аналогичным образом работает поэлементное деление - ./ (точка с косой чертой).
Кроме того, операция .\ (точка с обратной косой чертой) осуществляет обратное поэлементное деление, то есть выражения a./b и b.\a эквивалентны. Возведение элементов вектора a в степени, равные соответствующим элементам b, производится с использованием операции - .^. Для транспонирования вектор-строк или вектор-столбцов предназначено сочетание - .' (точка с апострофом). Операции - ' и .' для вещественных векторов приводят к одинаковым результатам. Не обязательно применять поэлементные операции при умножении вектора на число и числа на вектор, делении вектора на число, сложении и вычитании вектора и числа. При выполнении, например, операции a*2, результат представляет собой вектор того же размера, что и a, с удвоенными элементами.
Векторы могут быть аргументами встроенных математических функций, таких, как
sin(), cos() и т. д. В результате получается вектор с элементами, равными значению вызываемой функции от соответствующих элементов исходного вектора, например:
Пример 3.5.3-16
>>q=sin([0 pi/2 pi])
q =
0 1.0000 0.0000
>>
Однако для вычисления более сложной функции от вектора значений, скажем,
2
αSinα α
,
α 1


где α, например, является вектором-строкой, состоящей из четырех элементов,
выражение f=(α*sin(α)+α^2)/(α+1) вызовет ошибку уже при попытке умножения α на
sin(α). Дело в том, что α является вектор-строкой длиной четыре, то есть хранится в двумерном массиве размером один на четыре. Точно также представлена и функция sin(α),
следовательно, умножение при помощи звездочки (по правилу матричного умножения)
лишено смысла. Аналогичная ситуация возникает и при возведении вектора α в квадрат, то есть, фактически, при вычислении α*α.
Правильная запись выражения в MatLab требует использования поэлементных операций.

1   2   3   4   5   6   7   8   9   ...   17


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