Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \

В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \. Чтобы решить систему линейных уравнений вида

A⋅y =B , (1)

где A – заданная квадратная матрица размером NxN,

B – заданный вектор–столбец длины N, достаточно применить операцию \ и вычислить выражение A\ B .

Операция \ называется левым делением матриц и, будучи примененная к матрицам A и B в виде A\B , примерно эквивалентна вычислению выражения inv(A)*B. Здесь под inv(A) понимается вычисление матрицы, обратной к матрице A . Операцию / называют правым делением матрицы. Выражение A/B примерно соответствует вычислению выражения B*inv(A). Значит, эта операция позволяет решать системы линейных уравнений вида y⋅A= B .

Решение уравнения F(x)=0, или нахождение нулей функции, осуществляется с помощью функции fzero(name, x0) . В качестве первого аргумента ей передается имя функции, задающей исходное уравнение, вторым аргументом служит начальное приближение к корню. Определим, в качестве примера, нули функции cos(x) на отрезке от 0 до pi. В качестве начального приближения примем x0=1.

>> x=fzero('cos', 1)

x = 1.5708

Если требуется найти корень функции, отличной от стандартной (встроенной в систему MATLAB) и тем самым не имеющей в рамках системы MATLAB фиксированного имени, то нужно приписать некоторое имя выражению, вычисляющему функцию.

Пусть, например, требуется найти корни уравнения cos(x)=x, что эквивалентно нахождению нулей функции, вычисляемой по формуле y=cos(x)−x, не имеющей в рамках системы MATLAB фиксированного имени. В этом случае нужно создать Mat–функцию вида

function y=MyFunction1(x)

y=cos(x)-x

После этого можно воспользоваться функцией fzero:

>> x=fzero('MyFunction1',pi/2)

x = 0.7391

Если найдено абсолютно точное значение корня, то значение функции в этой точке равно нулю. Таким образом, величина функции в приближенно найденном нуле косвенно характеризует погрешность результата. Чтобы управлять погрешностью, нужно осуществлять вызов функции fzero с тремя аргументами fzero(name, x0, tol ), где tol задает требуемую величину погрешности (ошибки). Необходимо отметить, что функция fzero находит нули только вещественнозначных функций одной вещественной переменной. Однако часто бывает необходимо найти комплексные корни вещественнозначных функций, особенно в случае многочленов. Для этой цели в системе MATLAB существует специальная функция roots(p), которой в качестве аргумента передается массив коэффициентов многочлена (p). Например, для многочлена Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru нужно сначала сформировать массив его коэффициентов (расположив по порядку убывания степени х):

>> p = [ 1 -3 3 -3 2 ]:

>> r = roots( p)

r = 2.0000

-0.0000 +1.0000i

-0.0000 –1.0000i

1.0000

В задаче о нахождении нулей функции сложным моментом является нахождение начального приближения к нулю функции, а также априорная оценка их количества. Поэтому важно параллельно с применением функций типа roots или fzero визуализировать поведение искомых функций на том или ином отрезке значений аргумента.

В системе MATLAB имеются специальные функции для поиска минимума заданных функций. При этом возможен поиск минимума как для функции одной вещественной переменной, так и для функций многих переменных. Для функций одной переменной их минимумы разыскивает функция

xmin =fmin(name, x0, x1). Здесь name представляет имя функции, у которой находятся минимумы, а x0 и x1 задают отрезок поиска. Для поиска минимума функции нескольких переменных применяется функция fmins: xmins = fmins( name, x0). Здесь name является именем функции нескольких переменных, для которой ищется минимум, а x0 – это вектор ее аргументов, с которого начинается поиск. Для иллюстративного примера создадим простую функцию двух переменных имеющую минимумом точку (0,0).

function у = MyFunc2(х)

у = x(1)^2+ x(2)^2;

После этого можно вызвать функцию fmins, которая приближенно находит вектор xmin координат точки минимума:

>> xmin = fmins( 'MyFunc2', [1,1] );

>> xmin(1)

ans =-2.1023e-005

>> xmin(2)

ans =2.5484е-005

Для вычисления интегралов методом трапеций в системе MATLAB предусмотрена функция trapz: Integ = trapz(х, у). Точность вычисления интеграла зависит от величины шага интегрирования: чем меньше этот шаг, тем больше точность.

Вычислим простой интеграл Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru методом трапеций с шагом интегрирования рi/10.

>> dx = pi/10;

>>х = 0:dx:pi;

>> y=cos(x);

>>I1 = trapz(x,y);

I1 = 5.5511e-017

Обычно для достижения высокой точности требуется выполнять интегрирование с очень малыми шагами, а контроль достигнутой точности осуществлять путем сравнения последовательных результатов. При одном и том же шаге интегрирования методы более высоких порядков точности достигают более точных результатов. В системе MATLAB методы интегрирования более высоких порядков точности реализуются функциями: quad (метод Симпcона) и quad8 (метод Ньюто-на-Котеса 8-го порядка точности).

Двойные интегралы в системе MATLAB вычисляются с помощью специальной функции dblquad.

Вычислим интеграл вида Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru .

Оформим подынтегральную mat–функцию и вызовем функцию dblquad:

function z = integ(x, у)

z = x.*sin(y) + y.*sin(x);

>>J = dblquad( 'integ', 0, 1, 1, 2 );

J = 1.1678

Возможности встроенного пакета символьных вычислений и операции Symbolic Math Toolbox достаточно обширны, рассмотрим лишь некоторые его возможности. Символьный объект создается при помощи функции syms. Команда создает три символьные переменные х, а и b

» syms х a b

Конструирование символьных функций от переменных класса sym object производится с использованием обычных арифметических операций и обозначений для встроенных математических функций. Запись формулы для выражения в одну строку не всегда удобна, более естественный вид выражения выводит в командное окно функция pretty:

Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru

Рисунок 5.1– Демонстрация работы функции pretty

Упростим выражение Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru , используя функцию simplify.

Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru

Рисунок 5.2– Демонстрация работы функции simplify

Символьную функцию можно создать без предварительного объявления переменных при помощи sym, входным аргументом которой является строка с выражением, заключенная в апострофы:

Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru

Рисунок 5.3 – Демонстрация создания символьной переменной без предварительного объявления

Упрощение тригонометрических, логарифмических, экспоненциальных

функций и полиномов осуществляется функцией expand, формат обращения к которой имеет следующий вид: rez=expand(S), где S – символьное выражение, которое нужно упростить, rez – результат упрощения.

Например:

>> syms x y;

>> rezl=expand(sin(x+y))

rezl = sin (x) *cos (у) +cos (x) *sin (y)

С помощью функции factor можно раскладывать многочлены на простые множители, а целые числа – в произведение простых чисел

>> factor(sym('x^5 – 1') )

ans =

(х-1)*(х^4+х^3+х^2+х+1)

Функция subs осуществляет подстановку новых выражений для указанных символьных переменных:

Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru

Рисунок 5.4– Демонстрация работы функции subs

Symbolic Math Toolbox позволяет работать как с неопределенными интегралами, так и с определенными. Неопределенные интегралы от символьных функций вычисляются при помощи функции int, в качестве входных аргументов указываются символьная функция и переменная, по которой происходит интегрирование (см. рис.5.5).

Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru

Рисунок 5.5– Демонстрация работы функции int

Для нахождения определенного интеграла в символьном виде следует задать нижний и верхний пределы интегрирования, соответственно, в третьем и четвертом аргументах int:

Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru

Рисунок 5.6– Демонстрация работы функции intдля нахождения определенного интеграла

Перечислим еще несколько функций, часто используемых при символьных вычислениях:

inv – вычисляет обратную матрицу;

limit –вычисляет пределы;

taylor – осуществляет разложение функций в ряд Тейлора;

solve – решает алгебраическое уравнение и систему алгебраических уравнений.

Для работы с символьными данными предусмотрена оболочка funtool. Она представляет собой интерактивный графический калькулятор, позволяющий быстро построить графики двух функций Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru и Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru . Интерфейс данного приложения представлен на рисунке 5.7. При запуске выводятся три автономных окна: два графически и управляющее. Управляющее окно содержит два поля для ввода функций, поле ввода пределом изменения переменной x, поле ввода масштабирующего коэффициента.

Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru

Рисунок 5.7 – Интерфейс приложения funtool

Порядок выполнения

1. Составить и отладить программы для нахождения корней уравнения f1(x) = 0 и f2(x) = 0 и вывести графики функции на основании задания из таблицы 5.1.

2. Найти определенный интеграл для подынтегральной функции, заданной в таблице 5.2.

Таблица 5.1– Варианты заданий для нахождения корней уравнения

№ варианта Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru – полином 3-ей степени с коэффициентами a Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-1 -1 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-2 -15 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-1 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-8 -70 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-4 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-5 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-3 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-6 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-9 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-7 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-1 -4 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-2 -6 -7 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-3 -9 -8 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-4 -75 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru
-5 -1 Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru

Таблица 5.2 – Варианты функций для нахождения значения интеграла

№ варианта Функция Интервал интегрирования
начало интервала конец интервала
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -2
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -2
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -2
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -2
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -0.5 4.5
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -1.4 1.4
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -5
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -5
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -4
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -2
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -2
Продолжение таблицы 5.2
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -2
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -1
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -2
Основные теоретические сведения. В системе MATLAB для решения систем линейных уравнений предусмотрены знаки операций / и \ - student2.ru -2

3. Найти определенный интеграл для подынтегральной функции, заданной в таблице 5.2 с использованием пакета символьных вычислений.

Содержание отчета

1. Цель занятия.

2. Листинг программы и результаты выполнения.

Контрольные вопросы

1.Для чего служит функция fmin?

2. Для чего служит функция fzero?

4. Перечислите основные внешние расширения системы MATLAB для поиска экстремумов функций.

5. Какая функция служит для вычисления определенного интеграла?

6. Назовите функции работы с символьными переменными.

Практическое занятие № 6

Наши рекомендации