function y=fglobal(x)
global p
y=x-p.*cos(x);
Пример вызова функции fglobal:
global p
i=1;
for p=0.3:0.1:0.6
z(i)=root(0.1,1,0.0001,@fglobal); i=i+1;
end
>> z
z =
0.2877 0.3725 0.4502 0.5205
Класс Function Functions
Функции этого класса работают с нелинейными функциями скалярного аргумента как с функциями-параметрами.
Класс предназначен для решения следующих задач:
· нахождение нулей функций (решение уравнений);
· оптимизация;
· вычисление определенных интегралов;
· обыкновенные дифференциальные уравнения.
• fminsearch(манипулятор_функции, начальное_приближение) вычисляет точку локального минимума функции;
• fmaxsearch(манипулятор_функции, начальное_приближение) вычисляет точку локального максимума функции;
• fzero(манипулятор_функции, начальное_приближение) вычисляет точку локальный нуль функции;
• quad(манипулятор_функции, нижняя_граница, верхняя_граница) вычисляет определенный интеграл по методу Симпсона.
Некоторые стандартные функции обработки векторов и матриц в среде Matlab: length, size, sum, min, max, mean, prod, diag, find, tril, triu, sort, sortrows, randperm, issorted, ind2sub, sub2ind, reshape.
Length- размер вектора
Size- размерность матрицы
sum – вычисляет суммы элементов столбцов матрицы, возвращает вектор-строку сумм столбцов исходной матрицы;
min – вычисляет минимальные значения среди элементов столбцов матрицы, возвращает вектор-строку минимальных значений столбцов исходной матрицы;
max – вычисляет максимальные значения среди элементов столбцов матрицы, возвращает вектор-строку максимальных значений столбцов исходной матрицы;
У этих функций может может быть еще один выходной параметр, содержащий индексы минимальных элементов столцов:
[min_stolb, ind_min]=min(A);
[max_stolb, ind_max]=max(A);
mean – вычисляет средние значения элементов столбцов матрицы, возвращает вектор-строку средних значений столбцов исходной матрицы;
prod – вычисляет произведения элементов столбцов матрицы, возвращает вектор-строку средних значений столбцов исходной матрицы.
Функции sum, min, max, prod, mean могут иметь второй целочисленный аргумент – номер индекса, по которому осуществляется соответствующее действие (dim – dimension),, по которому осуществляется соответствующее действие (dim – dimension), например:
sum(A, dim).
Если dim=1, то возвращается вектор-строка сумм столбцов; если dim=2, то возвращается вектор-столбец сумм строк.
diag – возвращает столбец диагональных элементов матрицы.
find(A) – возвращает номера ненулевых элементов матрицы, элементы нумеруются по столбцам.
triu(X) возвращает нижнюю треугольную часть матрицы X (u pper tri angular part of X).
triu(X,k) возвращает элементы на и выше k-й диагонали матрицы Х, т. е. tril(X) соответствует k=0/
tril(X) возвращает нижнюю треугольную часть матрицы X (l ower tri angular part of X.
tril(X,k) возвращает элементы на и ниже k-й диагонали матрицы Х, т. е. tril(X) соответствует k=0/
issorted(a) — применяется к вектору a; возвращает значение истина (1), если a упорядочен по неубыванию, иначе ложь (0).
A(p,:) — p-я строка матрицы А;
A(:,q) — q-й столбец матрицы А.
issorted(A(:,q) — возвращает такой же результат, как и upor_stolb(A,q).
issorted(A,'rows') — возвращает значение истина (1), если строки матрицы А упорядочены по первым своим элементам (по первому столбцу).
Получение индексов (subscripts) элемента матрицы по номеру (linear index) соответствующего одномерного массива – функция sub2ind
[I,J]=ind2sub(size(A), Ind)
Ind = sub2ind(size(A),I,J)
A(:) – матрица А вытягивается в вектор «по столбцам».
Функция reshape(A, n, m) возвращает матрицу размером n х m, сформированный из элементов массива A путем их последовательной выборки по столбцам. Если число элементов массива A не равно произведению n х m, выводится сообщение об ошибке.
В частности, reshape можно использовать для формирования из вектора матрицы.
sort(a) — возвращает вектор, полученный из вектора a упорядочиванием по возрастанию.
sort(a, 'ascend') — эквивалентно sort(a).
sort(a, 'descend') — возвращает вектор, полученный из вектора a упорядочиванием по убыванию.
sort(A) — возвращает матрицу, полученную из матрицы А упорядочиванием каждого ее столбца по возрастанию. Допустим последний в списке аргумент – строка 'ascend' или 'descend'. Допустим второй аргумент:
sort(A,dim)
dim=1 – упорядочиваются столбцы матрицы,
dim=2 – упорядочиваются строки матрицы.
[B,IX] = sort(любой набор аргументов с предыдущих слайдов)
IX — массив номеров элементов в исходном массиве (соответствующем столбце исходной матрицы).
Функция sortrows возвращает матрицу, строки которой упорядочены по возрастанию элементов столбца (строки не изменяются, но переставляются).
sortrows (A) — по возрастанию элементов первого столбца.
sortrows(A,column) — по возрастанию элементов столбца с номером column.
[B,index] = sortrows(A) — массив index содержат исходные номера элементов столбца, по которому происходит упорядочение.
Выбор строки, столбца, произвольной части матрицы в среде Matlab.
33. Возможности решения систем линейных алгебраических уравнений в среде Matlab.
Решатели \, /.
Для решения систем линейных уравнений рекомендуется использовать именно их, а не A-1 или inv(A):
1) X = A\B- правое деление, для систем AX = B;
X = B/A- левое деление, для систем XA =B. В этом случае X и B не векторы-столбцы, а векторы-строки. Для решения данным способом необходимо преобразовать векторы-столбцы в векторы-строки.
Метод решения уравнения выбирается в зависимости от вида матрицы А. Если матрица плотная (мало нулевых элементов), то используется метод Гаусса. Для неплотных матриц применяются другие методы.
2) В может не только вектором, но и матрицей. Т.е. можно вычислить несколько решений Х (одно для каждого столбца В в случае \ или для каждой строки В в случае /).
3) Матрица А необязательно квадратная, т. е. есть возможность решать переопределенные и недоопределенные системы.
Специальные методы решения систем линейных уравнений, для неплотных матриц