И другие программы этой серии
1 10
>> Y = diff(X)
Y = 1 2
2
1
2
>> size(Y)
ans = 1 9
>> Y = diff(X,2)
Y = 1 0
-1
1
-8
>> X=magic(5)
X =
17 24
1
8
15
23 5
7
14
16
4 6
13
20
22
-6
48
42 -39 1
-81 40
406
Программные средства численных методов
Аппроксимация производных
407
10
12 19
21
3
11
18 25
2
9
>> Y = diff(X,2)
Y =
-25
20 0
0
5
25
5 0
-5
-25
-5
0 0
-20
25
>> Y = diff(X,2,3)
Y = Empty array: 5-by-5-by-0
Используя функцию diff, можно строить графики производных заданной функции. Пример этого показан ниже:
>> X=0:0.05:10; S=sin(X); >> D=diff(S); plot(D/0.05)
Для получения приближенных численных значений производной от функции sin(x) вектор конечно-разностных значений D поделен на шаг точек по x. Как и следовало ожидать, полученный график очень близок к графику функции косинуса (рис. 8.4).
Рис. 8.4. Приближенный график производной от функции sin(x)
Обратите внимание, что по оси x отложены номера элементов вектора X, а не истинные значения x.
Пакет расширения Symbolic Math Toolbox (одно из первых подробных его описаний дано в [5] и имеется в [10, 14, 16]) позволяет выполнять дифференцирование функций в аналитическом виде, то есть точно. Это, однако, не всегда нужно.
8.5.3. Вычисление градиента функции
Вычисление конечно-разностным методом градиента функций реализуется следующей функцией:
• FX = gradient(F) возвращает градиент функции одной переменной, заданной вектором ее значений F.
Начало в части 1