Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЭВМ_Семестр3_МетодПособие

.pdf
Скачиваний:
24
Добавлен:
05.06.2015
Размер:
2.99 Mб
Скачать

ментное умножение 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