
- •Тема 5. Программная реализация математических моделей
- •5.1 Краткая характеристика matlab
- •Формирование массивов в системе matlab
- •Некоторые специальные символы
- •Элементарные математические функции
- •Некоторые графические функции
- •Интерактивный доступ к справочной информации и документации
- •Примеры: a) Найти функции линейной алгебры. Открываем последовательность окон:
- •5.2 Задачи линейной алгебры, вычисление функций и построение графиков
- •5.3. Решение нелинейных алгебраических уравнений и аппроксимация функций
- •Аппроксимация функции
- •5.4 Решение обыкновенных дифференциальных уравнений и вычисление интегралов
- •Вычисление интегралов
- •Контрольные вопросы
5.3. Решение нелинейных алгебраических уравнений и аппроксимация функций
Система MATLAB позволяет значительно проще, чем на известных языках программирования решать системы нелинейных (алгебраических уравнений) и выполнять аппроксимацию таблично заданных функций.
Пример
8.
Решить уравнение
с начальным приближением x0
= 5 и c выводом
итераций
на экран:
Решение задачи:
function ex1
options = optimset(' Display ',' iter ');
[x, fval] = fzero(@f, 5, options)
function y = f(x)
y = x.^3-2*x-5;
PS:
Первые 3 оператора – основная программа,
2 последних оператора – это функция,
определяющая зависимость
при различных значениях х.
Ниже приведены краткие описания функций MATLAB, используемые при решении задачи.
fzero (@имя функции, x0, options) – поиск нуля функции одной переменной. Решение ищется в окрестности заданной точки x0 путем отыскания интервала, где функция меняет знак. Если такой интервал не находится, то возвращается Inf или NaN. Параметр options может задавать вывод промежуточных результатов (итераций) на экран и точность расчета.
optimset (' Display ',' iter ') – функция для вывода итераций на экран.
[x, fval] - выводит искомое решение и значение функции, соответствующее этому решению.
Более подробно ознакомиться с используемыми функциями можно по HELP MATLAB.
Пример 9. Решить систему уравнений:
(5.1)
с начальными приближениями x0 = 2,5; y0 = 0,5 и c выводом итераций на экран.
Для решения правые части уравнений переносим в левые части
,
(5.2)
так,
чтобы в правых частях остались нули.
Затем ищем минимум функции, состоящей
из суммы этих уравнений, возведенных в
квадрат:
.
Так как сумма квадратов всегда
положительное число, то минимум функции
не может быть меньше 0, а достижение
значения f
= 0 означает, что величины x
и y
, соответствующие этому значению,
достигают искомых решений системы
(5.2).
Решение задачи:
function ex2
options = optimset (' Display ',' iter ');
[x, fval] = fminsearch (@eq1, [2.5, 0.5], options)
function f = eq1(x)
f = (x(1).^2 + x(2).^2 - 9).^2 + (x(1) + sin(x(2)) - 3).^2
PS: Между неизвестными в уравнениях (5.1) и переменными программы имеется соответствие: x = x(1), y = x(2).
Функция MATLAB, используемая при решении задачи:
fminsearch (@имя функции, [начальные приближения переменных], options) – функция поиска минимального значения функции многих переменных.
Аппроксимация функции
Аппроксимация таблично заданной функции полиномом n-ой степени выполняется по методу наименьших квадратов (см. пункт 2.4).
Пример 10. Выполнить аппроксимацию точечно заданной функции x = 0 до 0.7 с шагом 0.1, y = 0.22 0.428 0.604 0.74 0.84 0.91 0.95 0.98 полиномом 2-ой степени. Построить графики точечно заданной функции и аппроксимирующего полинома:
Решение задачи:
x=(0:0.1:0.7)' % массив x состоит из 8 чисел
y=[0.221 0.428 0.604 0.74 0.84 0.91 0.95 0.98]' % массив y состоит из 8 чисел
p=polyfit(x,y,2)
f=polyval(p,x)
table=[x y f y-f]
plot(x,y,'k*',x,f,'-g' )
xlabel('coordinata x')
ylabel('coordinata y’)
title('Grafiki y(x), f(x)')
PS: Количество чисел в массивах x и y должно быть одинаковым; table – имя массива, сформированного из 4-х векторов: x, y, f и (y-f). Всего в этом массиве 8 4 = 32 числа. Массив f также содержит 8 чисел
polyfit (x, y, степень полинома) - функция находит коэффициенты ai полинома p(x) степени n, который аппроксимирует заданную функцию y(x):
p(x) = a1xn + a2xn – 1 + … + anx + an+1
polyval(p, x) - функция для вычисления значений полинома p в заданных точках x.