Слайд 1Алгебраические уравнения
и
функции
Слайд 2Весна 2020
Пакет Matlab. Лекция 2
Полиномы
ax2+bx+c
Трансцендентные
(ln, exp, sin…)
Канонический вид
F(x)=0
Алгебраические уравнения
Слайд 3Весна 2020
Пакет Matlab. Лекция 2
При отыскании корней во всех случаях
последовательно решается две задачи:
Отделение корней, т.е. определение областей в каждой
из которых заключён один и только один корень.
Вычисление корней с заданной точностью.
Этапы нахождения корней
Слайд 4Весна 2020
Пакет Matlab. Лекция 2
Методы отделения корней
Аналитический. Если на отрезке
[a, b] функция непрерывна и монотонна, ее значения на концах
отрезка имеют разные знаки, то на рассматриваемом отрезке существует один и только один корень.
Под этот критерий не подпадают кратные корни уравнений!
Табличный. Надежность рассмотренного подхода к отделению корней уравнений зависит как от характера самой функции f(x), так и от выбранной величины шага.
Графический.
x∙sin(x)=1
x∙sin(x)-1=0
Слайд 5Весна 2020
Пакет Matlab. Лекция 2
Решение уравнений в пакете Matlab
(универсальный метод)
Для
решения уравнения произвольного вида используется
x = fzero(fun,x0,options)
fun – указатель
на функцию для которой ищется корень
х0 – начальное приближение для корня / начальный интервал
оptions – опции, задающие модификации параметров решателя – необязательный параметр
Слайд 6Весна 2020
Пакет Matlab. Лекция 2
Использование fzero в случае задания начального
приближения для корня
Знак @ должен быть обязательно!!!!!
Слайд 7Весна 2020
Пакет Matlab. Лекция 2
Использование fzero в случае задания начального
интервала
Слайд 8Весна 2020
Пакет Matlab. Лекция 2
Опции для функции fzero
Слайд 9Весна 2020
Пакет Matlab. Лекция 2
Пример использования опций для функции fzero
Установка
опций производится с помощью функции
оptimset ('параметр', 'значение')
fun = @(x)
exp(-exp(-x)) - x; % function
x0 = [0 1]; % initial interval
options = optimset('Display','iter'); % show iterations
x = fzero(fun,x0,options)
Слайд 10Весна 2020
Пакет Matlab. Лекция 2
Пример использования опций для функции fzero
Слайд 11Весна 2020
Пакет Matlab. Лекция 2
Что еще возвращает функция fzero
[x fval
exitflag output] = fzero(fun,x0,options)
x - решение
fval – значение функции
в точке х
еxitflag – флаг выхода:
оutput - структура, поля которой содержат информацию о процессе вычисления корня
Функция может возвращать более одного значения – в этом случае возвращаемые значения записываются в квадратных скобках через пробел!
Слайд 12Весна 2020
Пакет Matlab. Лекция 2
Что возвращает функция fzero (пример)
Слайд 13Весна 2020
Пакет Matlab. Лекция 2
Значения Exitflag
Exitflag – флаг выхода
1
- Функция сходится к решению х.
-1 – выполнение алгоритма прервано
функцией вывода или графиком.
-3 - При поиске интервала знакопеременности функции было обнаружено значение функции NaN или Inf.
-4 - Комплексное значение функции было обнаружено при поиске интервала знакопеременности.
-5 - алгоритм сходиться к особой точке.
-6 - fzero не обнаружил интервал знакопеременности.
Слайд 14Весна 2020
Пакет Matlab. Лекция 2
Значения полей структуры Output
Output –
структура, содержащая информацию о:
числе итераций, выполненных для уточнения отрезка, содержащего
корень
числе итераций, выполненных для уточнения корня
Числе вычислений функции
Использованном алгоритме
Текстовое сообщение о значении exitflag
Слайд 15Весна 2020
Пакет Matlab. Лекция 2
Правила оформления заголовка функции в Matlab
На
первом месте всегда стоит ключевое слово function (функция).
На втором
месте стоит возвращаемое значение - имя переменной, которой будет присваиваться возвращаемое функцией значение.
На третьем месте стоит знак «=».
На четвертом месте стоит имя функции
На пятом месте в круглых скобках стоят входные аргументы, которые функция принимает – список формальных аргументов.
Заголовок функции никогда не заканчивается «;»!!!
Слайд 16Весна 2020
Пакет Matlab. Лекция 2
Пример оформления заголовка функции в Matlab
function
y = f(x)
Ключевое слово function.
Имя переменной, которой будет присваиваться
возвращаемое функцией значение - у.
На третьем месте стоит знак «=».
Имя функции - f
В круглых скобках стоит аргумент, который функция принимает – формальный аргумент - х.
Слайд 17Весна 2020
Пакет Matlab. Лекция 2
Комментарии к правилам оформления заголовка функции
в Matlab
Обязательными параметрами являются ключевое слово функция и имя функции.
Возвращаемое
значение и входные аргументы могут отсутствовать.
Рекомендуется всегда возвращать результат работы функции – хотя бы в виде логической переменной, принимаемой значения 0/1 (false/true), для возможности контроля корректности работы функции
Слайд 18Весна 2020
Пакет Matlab. Лекция 2
Правила оформления файла для функции в
Matlab
Файл, в котором будет сохраняться функция, должен иметь то же
имя, что и функция.
Путь к каталогу с файлом должен быть прописан в Set Path.
Один файл – одна функция! В одном файле может быть несколько функций, но «видеть» Matlab будет только ту функцию, имя которой совпадает с именем файла.
После редактирования файл всегда должен быть сохранен перед использованием, иначе изменения не вступят в силу.
Слайд 19Весна 2020
Пакет Matlab. Лекция 2
Функция для задания уравнения
Написание функции для
нахождения корня алгебраического уравнения
Здесь используется покомпонентное возведение в степень, поскольку
вид х заранее неизвестен: число, вектор, матрица….
Слайд 20Весна 2020
Пакет Matlab. Лекция 2
Функция для построения графика функции
Написание функции
для построения графика произвольной функции в произвольном диапазоне
Слайд 21Весна 2020
Пакет Matlab. Лекция 2
Построение графика с помощью функции risunok
>>
risunok([0 5])
Слайд 22Весна 2020
Пакет Matlab. Лекция 2
Построение графика с автоматическим выбором шага
Слайд 23Весна 2020
Пакет Matlab. Лекция 2
Сравнение функций рlot и fplot
Шаг выбран
автоматически
Шаг 0,75
Слайд 24Весна 2020
Пакет Matlab. Лекция 2
Решение уравнений в случаях, когда функция
задана в файле
Слайд 25Весна 2020
Пакет Matlab. Лекция 2
Функция для решения уравнений
Функция имеет 2
входных аргумента – ссылку на функцию, для которой будет решаться
уравнение и х, который может являться или начальным приближением или отрезком на котором корень единственный.
Слайд 26Весна 2020
Пакет Matlab. Лекция 2
Вызов функции для решения уравнений
>> my_zero(@f,3)
Функция
f заранее написана и сохранена в папке, имеющийся в путях
Matlab
Слайд 27Весна 2020
Пакет Matlab. Лекция 2
Функция для решения уравнений
Слайд 28Весна 2020
Пакет Matlab. Лекция 2
Нахождение корней полинома
Для нахождения корней полинома
используется функция
x = roots(a)
a – вектор коэффициентов полинома, записанный
от старшей степени.
х – вектор корней полинома
Слайд 29Весна 2020
Пакет Matlab. Лекция 2
Комментарий
Для вычисления значений полинома по известным
коэффициентам можно использовать функцию
r=polyval (p,x)
р – коэффициенты полинома, начиная от
старшего
х – точка, в которой необходимо вычислить значение полинома
r – значение полинома с коэффициентами р в точке х
Слайд 30Весна 2020
Пакет Matlab. Лекция 2
Решение параметрических уравнений
Найти решения квадратного уравнения
х2+b∙x-8 в зависимости от параметра b. Привести зависимость величины корней
от параметра b. Параметр b изменяется в диапазоне от -1 до 5 с шагом 0.1 (b=-1:0.1:5;)
Создать вектор b из 60 элементов
для каждого значения вектора b (индекс i от 1 до 60)
Начать повторяющееся действие
сформировать вектор коэффициентов полинома х2+b∙x-8
найти корни уравнения х2+b∙x-8
записать корни в вектора х1 и х2 на соответствующее место
Закончить повторяющееся действие
Слайд 31Весна 2020
Пакет Matlab. Лекция 2
Цикл
Цикл – это разновидность управляющей конструкции,
предназначенная для организации многократного исполнения набора инструкций.
Бывают:
Цикл с предусловием
Цикл с
постусловием
Цикл со счетчиком
Слайд 32Весна 2020
Пакет Matlab. Лекция 2
Программирование цикла
Создать вектор b из 50
элементов
для каждого значения вектора b (индекс i от 1 до
60)
Начать повторяющееся действие
сформировать вектор коэффициентов полинома х2+b∙x-8
найти корни уравнения х2+b∙x-8
записать корни в вектора х1 и х2 на соответствующее место
Закончить повторяющееся действие
b=0:0.1:5;
for i = 1:length(b)
p=[1 b(i) -8]
r=roots(p)
x1(i)=r(1); х2(i) = r(2);
end
Слайд 33Весна 2020
Пакет Matlab. Лекция 2
Решение параметрических уравнений
(функция в Matlab)
Слайд 34Весна 2020
Пакет Matlab. Лекция 2
Решение параметрических уравнений
(график в Matlab)
Слайд 35Весна 2020
Пакет Matlab. Лекция 2
Решение уравнений в символьном виде
Для получения
аналитического решения в Matlab есть функция
r=solve(eqn, var)
еqn – уравнение,
записанное в виде RHS == LHS
var – переменная, по которой решается уравнение
r – возвращаемое значение – структура, каждый элемент которой представляет собой аналитическую запись решения
Слайд 36Весна 2020
Пакет Matlab. Лекция 2
Решение уравнений в символьном виде
Слайд 37Весна 2020
Пакет Matlab. Лекция 2
Численное решение уравнений, записанных в символьном
виде
Для получения численного решения в Matlab есть функция
r=vpasolve(eqn, var, init_param)
еqn – уравнение, записанное в виде RHS == LHS
var – переменная, по которой решается уравнение
init_param – начальное приближение для нахождение нужного корня, необязательный параметр
r – возвращаемое значение – числовое значение решения
Если уравнение является полиномом – находит все корни!
Слайд 38Весна 2020
Пакет Matlab. Лекция 2
Численное решение уравнений, записанных в символьном
виде
Слайд 39Весна 2020
Пакет Matlab. Лекция 2
Численное решение уравнений, записанных в символьном
виде (3 аргумента)
Слайд 40Весна 2020
Пакет Matlab. Лекция 2
Численное решение уравнений, записанных в символьном
виде (график)