- •Содержание
- •Лекция № 1. Теория погрешностей План
- •1.1. Источники и классификация погрешностей
- •1.2. Абсолютная и относительная погрешности. Формы записи данных
- •1.3. Вычислительная погрешность
- •2.1. Общие сведения и определения
- •2.2. Отделение корней
- •2.3. Метод половинного деления
- •2.4. Метод простой итерации
- •2.5. Преобразование уравнения к итерационному виду
- •2 0.777373 -3.32063 Search
- •Лекция № 3. Методы решения систем линейных алгебраических уравнений План
- •3.1. Общие сведения и основные определения
- •3.2. Метод Гаусса и его реализация в пакете matlab
- •3.3. Вычисление определителей
- •3.4. Решение систем линейных уравнений методом простой итерации
- •5. Метод Зейделя
- •3.6. Решение систем линейных уравнений средствами пакета matlab
- •Выражения
- •Лекция № 4. Методы решения систем нелинейных уравнений
- •4.2. Метод Ньютона решения систем нелинейных уравнений
- •Последовательные приближения корней
- •4.3. Решение нелинейных систем методами спуска
- •4.4. Решение систем нелинейных уравнений средствами пакета matlab
- •Iteration Func-count f(X) step optimality cg-iterations
- •Iteration Func-count f(X) step optimality cg-iterations
- •Лекция № 5. Интерполирование функций План
- •5.1. Постановка задачи
- •Решение задачи находится отысканием некоторой приближающей функции f(X), близкой в некотором смысле к функции f(X), для которой известно аналитическое выражение/
- •5.2. Интерполяционный полином Лагранжа
- •5.3. Интерполяционный полином Ньютона для равноотстоящих узлов
- •5.3.1. Конечные разности
- •5.3.2. Первая интерполяционная формула Ньютона
- •5.3.3. Вторая интерполяционная формула Ньютона
- •5.4. Погрешность интерполяции
- •5.5. Сплайн-интерполяция
- •5.6. Решение задачи одномерной интерполяции средствами пакете matlab
- •Лекция № 6. Численное дифференцирование
- •6.2. Особенности задачи численного дифференцирования функций, заданных таблично
- •6.3. Интегрирование функций, заданных аналитически (формула прямоугольников, формула трапеций, формула Симпсона)
- •6.4. Погрешность численного интегрирования
- •6.5. Вычисление интегралов методом Монте-Карло
- •Лекция № 7. Методы обработки экспериментальных данных План
- •7.1. Метод наименьших квадратов
- •Сумма квадратов отклонений
- •7.2. Нахождение приближающей функции в виде линейной функции и квадратичного трехчлена
- •7.5. Аппроксимация функцией произвольного вида
- •Лекция № 8. Преобразование Фурье
- •8.2. Эффект Гиббса
- •8.3. Спектральный анализ дискретных функций конечной длительности
- •8.4. Быстрое преобразование Фурье
- •Лекция № 9. Численные методы решения обыкновенных дифференциальных уравнений План
- •9.1. Основные сведения и определения
- •9.2. Метод Пикара
- •9.3. Метод Эйлера
- •9.4. Метод Рунге-Кутта
- •9.5. Средства пакета matlab для решения обыкновенных дифференциальных уравнений
4.4. Решение систем нелинейных уравнений средствами пакета matlab
Найдем решение системы нелинейных уравнении
,
которая может быть записана в векторном виде
,
где
,
,
средствами пакета MATLAB.
Для этого необходимо выполнить следующую последовательность действий:
1. Создать файла fm.m, содержащий описание функции, возвращающей значения функции .
% листинг файла fm.m
function z=fm(x)
z(1,1)=x(1).^2+x(2)^2-4;
z(2,1)=x(2)-x(1)^2-1;
2. Задать вектор начального приближения
>> z(1,1)=1;
>> z(2,1)=1;
3. Обратиться к встроенной функции fsolve( ), возвращающей решение системы нелинейных уравнений
>> x = fsolve('fm',z,optimset('fsolve'))
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
% Процесс оптимизации завершен
% Относительная величина изменения функции меньше, чем переменная
% OPTIONS.TolFun
x =
0.8895
1.7913
4. Проверка полученного решения
>> fm(x)
ans =
1.0e-008 *
0.5162
-0.4888
Для одновременного вывода координат вектора решения уравнения и соответствующего значения вектор-функции следует выполнить команду:
>> [x fval] = fsolve('fm',z,optimset('fsolve'))
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
x =
0.8895
1.7913
fval =
1.0e-008 *
0.5162
-0.4888
Для вывода на экран монитора значений вектора-решения и соответствующего значения функции следует выполнить команду:
>> [x fval exitflag] = fsolve('fm',z,optimset('Display','Iter'));
Norm of First-order
Iteration Func-count f(X) step optimality cg-iterations
1 4 5 1 5 0
2 7 1 1 4 1
3 10 0.0026 0.223607 0.17 1
4 13 4.53078e-008 0.013546 0.00055 1
5 16 5.05378e-017 7.18274e-005 1.79e-008 1
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
В ряде случаев оказывается более удобным использовать метод Ньютона, в котором, как описано в разделе 4.2, необходимо знать в данной точке и значения функции, и значения якобиана, что позволяет реализовать итерационный процесс. Реализация метода Ньютона в пакете MATLAB реализуется следующей последовательностью действий.
1. Создать файла Fm1.m, содержащий описание функции, возвращающую одновременно значения функции и значения якобиана
% листинг файла Fm1.m
function [z,J]=fm(x)
z(1,1)=x(1).^2+x(2)^2-4;
z(2,1)=x(2)-x(1)^2-1;
J(1,1)=2*x(1);
J(1,2)=2*x(2);
J(2,1)=-2*x(1);
J(2,2)=1;
2. Включить режим использования метода Ньютона и отображения итерационного процесса на экране
>> options=optimset('Jacobian','on','Display','Iter');
3. Обратиться к встроенной функции fsolve( ), возвращающей решение системы нелинейных уравнений
>> [x fval exitflag] = fsolve('fm1',z,options);
Norm of First-order