ЭВМ_Семестр3_МетодПособие
.pdfментное умножение wt.*v вектор-строки на вектор-столбец приведѐт к ошибке и сообщению: «Matrix dimensions must agree». Согласование форм массивов и матриц также требуется и при делении.
Вслучае поэлементном деления имеем:
>>wt./vt
ans =
1.0000 0.5000 0.6667
результат по членного деления: 1 1, 1 2, 2 3. При матричном делении
>> wt/vt ans =
0.6429
получение результата можно пояснить цепочкой преобразований: ans = wt/vt → ans = wt ∙ vt−1 → ans ∙ vt = wt ∙ vt−1 ∙ vt →
→ ans ∙ vt = wt → ans ∙ vt ʹ = wtʹ → v ∙ ans = w
в которых штрихом «ʹ» обозначена операция транспонирования, выполняющая взаимную трансформацию строк и столбцов. Полученное
выражение соответствует переопределѐнной |
|
|
|
|
|
|
|
|
||
|
1 с 1 |
1 |
|
1 |
||||||
|
|
|
|
|||||||
СЛАУ (см. рисунок А.1) и пример 5.1 РГР |
|
|
|
|
||||||
|
|
2 |
c |
1 |
||||||
|
|
|
2 с 1 |
|||||||
№5. Решением этой переопределѐнной |
|
3 с 2 |
|
|
|
|
|
|||
3 |
|
2 |
||||||||
СЛАУ является: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
ans = (1 ∙ 1 + 2 ∙ 1 + 3 ∙ 2) |
12 + 22 + 32 |
= |
|
v ans |
w |
|
|
|||
|
|
Рисунок А.1 |
|
|
||||||
= 9/14 ≈ 0.6429 . |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Заметим, что матричное выражение v\w |
со- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
ответствует той же СЛАУ: |
|
|
|
|
|
|
|
|
|
|
v ∙ ans = w → ans = v−1 ∙ w, |
имеющей то же самое решение. |
|
|
Следует отметить, что сложение и вычитание, а также умножение и деление на скаляр, всегда выполняется поэлементно и поэтому для этих случаев перед операторами, задающими эти действия, точку указывать не требуется.
Некоторые преобразования могут выполняться над символьными
переменными, создаваемыми конструктором sym или |
syms. Напри- |
||||
мер, |
|
символьное |
«вычисление» |
определѐнного |
интеграла |
I = |
2 |
∙ − инициируется командой: |
|
||
|
0 |
|
|
|
|
101
>> I=int(sym('x*exp(-x)'),0,2) I =
1 - 3/exp(2)
>> 1 - 3/exp(2) % вычислим, чему это равно ans =
0.5940
Однако для получения с помощью численным методом этого определѐнного интеграла J = 02 ∙ − используют поэлементные операции над массивами:
>> J=quad('x .* exp(-x)',0,2) J =
0.5940
Выбор (из выведенных по команде help) раздела, matlab\elmat, открывает доступ к списку элементарных ма-
тематических функций, многие из которых представлены в таблице А.2.
Элементарные математические функции
Таблица A.2. Элементарные математические функции MATLAB
Функция |
Название и обозначение |
Пример |
||||
exp |
Экспонента |
|
|
|
|
exp(x) |
|
|
|
|
|||
log |
Натуральный логарифм |
log(x) |
||||
log10 |
Десятичный логарифм |
log10(x) |
||||
log2 |
Двоичный логарифм log2 |
log2(x) |
||||
abs |
Абсолютная величина |
|
abs(x) |
|||
sqrt |
|
|
|
|
|
sqrt(x) |
Арифметический корень |
|
|
||||
sin |
Синус |
|
|
|
|
sin(x) |
cos |
Косинус |
|
|
|
|
cos(x) |
tan |
Тангенс |
|
|
|
|
tan(x) |
cot |
Котангенс с |
|
|
|
cot(x) |
|
asin |
Арксинус |
|
|
|
asin(x) |
|
acos |
Арккосинус |
|
|
|
acos(x) |
|
atan |
Арктангенс |
|
|
|
atan(x) |
|
acot |
Арккотангенс |
acot(x) |
102
round |
Округление до ближайшего целого |
round(x) |
||
|
≈ целое( ) |
|
|
|
fix |
Округление до целого в |
fix(x) |
||
|
направлении к нулю |
|
|
|
floor |
Наибольшее целое, |
floor(x) |
||
|
не превосходящее х |
|
|
|
ceil |
Наименьшее целое не |
ceil(x) |
||
|
меньшее, чем х |
|
|
|
mod |
по модулю n |
|
mod(k,n) |
|
|
= − |
n |
|
|
rem |
Остаток от деления k на n |
rem(k,n) |
||
|
− |
|
|
|
sign |
Знак x; при < 0 = −1, |
sign(x) |
||
|
при = 0 |
= 0, |
|
|
|
при > 0 |
= +1. |
|
Функции, определяемые пользователем
Пользователь может из выражения, содержащего переменные, составить свою собственную функцию, причѐм несколькими способами:
1. Создание встраиваемой функции выполняется командой вида:
Имя_функции = inline('формула', список_аргументов)
Например, командой |
|
>> f1 =inline('x./exp(-x.^2)','x') |
% 'x' – аргумент |
f1 = |
|
Inline function: |
|
f1(x) = x./exp(-x.^2) |
|
или |
|
>>f1 =inline('x./exp(-x.^2)'); % c опущенным аргументом
>>f1(1) % пример обращения к функции
ans = 2.7183
Заметим, что в задаваемой текстовой строкой функции не допустимы иные переменные, кроме переменных-аргументов.
103
2. Анонимная функция включает оператор указатель (@), а еѐ и аргументы и формула, в отличие от inline-функции, записываются в обычном виде, а не как текстовые строки в апострофа:
Имя_функции = @(список_аргументов) формула
В анонимной функции доступны переменные рабочей среды, которые входят в формулу. Например:
>> a=1;
>> f2=@(x) a*x./exp(-a*x.^2) % a – программная перемен-
ная f2 =
@(x) a*x./exp(-a*x.^2)
Программная переменная «a» являются константой, в качестве которой берѐтся значение переменной «a» в момент создания анонимной функции, и последующее изменение еѐ значения не будет учитываться при вычислении функции:
>> a=2; f2(1) % a=2 не влияет на значение функции
ans =
2.7183
3. Файл-функция позволяет реализовать вычисления в нескольких инструкциях, например, для функции, которую не удаѐтся записать в виде одной формулы. Для создания файла-функции FFunc следует в меню MATLAB выбрать File – New – Function, а затем в окне редактора подготовить текст:
>> function [ fu ] = FFunc( x ) % x – входной аргумент x2=x^2;
fu=sqrt((x2+32)/(x2^2+2)); % fu - выходной аргумент
Затем следует выполнить сохранение File – Save As файла FFunc.m в папке, и еѐ надо установить в качестве рабочей перед обращением:
|
|
|
|
>> FFunc(2) |
% вычисление 2 ≈ 1.4142 |
||
ans = |
|
|
|
1.4142
Заметим, что эту файл-функцию можно было записать и так:
104
>> function [ fu ] = FFunc( x ) fu=sqrt((x^2+32)/(x^4+2));
Функции для приближения данных Таблица A.3. Функции для приближения данных
Функция |
Назначение |
Пример |
polyfit |
Построение полинома по точкам |
A=polyfit(AX,AY,n) |
polyval |
Ордината y(x) полинома |
y=Polyval(A,x) |
spline |
Построение сплайна по точкам |
pp=spline(X,Y) |
spline |
Вычисление ординат от абсцисс |
yy=spline(X,Y,xx) |
ppval |
Вычисление ординат от абсцисс |
yy=polyval(pp,xx) |
Построение графиков в MATLAB
Простейшие графики по массивам абсцисс xi и ординат yi точек выводятся (в форму – фигуру) с помощью функции plot, обращение к которой имеет вид:
plot([x1,]y1[,s1][,x2,y2[, s2]]...)
Здесь в квадратные скобки заключены конструкции, которые можно опускать, а s1,s2 – (необязательные аргументы) строки из максимум трѐх символов, задающие тип линии, тип точек и цвет. Если строка опущена, то для соответствующего графика действуют параметры, заданные по умолчанию: тип – сплошная из отрезков прямых, тип точки – пиксель, цвет – очередной из набора цветов (см. вывод по команде help plot). Например, по обращению:
>> plot(x1,y1 ,x2,y2,'ro') % график и набор точек-маркеров >> grid % добавление сетки к области с графиком
первый график вычерчивается с параметрами, заданными по умолчанию, а второй график (точнее набор точек) выводится– круглыми (o) красными (r - red=красный) маркерами.
Если все аргументы кроме y1 в функции plot опустить, то в качестве абсцисс графика будут приняты последовательные номера точек.
>> plot(y1) |
% график строится по номерам i элементов y1i |
105
Для построения графика функции одной переменной можно использовать функцию fplot, обращение к которой имеет вид:
>> fplot(функция, [интервал],n)
В качестве функции может выступать: @Файл-функция, имя анонимной функции или имя либо строка с определением встроенной функ-
ции. Интервал определяет границы (от a до b) отрезка (разбиваемого на как минимум на n равных частей), на котором строится график. Примеры.
>>fplot(@FFunc,[0 2],11) % FFunc – опр. выше файл-функция
>>fplot(f2,[-1 1],11) % f2 – опр. выше анонимная функция
>>fplot(f1,[-1 1],11) % f1 – опр. выше встроенная функция
>>fplot('x.*exp(-x.^2)',[0 1],11)
Отметим, что если к функции fplot обратиться так
[x1,y1] = fplot(функция, [интервал],n)
то график не будет выведен, но массивы x1,y1 окажутся заполненными координатами точек графика, который затем можно вывести по
>> plot(x1,y1)
Некоторые функции для работы с матрицами
Таблица A.4. Некоторые матричные функции MATLAB
Функция |
Название и обозначение |
Пример |
|
det |
Определитель |
|
det(M) |
cond |
Число обусловленности ( ) |
cond(M) |
|
eye |
Формирует единичную n×n-матрицу |
eye(n) |
|
norm |
2-ая норма матрицы |
norm(M) |
|
norm |
2-ая норма матрицы |
2 |
norm(M,2) |
norm |
1-ая норма матрицы |
1 |
norm(M,1) |
norm |
∞-ая норма матрицы |
∞ |
norm(M,inf) |
inv |
Вычисляет обратную матрицу |
inv(M) |
|
rank |
Вычисляет ранг матрицы |
rank(M) |
|
eig |
Вычисляет собств. значения |
eig(M) |
|
eig |
Вычисляет собств. векторы и собств. |
[R D]=eig(M) |
|
|
значения |
|
|
106
107
Учебное издание
Калядин Вячеслав Иванович Макаров Алексей Иванович
Решение задач на ЭВМ (вычислительные методы)
часть 1
Учебное пособие по дисциплине «Решение задач на ЭВМ» для студентов, обучающихся по направлению Информационные системы и технологии. М.: Университет машиностроения, 2014, 107 с.: ил.
Под редакцией авторов
Оригинал-макет подготовлен редакционно-издательским отделом Московского государственного машиностроительного университета (МАМИ)
Издано вне плана внутривузовских изданий учебной литературы на 2014 г.
Подписано в печать 18.04.2014. Формат 60х90 1/16 Бумага 80 г/м2 Гарнитура «Таймс». Ризография. Усл. печ. л 6,5.
Тираж 6 экз. Заказ № 47
ФГБОУ ВПО «Московский государственный машиностроительный университет (МАМИ)»
107023. г. Москва, Б.Семеновская ул., 38
108
109