MathCAD и MATLAB
Начальный курс
Учебно-методическое пособие
Нижний Новгород
2007
Печатается по решению редакционно-издательского совета НГПУ
2
СОДЕРЖАНИЕ
Введение ...........................................................................................................................................................4
Глава 1. MathCAD ............................................................................................................................................5
1.1. Основы работы в MathCAD..................................................................................................................5
1.1.1. Математические выражения..........................................................................................................5
1.1.2. Ввод текста .....................................................................................................................................7
1.1.3. Импорт текста.................................................................................................................................8
1.2. Графика системы MathCAD .................................................................................................................9
1.2.1. Построение двухмерных графиков.............................................................................................10
1.2.2. Построение трехмерных графиков .............................................................................................11
1.2.3. Построение пересекающихся фигур...........................................................................................12
1.2.4. Форматирование графиков ..........................................................................................................13
1.2.5. Создание анимационного клипа .................................................................................................16
1.3. Решение уравнений и систем уравнений средствами MathCAD ....................................................16
1.3.1. Численное решение алгебраического уравнения ......................................................................17
1.3.2. Нахождение корней полинома ....................................................................................................19
1.3.3. Решение систем уравнений .........................................................................................................20
1.3.4. Решение уравнений в символьном виде.....................................................................................23
1.4. Символьные вычисления....................................................................................................................23
1.5. Дифференциальные уравнения ..........................................................................................................29
1.5.1. Решение ОДУ первого порядка...................................................................................................30
1.5.2. Решение ОДУ высшего порядка .................................................................................................31
1.5.3. Решение системы ОДУ ................................................................................................................31
1.6. Программирование в MathCAD .........................................................................................................34
Глава 2. MATLAB ..........................................................................................................................................41
2.1. Основы работы в MATLAB................................................................................................................41
2.1.1. Числовые переменные .................................................................................................................42
2.1.2. Форматы чисел .............................................................................................................................43
2.1.3. Задание векторов и матриц..........................................................................................................43
2.1.4. Операции над векторами и матрицами ......................................................................................45
2.1.5. Константы и системные переменные .........................................................................................48
2.2. Графика системы MATLAB ...............................................................................................................49
2.2.1. Двумерная графика ......................................................................................................................49
2.2.2. Трехмерная графика.....................................................................................................................53
2.2.3. Форматирование графиков ..........................................................................................................56
2.2.4. Графики разного типа в одном окне...........................................................................................57
2.2.5. Специальная графика...................................................................................................................59
2.2.6. Операции над графическими объектами....................................................................................60
2.3. Обработка данных...............................................................................................................................61
2.3.1. Статистическая обработка данных .............................................................................................61
2.3.2. Интерполяция и аппроксимация данных ...................................................................................66
2.3.3. Обработка данных в графическом окне .....................................................................................69
2.3.4. Интерполяция периодических функций рядом Фурье..............................................................69
2.3.5. Одномерная табличная интерполяция........................................................................................71
2.4. Основы программирования в MATLAB ...........................................................................................72
2.4.1. Создание класса или объекта ......................................................................................................74
2.4.2. Проверка принадлежности объекта к заданному классу ..........................................................74
2.4.3. Программы и функции.................................................................................................................75
2.5. Решение уравнений и систем уравнений средствами MATLAB ....................................................84
2.5.1. Вычисление нулей функции одной переменной .......................................................................84
2.5.2. Минимизация функции одной переменной ...............................................................................87
2.5.3. Графический способ решения уравнений ..................................................................................88
2.5.4. Системы линейных алгебраических уравнений ........................................................................89
2.5.5. Полиномы .....................................................................................................................................91
2.6. Численные методы ..............................................................................................................................93
2.6.1. Дифференцирование ....................................................................................................................93
2.6.2. Численное интегрирование .........................................................................................................94
2.6.3. Решение обыкновенных дифференциальных уравнений .........................................................97
Литература ....................................................................................................................................................100
Приложение ..................................................................................................................................................101
3
Введение
ВВЕДЕНИЕ
Одной из основных областей применения ПК являются математические
и научно-технические расчеты. Сложные вычислительные задачи,
возникающие при моделировании технических устройств и процессов,
можно разбить на ряд элементарных: вычисление интегралов, решение
уравнений, решение дифференциальных уравнений и т. д. Для таких задач
уже разработаны методы решения, созданы математические системы,
доступные для изучения студентами.
Цель данного пособия - научить пользователя простейшим методам
вычислений с использованием современных информационных технологий.
Наиболее подходящими для этой цели являются математические системы
MathCAD и MATLAB.
4
Глава 1. MathCAD
ГЛАВА 1. MATHCAD
5
Глава 1. MathCAD
6
Глава 1. MathCAD
3. Щелкнуть на кнопке .
Форматирование результатов производится с помощью
Формат→Результат. В появившемся диалоговом окне можно установить
систему счисления, формат числа, точность.
7
Глава 1. MathCAD
8
Глава 1. MathCAD
9
Глава 1. MathCAD
Рис. 1.1
Второй, более простой способ, называемый быстрым построением
графика (рис. 2), заключается во введении функции в один из
местозаполнителей (например, у оси У), а имени аргумента – в
местозаполнитель у другой оси. В результате MathCAD сам создаст график
функции в пределах значений аргумента, по умолчанию принятых равными
от -10 до 10. Можно поменять диапазон значений аргумента, и график
автоматически подстроится под него.
sin( x)
x
Рис. 1.2
10
Глава 1. MathCAD
Рис.1.3
• быстрое создание графика
Для «быстрого» создания трехмерных графиков необходимо в
местозаполнитель ввести имя функции от двух переменных (Рис.1.4).
11
Глава 1. MathCAD
Рис. 1.4
• дискретизация значений функции
Рис. 1.5
12
Глава 1. MathCAD
(2
f ( x, y ) := sin x + y
2 ) 2 2
g ( x, y ) := x + y − 6 x := 0 .. 20 y := 0 .. 2
:= f ⎡⎢
( x − 10) ( y − 10) ⎤
:= g ⎡⎢
( x − 6) ( y − 6) ⎤
M , ⎥ L , ⎥
x, y ⎣ 5 5 ⎦ x, y ⎣ 3 3 ⎦
M , L, L
Рис. 1.6. Построение двух пересекающихся поверхностей.
1.2.4. Форматирование графиков
13
Глава 1. MathCAD
15
Глава 1. MathCAD
16
Глава 1. MathCAD
17
Глава 1. MathCAD
18
Глава 1. MathCAD
19
Глава 1. MathCAD
20
Глава 1. MathCAD
21
Глава 1. MathCAD
22
Глава 1. MathCAD
23
Глава 1. MathCAD
24
Глава 1. MathCAD
Sin(2*x)
Первый способ (с помощью меню).
• Ввести выражение sin(2*x)
• Выделить его целиком
• Выбрать в главном меню Символика⇒Разложить (расширить)
После этого ниже появится результат.
Второй способ (с помощью оператора →).
• Ввести выражение sin(2*x)
• Нажать кнопку Expand
• Ввести в местозаполнитель после появившегося ключевого слова
expand имя переменной,
• Ввести оператор символьного вывода →
• Нажать Enter либо щелкнуть мышью за пределами выражения.
sin ( 2 ⋅ x) expand , x → 2 ⋅ sin ( x) ⋅ cos ( x)
Оператор символьного вывода можно ввести несколькими способами:
• нажатием кнопки на панелях Вычисления или Символьный
• сочетанием клавиш Ctrl+<.>.
Не всякое выражение поддается аналитическим преобразованиям. Если
задача не имеет аналитического решения или оказывается слишком сложной
для символьного процессора MathCAD, то в качестве результата выводится
само выражение.
Упрощение выражений (Simplify)
При упрощении используются различные арифметические формулы,
приведение подобных, тригонометрические тождества и т.д.
2 2 2
( x + 2 ⋅ y ) ⋅ z − z ⋅ ( x + 5 ⋅ y ) + z simplify → z ⋅ x + 2 ⋅ z ⋅ y − z ⋅ x − 5 ⋅ z ⋅ y + z
25
Глава 1. MathCAD
2 2
( x + 2 ⋅ y ) ⋅ z − z ⋅ ( x + 5 ⋅ y ) + z simplify → 13 ⋅ z − 15 ⋅ z
26
Глава 1. MathCAD
2 ( 2 )
( x + 2 ⋅ y ) ⋅ z − z ⋅ y ⋅ ( x + 5 ⋅ y ) + z collect, x → z − z ⋅ y ⋅ x + 2 ⋅ z ⋅ y − 5 ⋅ z ⋅ y + z
2 2
2 2 2 ( 2 )
( x + 2 ⋅ y ) ⋅ z − z ⋅ y ⋅ ( x + 5 ⋅ y ) + z collect, y → −5 ⋅ z ⋅ y + 2 ⋅ z − z ⋅ x ⋅ y + z ⋅ x + z
2 2
( x + 2 ⋅ y ) ⋅ z − z ⋅ y ⋅ ( x + 5 ⋅ y ) + z collect, z → −z ⋅ y ⋅ ( x + 5 ⋅ y ) + ( x + 2 ⋅ y + 1) ⋅ z
2 ( 2 ) 2
( x + 2 ⋅ y ) ⋅ z − z ⋅ y ⋅ ( x + 5 ⋅ y ) + z collect, x, y , z → z − z ⋅ y ⋅ x + 2 ⋅ z ⋅ y − 5 ⋅ z ⋅ y + z
2
27
Глава 1. MathCAD
Ряды и произведения
Чтобы вычислить символьно конечную или бесконечную сумму или
произведение:
• введите выражение. Символ ∞ вводится с помощью клавиш
Ctrl+Shift+Z;
• в зависимости от желаемого стиля символьных вычислений
выберите команду Символика ⇒Упростить или введите оператор
символьного вывода →.
∞ n
simplify → exp⎛⎜
1 1⎞
∑ n
⎟
⎝ 2⎠
n = 0 2 n!
Матричная алгебра
Так как большинство операций и встроенных функций осуществляются
над матрицами точно так же, как и над обычными числами, к матричным
28
Глава 1. MathCAD
29
Глава 1. MathCAD
30
Глава 1. MathCAD
31
Глава 1. MathCAD
32
Глава 1. MathCAD
0.1
〈 1〉 0
u
− 0.1
0 20 40 60
0 〈 0〉 50
u
〈2〉 0
u
− 0.093 0.1
0.1 0 0.1
− 0.084 〈1〉 0.1
u
33
Глава 1. MathCAD
34
Глава 1. MathCAD
f( 6) = 11
35
Глава 1. MathCAD
f( 1) = "posit iv"
36
Глава 1. MathCAD
(
g ( x) := if x > 2 , 0 , 4 − x
2 )
но это определение хотя и более краткое, но менее наглядное.
Пример 4.
( ( ( 2
H( x) := if −2 ≤ x ≤ −1.3, F( x) , if −1.3 ≤ x ≤ 0 , −F( x) , if 0 ≤ x ≤ 1.4, F( x) , x)))
Операторы цикла (for, while, break, continue)
В языке программирования MathCAD имеются два оператора цикла:
for и while. Первый из них дает возможность организовать цикл по
некоторой переменной, заставляя ее пробегать некоторый диапазон значений.
Второй создает цикл с выходом из него по некоторому логическому условию.
Если выбран оператор for, то в соответствующие местозаполнители надо
вставить имя переменной и диапазон ее значений, если while – то логическое
выражение, при нарушении которого должен осуществляться выход из
цикла. В нижний местозаполнитель вводится тело цикла, т.е. выражение,
которое должно выполняться циклически. Важно, чтобы в программе
присутствовал оператор, делающий условие цикла ложным. В противном
случае, цикл будет выполняться бесконечно. Если выполняемая программа
зациклилась, то ее можно остановить, нажатием клавиши Esc.
37
Глава 1. MathCAD
Пример 5.
x := z← 0
for i ∈ 0 .. 6
z ← z + 2⋅ i
m := 0 .. 2500 v := 1 + sin ( m)
m
38
Глава 1. MathCAD
z← z+ i z← z+ 1
( break ) if i 2 ( break ) if z > 5
x= 3 x= 6
x := z ← 1 x := z ← 0
while z < 10 for i ∈ 0 .. 5
z← z+ 1 z← z+ i
cont inue cont inue
x = 10 x = 15
39
Глава 1. MathCAD
f ( n ) := 1 if n 1
( n ⋅ f ( n − 1) ) ot herwise
f ( 3) = 6
f ( 5) = 120
Но рекурсивные определения функции, несмотря на их краткость и
элегантность, не всегда являются самыми эффективными в вычислительном
отношении. Часто определения, использующие операторы цикла, вычисляют
нужные значения быстрее.
Возврат значения (return)
Можно прервать выполнение программы в любой ее точке (например с
помощью условного оператора) и выдать некоторое значение, применив
оператор return. В этом случае при выполнении указанного условия значение,
выведенное в местозаполнитель после return, возвращается в качестве
результата, а никакой другой код больше не выводится.
Пример 10.
40
Глава 2. MATLAB
ГЛАВА 2. MATLAB
41
Глава 2. MATLAB
42
Глава 2. MATLAB
43
Глава 2. MATLAB
ans = 1 2 3 4 5
2). >> 1:2:6 шаг равен 2
ans = 1 3 5
Задание вектора
Для задания вектора надо:
• перечислить его элементы в квадратных скобках, разделяя их
пробелами или запятыми;
вектор-строка: >>v=[1 2 3]
>>v = 1 2 3
вектор-столбец: >> v=[1 2 3]'
v=
1
2
3
• воспользоваться функцией linspace для задания вектор-строки или
linspase’ для задания вектора-столбца (эти команды применимы только
для задания вещественных векторов)
>> a=linspace(1,6,5)
a = 1.0000 2.2500 3.5000 4.7500 6.0000
Задание матриц
Строки матрицы при вводе отделяются точкой с запятой:
>>M=[1 2 3;4 5 6;7 8 9]
>>M = 1 2 3
4 5 6
7 8 9
Возможен ввод векторов и матриц в виде арифметических выражений,
содержащих любые, доступные системе функции, например:
format short
>>v=[6/2 sqrt(16) 2^3]
>>v = 3 4 8
44
Глава 2. MATLAB
45
Глава 2. MATLAB
>>D=M*2
>>D = 2 4 6
8 10 12
При умножении матрицы на матрицу или вектор следует различать
умножение справа и слева:
>> format short
>> M=[1 2; 3 4];
>> N=[4 5; 6 7];
>> C=M*N >> D=N*M
C= 16 19 D= 19 28
36 43 27 40
Сумма. Найдем сумму двух матриц.
format short
>> M=[1 2; 3 4];
>> N=[3 4; 1 2];
>> C=M+N
C= 4 6
4 6
Аналогично ищется разность и частное.
Если надо провести операции сразу над всем массивом, то перед
знаком операции ставится точка. Например, оператор (*) означает
умножение для векторов и матриц, а оператор (.*) – поэлементное
умножение всех элементов массива.
Применим к векторам v и u операцию деления (/):
>> v=[2 6 10];
>> u=[1 3 5];
>> v/u
ans = 2 – скаляр, выражающий отношение векторов.
Применим к векторам v и u операцию почленного деления (./):
>> v./u
46
Глава 2. MATLAB
ans = 2 2 2 - вектор
Удаление отдельных столбцов или строк
Для удаления отдельных столбцов или строк матрицы используются
пустые квадратные скобки [].
Рассмотрим матрицу M=[1 4 7; 2 5 8; 3 6 9].
Удалим второй столбец, используя оператор двоеточие (:)
>> M(:,2)=[]
M= 1 7
2 8
3 9
Удалим вторую строку:
>> M(2,:)=[]
M= 1 7
3 9
Преобразование вектора в диагональную матрицу
>> v=1:3
v= 1 2 3
>> diag(v) = 1 0 0
0 2 0
0 0 3
Сведение матрицы к треугольному виду
>> A=[1 2 3; 6 5 4; 7 8 9];
>> triu(A) = 1 2 3
0 5 4
0 0 9
Конкатенация
Операция конкатенации – объединение малых матриц в большую
A=[1 2; 3 4]; C= 1 2 3 6
B=[2 4; 5 6]; 3 4 8 10
C=[A A+B;A-B B] -1 -2 2 4
47
Глава 2. MATLAB
-2 -2 5 6
48
Глава 2. MATLAB
49
Глава 2. MATLAB
• Команда fplot
Команда fplot(‘f(x)’,[xmin xmax]) позволяет строить графики функций,
которые имеют устранимые неопределенности. Команда fplot позволяет
строить графики функции f(x), заданной в символьном виде, в интервале
изменения аргумента x от xmin до xmax без фиксированного шага
изменения x.
Пример:
>> clear; fplot('sin(x)/x',[-15,15]); grid on
Пример:
x=1:.01:3; nx=length(x); r=x.^2; fi=linspace(0,5*pi,nx); polar(fi,r)
52
Глава 2. MATLAB
53
Глава 2. MATLAB
54
Глава 2. MATLAB
x=-5:0.2:5;
[x,y]=meshgrid(x);
z=sinc(sqrt(x.^2+y.^2));
surf(x,y,z)
colormap gray (вывод графика серого
цвета)
Команда mesh(x,y,z)
>>[x,y]=meshgrid(-5:0.1:5);
>> z=x.*sin(x+y);
>> mesh(x,y,z)
Команда Plot3
[x,y]=meshgrid([-3:0.15:3]);
z=x.^2+y.^2;
plot3(x,y,z)
55
Глава 2. MATLAB
56
Глава 2. MATLAB
57
Глава 2. MATLAB
58
Глава 2. MATLAB
59
Глава 2. MATLAB
60
Глава 2. MATLAB
61
Глава 2. MATLAB
max(a) max(a,b)
ans = ans =
6 7 3 2 7 6
8 5 9
6 7 6
63
Глава 2. MATLAB
65
Глава 2. MATLAB
8 12 4 6 7 14
• cplxpair(A) — сортирует элементы по строкам или столбцам
комплексного массива А, группируя вместе комплексно сопряженные пары.
Затем найденные пары сортируются по возрастанию действительной части.
Внутри пары элемент с отрицательной мнимой частью является первым.
Действительные элементы следуют за комплексными парами. Заданный по
умолчанию порог 100*eps относительно abs(A(i))) определяет, какие числа
являются действительными и какие элементы являются комплексно
сопряженными. Если А — вектор, cpl xpair (А) возвращает А вместе с
комплексно сопряженными парами. Если А — матрица, cpl xpai r(А)
возвращает матрицу А с комплексно сопряженными парами, сортированную
по столбцам;
• cplxpalr(A,tol) — отменяет заданный по умолчанию порог и
задает новый tol;
• cplxpair(A.[],dim) — сортирует матрицу А по строкам или по
столбцам в зависимости от значения параметра dim;
• cplxpair(A,tol ,dim) — сортирует матрицу А по строкам или по
столбцам в зависимости от значения параметра dim, используя заданный
порог tol.
66
Глава 2. MATLAB
y=sin(x);
p=polyfit(x,y,3)
p = -0.0953 -0.0000 0.8651 0.0000
x=(-4:0.2:4)';
y=sin(x);
f=polyval(p,x);
plot(x,y,'o',x,f)
68
Глава 2. MATLAB
69
Глава 2. MATLAB
70
Глава 2. MATLAB
71
Глава 2. MATLAB
72
Глава 2. MATLAB
73
Глава 2. MATLAB
75
Глава 2. MATLAB
Синтаксис
• для разделения операторов и строк используют точку с запятой (;) или
запятую (,);
• длинные строки можно делить на части используя троеточие (…);
• комментарий начинается символом процента (%).
Функции редактирования и работы с файлами обеспечиваются
редактором/отладчиком М-файлов. Для его запуска необходимо либо
создать новый М-файл (File→New→M-file), либо открыть уже
существующий (File→Open). Для запуска файла его надо сохранить,
используя команду File→Save as. После сохранения М-файла
редактор/отладчик можно закрыть, а сохраненный файл можно запустить из
командной строки.
Тело М-файла может содержать любые математические и логические
выражения, а также управляющие структуры (например, циклы и условные
выражения). Он реализует модульный и объектно-ориентированный подход к
подготовке программ и имеет средства для создания интерфейса
пользователя.
Логические операторы
В качестве логических условий в условных операторах и циклах while
(см. далее) могут использоваться числовые скалярные значения. При этом
нулевое значение трактуется как «ложь» (false), а любое ненулевое — как
«истина» (true). Кроме того, для формирования условий часто используются
операторы сравнения = (равно), ~= (не равно), < (меньше), > (больше), <=
(меньше или равно), >= (больше или равно). Следует иметь в виду, что для
массивов они производят поэлементное сравнение, возвращая массив такого
же размера, как сравниваемые аргументы. Результирующий массив содержит
единицы там, где сравнение элементов дало выполнение условия, и нули там,
где условие сравнения выполнено не было.
76
Глава 2. MATLAB
77
Глава 2. MATLAB
2.4.3.3. Циклы
Для реализации циклов в MATLAB имеется два оператора — for и
while.
Оператор for
В операторе for переменная-счетчик цикла поочередно принимает
значения элементов некоторого вектора:
78
Глава 2. MATLAB
for k = х
% тело цикла
end
Операторы, входящие в тело цикла, будут выполняться при значении
переменной к, равном х(1), затем х(2) и т. д. до x(end). После завершения
цикла значение к остается равным x(end).
Разумеется, чаще всего в цикле for используется последовательный
перебор целочисленных значений счетчика цикла:
for k = 1:N
Однако при необходимости можно использовать дробное значение
шага for k = -1:0.01:1 или перебор произвольных значений for к = [1 10 pi 9
ln(3)].
Оператор while
Второй тип циклов реализуется с помощью оператора while. Тело
цикла выполняется, пока условие cond остается истинным (то есть значение
cond отлично от нуля):
while cond
% тело цикла
end
Если cond изначально имеет нулевое значение, тело цикла не будет
выполнено ни разу.
Оператор break
Чтобы реализовать досрочное завершение цикла, используется
оператор break. Разумеется, он должен применяться в сочетании с условным
оператором, например так:
for k = 1:N
% первая половина тела цикла
% проверка дополнительного условия завершения
if cond
break
79
Глава 2. MATLAB
end
% вторая половина тела цикла
end
Оператор break можно использовать для реализации циклов с
проверкой условия завершения не в начале (как делает оператор while), а в
произвольном месте цикла. Для этого с помощью оператора while создается
«вечный» цикл, а его завершение производится оператором break:
while 1 % «вечный» цикл
% первая половина тела цикла
% проверка условия завершения
if cond
break
end
% вторая половина тела цикла
end
Кроме оператора break для управления выполнением программы
внутри цикла имеется оператор continue. Размещенный внутри цикла for или
while, этот оператор передает управление на проверку условия завершения
цикла, пропуская при этом оставшийся фрагмент тела цикла. Это позволяет
сделать код более наглядным, избежав использования длинного оператора if.
80
Глава 2. MATLAB
d=b*b-4*a*c;
% проверим знак дискриминанта
if d<0
disp('действительных корней нет');
else
x1=(-b-sqrt(d))/(2*a)
x2=(-b+sqrt(d))/(2*a)
end
2. Определим рабочий или выходной день недели по его номеру
% вводим номер дня недели
n=input('n=');
switch n
case 1
disp('рабочий')
case 2
disp('рабочий')
case 3
disp('рабочий')
case 4
disp('рабочий')
case 5
disp('рабочий')
otherwise
disp('выходной')
end
3. Ввод вектора осуществляется с помощью функции strcat,
предназначенной для объединения строк в одну строку, int2str – преобразует
число в строку символов.
N=input('N=')
for i=1:N
81
Глава 2. MATLAB
x(i)=input(strcat('x(',int2str(i),')='));
end
4. Ввод матрицы
n=input('n=');
m=input('m=');
for i=1:n
for j=1:m
a(i,j)=input(strcat('a(',int2str(i),',',int2str(j),')='));
end
end
5. Найти максимальный элемент массива
% положим первый элемент массива максимальным, его номер = 1,
затем все элементы, начиная со второго сравниваем с первым в цикле.
N=input('N=')
for i=1:N
x(i)=input(strcat('x(',int2str(i),')='));
max=x(1);
Nmax=1;
for i=2:N
if x(i)>max
max=x(i);
Nmax=i;
end
end
end
max
6. Найти минимальный элемент последовательности
N=input('N=')
for i=1:N
x(i)=input(strcat('x(',int2str(i),')='));
82
Глава 2. MATLAB
min=x(1);
Nmin=1;
for i=2:N
if min>x(i)
min=x(i);
Nmin=i;
end
end
end
min
Nmin
7. Вычисление факториала
n=input('n=')
y=1;
for i=1:n
y=y*i;
end
end
y
8. Пример кода, являющегося частью функции magic.m,
генерирующего магический квадрат M для нечётных значений размера
стороны n:
[J,I] = meshgrid(1:n);
A = mod(I+J-(n+3)/2,n);
B = mod(I+2*J-2,n);
M = n*A + B + 1;
sin R
9. Пример кода, рисующего график функции sinc-функции :
R
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
10. Вычисление факториала с помощью М-функции
83
Глава 2. MATLAB
function y=f(n)
n=input('n=');
for i=1:n
if i<=1
y=1;
else
y=i*y;
end
end
end
Можно просто воспользоваться встроенной функцией factorial(n).
85
Глава 2. MATLAB
86
Глава 2. MATLAB
87
Глава 2. MATLAB
Пример:
options=optimset('tolX',1.e-10);
[x]=fminbnd(@cos,3,4,options)
x= 3.1416
Значительно сложнее задача минимизации функций нескольких
переменных f(х 1 ,...). При этом значения переменных представляются
вектором х, причем начальные значения задаются вектором х0. Для
минимизации функций ряда переменных MATLAB обычно использует
разновидности симплекс-метода Нелдера-Мида. Мы не будем рассматривать
эту задачу.
Программа:
1;x=0:.01:3; f=x.*sin(x.^2); plot(x,[f;0*f]), grid
2;ginput (% в команде ginput точка снимается нажатием левой клавиши
мыши, Enter – выход из ginput).
88
Глава 2. MATLAB
89
Глава 2. MATLAB
90
Глава 2. MATLAB
2.5.5. Полиномы
Полиномы (их принято называть также степенными многочленами) —
широко известный объект математических вычислений и обработки данных.
Обычно полином записывается в виде
p ( x ) = a n x n + a n −1 x n −1 + ... + a 2 x 2 + a1 x + a 0
Пример:
f=[2 3 5 6];d=[7 8 3];r=conv(f,d)
r= 14 37 65 91 63 18
• [q,r] = deconv(v,u) —возвращает результат деления полинома v
на полином u. Вектор q представляет собой частное от деления, а г — остаток
от деления, так что выполняется соотношение v=conv(u,q)+r.
Пример:
t=[14 37 65 91 63 18];r=[7 8 3];[w,e]=deconv(t,r)
w = 2.0000 3.0000 5.0000 6.0000
e = 1.0e-013 * 0 0 0.1421 -0.1421 -0.2132 -0.1066
Вычисление полиномов
91
Глава 2. MATLAB
92
Глава 2. MATLAB
Х=0:0.05:10; S=sin(X);
D=diff(S); plot(D/0.05)
93
Глава 2. MATLAB
∫ y(x )dx
a
∫ y(x )dx .
a
В приведенных ниже формулах подынтегральное выражение fun
95
Глава 2. MATLAB
• dblquad(@fun,inmin,inmax,outmin,outmax,tol,trace,order) — передает
параметры tol и trace для функции quad или quadl в зависимости от значения
строки order. Допустимые значения для параметра order — @quad , @quadl
или имя любого определенного пользователем квадратурного метода с таким
же вызовом и такими же возвращаемыми параметрами, как у функций quad и
quad1. По умолчанию вызывается @quad. поскольку подынтегральные
функции могут быть негладкими.
⎨ dt
⎪ y ' = f ( y, t )
⎩
с граничными условиями b=y(t0 ,tend , p), где tend , t0 — начальные и конечные
точки интервалов. Параметр t не обязательно означает время, хотя чаще
всего решение дифференциальных уравнений ищется во временной области.
Вектор b задает начальные и конечные условия.
Для решения систем ОДУ в MATLAB реализованы различные методы.
Их реализации названы решателями ОДУ. Приведем два основных
решателя:
• ode45 — одношаговые явные методы Рунге-Кутта 4-го и 5-го
порядка. Это классический метод, рекомендуемый для начальной пробы
решения. Во многих случаях он дает хорошие результаты;
• ode23 — одношаговые явные методы Рунге-Кутта 2-го и 4-го
порядка. При умеренной жесткости системы ОДУ и низких требованиях к
точности этот метод может дать выигрыш в скорости решения;
97
Глава 2. MATLAB
99
Глава 2. MATLAB
ЛИТЕРАТУРА
1. Дьяконов В.П. MATLAB 6.0/6.1/6.5/6.5+Simulink 4/5. Обработка
сигналов и изображений.-М.: СОЛОН-Пресс, 2005.
2. Дьяконов В.П. MATLAB. Учебный курс. СПб.: ПИТЕР, 2001.
3. Дьяконов В.П., Абраменкова И.В. MathCAD 8 PRO в
математике, физике и Internet. - М.: “Нолидж”, 2000. - 512 с.: ил.
4. Ивановский Р.И. Компьютерные технологии в науке и
образовании. Практика применения систем Mathcad Pro. Учебное
пособие. М.: Высшая школа, 2003.
5. Кирьянов Д.В. Самоучитель MathCAD 11. С.-Петербург, 2003
6. Лазарев Ю.Ф. MatLAB 5.X. (Серия «Библиотека студента») К.:
Издательская группа BHV, 2000.
7. Могилев А.В. и др. Информатика: Учебное пособие для
студентов пед. вузов. – М.: Изд. центр «Академия», 2000.
8. Плис А.И., Сливина Н.А. Mathcad 2000. Лабораторный
практикум по высшей математике. - М.: Высш. шк., 2000. - 716
с.: ил.
9. Плис А.И., Сливина Н.А. Mathcad. Математический практикум
для инженеров и экономистов. Учебное пособие.-М.: Финансы и
статистика, 2003.
10. Сергиенко А.Б. Цифровая обработка сигналов. СПб.: Питер,
2002.
100
Приложение
ПРИЛОЖЕНИЕ
Системные переменные
i или j мнимая единица
pi число π
eps погрешность операций над числами с плавающей точкой (2-52)
realmin наименьшее число с плавающей точкой (2-1022)
realmax наибольшее число с плавающей точкой (21023)
inf значение машинной бесконечности
ans переменная, хранящая результат последней операции
NaN указание на нечисловой характер данных (Not-a-Number)
0 Кружок
X Крестик
S Квадрат — Square
d Ромб — Diamond
Р Пятиугольник — Pentagon
h Шестиугольник — Hexagon
v Треугольник острием вниз
^ Треугольник острием вверх
< Треугольник острием влево
> Треугольник острием вправо
102
Приложение
103
Приложение
104
Приложение
105
Приложение
Конечные разности:
• diff — вычисление разностей между соседними элементами;
• gradient — аппроксимация градиента;
• del 2 — дискретный лапласиан.
Корреляция:
• corrcoef — коэффициент взаимной корреляции;
• cov — ковариационная матрица;
• subspace — расчет угла между векторами.
Фильтрация и свертка:
• fiIter, fi1ter2 — одномерная и двумерная дискретная фильтрация;
• conv, deconv — свертка (умножение полиномов) и обращение свертки
(деление полиномов);
• conv2, convn — двумерная и многомерная свертка;
• detrend — удаление линейного тренда.
Преобразование Фурье:
• fft, fft2, fftn — одномерное, двумерное и многомерное прямое дискретное
преобразование Фурье;
• ifft, ifft2, ifftn — одномерное, двумерное и многомерное обратное
дискретное преобразование Фурье;
• fftshift, ifftshift — два зеркальных варианта перестановки половин вектора
или квадрантов матрицы.
Datatypes
В этом разделе сосредоточены средства поддержки типов данных MATLAB.
Demos
В данном разделе собраны демонстрационные примеры.
Elfun
Содержатся файлы, реализующие элементарные математические функции. В
большинстве случаев эти функции встроены в ядро системы, так что в М-
файлах хранится только текст справки.
Тригонометрические функции:
• sin, sinh — синус и гиперболический синус;
• asin, asinh — арксинус и гиперболический арксинус;
106
Приложение
107
Приложение
108
Приложение
109
Приложение
110
Приложение
111
Приложение
112
Приложение
113
Приложение
115
Приложение
116
УЧЕБНОЕ ИЗДАНИЕ
Хлыбов Александр Анатольевич
Хлыбова Ольга Николаевна
MathCAD и MATLAB.
Начальный курс.
Учебно – методическое пособие
Печатается в авторской редакции
117