Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Система компьютерной математики Octave. Лабораторный практикум
.pdf
ϕ
+
+
=
−
=
ϕϕρ
3
cos2)
(
+
=
2
ϕρ
=
Г) Постройте в полярных координатах график функции
)(
ϕ
+
1
в диапазоне изменения аргумента [0; 4π]. Задайте, используя команду set, следующие параметры графика:
– толщину линии – 4 пикселя;
– стиль и цвет линии – произвольные.
Д) Постройте график функции двух переменных
2
⋅=
для x и y,
yxxf sin)(
изменяющихся в диапазонах [-2; 6] и [-4; 4] соответственно.
*Дополнительное задание: найдите в документации другие команды по-
строения трехмерных графиков. Используйте одну из них для построения графика той же функции. Результат добавьте в отчет.
Вариант 9
А) Постройте график функции, заданной соотношениями
со следующими параметрами
–
диапазон изменения аргумента
–
шаг изменения аргумента
–
стиль линии
–
цвет линии
–
толщина линии
–
вид маркера
–
размер маркера
–
сплошная
–
черный
– 2
–
окружность
– 7
Б) Используя команду
на
отрезке
1
xxf sin3)(
Задайте, используя команду
–
толщину линии
–
стиль и цвет линии
– 2
:
– 0.5;
;
;
пикселя
;
;
пикселей
hold on,
[-3; 0] и xxf 33)(
пикселя
–
произвольные
.
постройте в одном окне графики функций
2
set,
для каждого графика
;
–
отрезок
[-2; 6];
−= на
.
отрезке
:
В) Постройте график параметрически заданной функции
)sin1(
tRx
при
t,
изменяющемся в диапазоне
−⋅=
)cos1(cos
ttRy
Г) Постройте в полярных координатах график функции
[0; 3].
[0; 2π].
=
tx
=
t
cos)(
2
−t
tety
2)(
в диапазоне изменения аргумента
дующие параметры графика
–
толщину линии
–
стиль и цвет линии
– 3
:
пикселя
–
Д) Постройте график функции двух переменных
изменяющихся в диапазонах
*
Дополнительное задание: найдите в документации другие команды по
[-2; 2] и [-4; 4]
[0; 2π].
;
произвольные
Задайте, используя команду
.
2
x
−
eyxf
⋅=
для
соответственно
2
)(
.
set,
x и y,
сле
строения трехмерных графиков. Используйте одну из них для построения гра
фика той же функции. Результат добавьте в отчет
30
.
-
-
-

=
=
+
=
ϕϕρ
3
cos41)(
−
=
Вариант 10
cos)(
2
А) Постройте график функции, заданной соотношениями
следующими параметрами:
– диапазон изменения аргумента – отрезок [-3; 3];
– шаг изменения аргумента – 0.5;
– стиль линии – сплошная;
– цвет линии – красный;
– толщина линии – 3 пикселя;
– вид маркера – квадрат;
– размер маркера – 12 пикселей.
Б) Используя команду hold on, постройте в одном окне графики функций
11)(
1
−−= xxf на
Задайте, используя команду
–
толщину линии
–
стиль и цвет линии
В
)
Постройте
отрезке
– 2
график
[-6; 0] и
set,
для каждого графика
пикселя
–
произвольные
;
на
2
xxf sin)(
.
параметрически
отрезке
:
заданной
[0; 4].
функции
tttx
со
−=
ttty
2)(
)sin1(
Г) Постройте в полярных координатах график функции
в диапазоне изменения аргумента
дующие параметры графика
–
толщину линии
–
стиль и цвет линии
Д) Постройте график функции двух переменных
меняющихся в диапазонах
*
Дополнительное задание: найдите в документации другие команды по
tRx
при
t,
изменяющемся в диапазоне
−−=
)2cos1)(cos1(
ttRy
[0; 2π].
[0; 2π].
Задайте, используя команду
set,
сле
:
– 7
пикселей
–
произвольные
[-4; 4] и [-3; 3]
;
.
соответственно
)( yxxf
.
2
⋅=
для
x и y, из-
строения трехмерных графиков. Используйте одну из них для построения гра
фика той же функции. Результат добавьте в отчет
.
Вариант
А) Постройте график функции, заданной соотношениями
следующими параметрами
–
–
–
–
–
–
–
11
:
диапазон изменения аргумента
шаг изменения аргумента
стиль линии
цвет линии
толщина линии
вид маркера
размер маркера
–
сплошная
–
красный
– 2
–
ромб
– 10
пикселя
;
– 0.4;
;
;
;
пикселей
–
.
отрезок
[-3; 1];
2
−=
ttx
1)(
3
со
−=
ttty
5)(
-
-
-
31

−
=
−
=
2
1
x
+
+
3
+
++=
Б) Используя команду hold on, постройте в одном окне графики функций
xxf 515)(
1
−−= на
Задайте, используя команду
–
толщину линии
–
стиль и цвет линии
отрезке
– 4
пикселя
–
[-4; 0] и
set,
2
для каждого графика
;
произвольные
.
В) Постройте график параметрически заданной функции
)cos5.0(sin
+=
tRy
ttRx
при t, изменяющемся в диапазоне
)2sin1(
Г) Постройте в полярных координатах график функции
2
на
)1(5)( xxf +−=
отрезке
[-3; 2].
:
[0; 2π].
+=
2
ϕϕρ
3cos1)(
в диапазоне изменения аргумента
дующие параметры графика
–
толщину линии
–
стиль и цвет линии
– 7
–
:
пикселей
Д) Постройте график функции двух переменных
меняющихся в диапазонах
*
Дополнительное задание: найдите в документации другие команды по
[-4; 4] и [-3; 3]
[0; 2π].
;
произвольные
соответственно
Задайте, используя команду
.
)(
yxxf
для
.
set,
сле
x и y, из-
строения трехмерных графиков. Используйте одну из них для построения гра
фика той же функции. Результат добавьте в отчет
.
Вариант 12
А) Постройте график функции, заданной соотношениями
со следующими параметрами
–
диапазон изменения аргумента
–
шаг изменения аргумента
–
стиль линии
–
цвет линии
–
толщина линии
–
вид маркера
–
размер маркера
–
сплошная
–
зеленый
– 2
–
окружность
– 8
Б) Используя команду
1
)(
xf
= на
1
x
2
отрезке
:
;
;
пикселя
пикселей
hold on,
[-1; 2] и
–
отрезок
[-2; 5];
– 0.5;
;
;
.
постройте в одном окне графики функций
1
)(
xf
2
x
= на
отрезке
[-1; 1].
−
=
etx
)(
=
sin)(
-
-
-
t
2
tty
Задайте, используя команду
–
толщину линии
–
стиль и цвет линии
– 4
В) Постройте график параметрически заданной функции
ttRx
−−=
set,
для каждого графика
пикселя
–
произвольные
;
)3sinsin1(
при
t,
)cos1)(2cos1(
ttRy
:
.
изменяющемся в диапазоне
32
[0; 2π].

012
x
x
022
x
x
1−=
i
2
2
x
x
Г) Постройте в полярных координатах график функции
+=
3
ϕϕρ
2cos1)(
в диапазоне изменения аргумента [0; 2π]. Задайте, используя команду set, следующие параметры графика:
– толщину линии – 3 пикселя;
– стиль и цвет линии – произвольные.
Д) Постройте график функции двух переменных
y,
изменяющихся в диапазонах
*
Дополнительное задание: найдите в документации другие команды по
[-1; 1] и [-1; 1]
соответственно
1)( yxxf −+=
.
22
для
x и
строения трехмерных графиков. Используйте одну из них для построения гра
фика той же функции. Результат добавьте в отчет
.
Лабораторная работа № 3
РЕШЕНИЕ УРАВНЕНИЙ И СИСТЕМ УРАВНЕНИЙ
-
-
Цель работы: изучить функции
уравнений различными методами
Octave
.
для решения уравнений и систем
1. Нахождение корней полинома. Рассмотрим сначала уравнение вида
,
где
n
0)(=xP
что такое уравнение имеет ровно n корней (с учетом их кратности
нение
2
есть полином n-ой степени. Из курса математики известно
)(xP
n
).
=+−
имеет корень
x=1, но
кратность этого корня равна двум
Так, урав
Среди корней могут быть и комплексные числа. Например, уравнение
2
мнимая единица
писывается в виде
Для нахождения корней полинома в пакете
roots
перечисляются начиная со старшей степени
Пример 1. Вызов функции
res=roots([1, -2, 2])
вернет вектор-столбец корней полинома
=+−
имеет два комплексно сопряженных корня
,
a+bi,
.
Заметим, что в
Octave
комплексное число всегда за
так, например, значение i записывается как
Octave
: 1+i и 1-i,
где i есть
0+1i .
предусмотрена функция
(массив коэффициентов полинома). Коэффициенты полинома
.
2
+−
,
.
-
res =
1 + 1i
1 - 1i
Пример 2. Найти корни полинома
вектор коэффициентов (отсутствующим слагаемым соответствуют нулевые ко
эффициенты
P=[1,5,0,0,3];
res=roots(P)
):
33
34
.
Определим сначала
35)(
++= xxxP
-

=
+
Получим два вещественных и два комплексных корня:
res =
-4.97565 + 0.00000i - вещественный корень
-0.90120 + 0.00000i - вещественный корень
0.43842 + 0.69052i - комплексный корень
0.43842 - 0.69052i - комплексный корень
2. Решение систем линейных уравнений. Систему линейных алгебраиче-
ских уравнений (СЛАУ) в матричном виде можно записать так: AX=B, где A –
матрица коэффициентов, B – матрица (в частном случае – вектор-столбец) правой части, X – матрица (в частном случае – вектор-столбец) неизвестных.
Будем рассматривать только случай, когда количество уравнений равно количеству неизвестных (т. е. A является квадратной матрицей). В этом случае
система имеет единственное решение, если определитель системы det(A) не равен нулю.
Наиболее компактная форма записи использует операцию обратного деления (X = A\B). Эта же форма является наиболее правильной, поскольку не использует в явном виде промежуточное вычисление обратной матрицы. Поэтому
такая форма записи будет работать даже для вырожденных и неквадратных
матриц (для недоопределенных и переопределенных СЛАУ).
Альтернативный вариант – использование обратной матрицы. В этом случае
столбец неизвестных вычисляется по формуле X = inv(A)*B. Заметим, что вычисление обратной матрицы требует O(n3) операций, где n – число
строк/столбцов матрицы A.
Кроме того, пакет Octave содержит целый ряд вспомогательных функций,
которые программист может использовать для реализации конкретного метода
решения систем линейных алгебраических уравнений:
– функция
lu(A)
представляет матрицу A как произведение некоторой матрицы L на верхне-треугольную матрицу U. Матрица L обладает тем свойством,
что при перестановке строк ее можно превратить в нижне-треугольную матрицу. В результате исходное уравнение можно преобразовать к виду L*U*X = B, а
затем решить две простые системы: L*Y = B и U*X = Y;
– функция
chol(A)
представляет симметричную положительно определенную матрицу A в зависимости от установленных опций как произведение L*L'
или U'*U, где L – нижне-треугольная, а U – верхне-треугольная матрица
с ненулевыми диагональными элементами;
– функция
rref([A, B])
решает исходную систему уравнений методом
Гаусса. Функция получает расширенную матрицу [A, B] и возвращает матрицу
вида [E, X], где E – единичная матрица, а X – вектор-столбец решений.
Пример. Решим разными методами систему уравнений с симметричной по-
ложительно определенной матрицей:
xx
21
24
−=++
xxx
xx
927
321
32
−=+
482
34

Напишем и выполним программу:
A=[4,1,0; 1,7,2; 0,2,8];
B=[2;-9;-4];
D=det(A)
X=A\B
Получим
D = 200
X =
0.84000
-1.36000
-0.16000
Поскольку определитель матрицы не равен нулю, полученное решение
единственно.
Реализуем метод обратной матрицы для той же системы уравнений:
V=inv(A)
X=V*B
Получим:
V =
0.260000 -0.040000 0.010000
-0.040000 0.160000 -0.040000
0.010000 -0.040000 0.135000
X =
0.84000
-1.36000
-0.16000
Реализуем LU-разложение для той же системы уравнений:
[L,U]=lu(A)
Y=L\B
X=U\Y
Получим:
L =
1.00000 0.00000 0.00000
0.25000 1.00000 0.00000
0.00000 0.29630 1.00000
U =
4.00000 1.00000 0.00000
0.00000 6.75000 2.00000
0.00000 0.00000 7.40741
Y =
2.0000
-9.5000
-1.1852
35

X =
0.84000
-1.36000
-0.16000
Реализуем разложение Холецкого для той же системы уравнений.
А) с использованием верхне-треугольной матрицы:
U=chol(A,'upper') % или просто U=chol(A)
Y=U'\B
X=U\Y
Получим
U =
2.00000 0.50000 0.00000
0.00000 2.59808 0.76980
0.00000 0.00000 2.72166
Y =
1.00000
-3.65655
-0.43546
X =
0.84000
-1.36000
-0.16000
Б) с использованием нижне-треугольной матрицы:
L=chol(A,'lower');
Y=L\B
X=L'\Y
Получим
L =
2.00000 0.00000 0.00000
0.50000 2.59808 0.00000
0.00000 0.76980 2.72166
Y =
1.00000
-3.65655
-0.43546
X =
0.84000
-1.36000
-0.16000
Заметим, что оба подхода приводят к одному и тому же результату, при
этом при транспонировании матрица L превращается в матрицу U, и наоборот,
матрица U превращается в матрицу L.
36

Реализуем метод Гаусса для той же системы уравнений:
res=rref([A,B])
X=res(:,end)
Получим:
res =
1.00000 0.00000 0.00000 0.84000
0.00000 1.00000 0.00000 -1.36000
0.00000 0.00000 1.00000 -0.16000
X =
0.84000
-1.36000
-0.16000
3. Проверка матрицы на положительную определенность. Матрица положительно определена тогда и только тогда, когда все ее собственные значения положительны. Напомним, что число λ называется собственным значением
матрицы (оператора) A, если существует такой ненулевой вектор x, что справедливо равенство A(x) = λ·x.
Для нахождения собственных значений пакет Octave содержит команду
eig
которая возвращает собственные значения и собственные векторы матрицы.
Синтаксис команды:
[V,D] = eig(A)
– возвращается матрица V, столбцы которой являются
собственными векторами матрицы A, и диагональная матрица D, содержащая
собственные значения матрицы A.
D = eig(A)
– возвращаются только собственные значения матрицы A.
Пример. Вычислим собственные значения и собственные векторы матрицы
рассмотренной ранее системы уравнений:
A=[4,1,0; 1,7,2; 0,2,8];
[V,D]=eig(A)
Получим
V =
0.91508 -0.38755 0.11153
-0.36715 -0.68619 0.62796
0.16684 0.61558 0.77021
D =
Diagonal Matrix
3.5988 0 0
0 5.7706 0
0 0 9.6306
,
Так как все собственные значения больше нуля, то матрица A является по-
ложительно определенной.
37

0312
5
xxx
4. Решение нелинейных уравнений. Пусть нужно решить уравнение
F(x) = 0. Воспользуемся для этого командой fzero. Синтаксис команды:
fzero(F, x0)
fzero(F, [x1, x2])
В первом случае
fzero
ищет корень уравнения, расположенный вблизи
точки x0, которая играет роль начального приближения. Во втором случае ищет
корень, расположенный на отрезке [x1, x2]. Если корень уравнения на данном
отрезке не существует, команда
fzero
сообщает пользователю об ошибке.
Следовательно, необходимо сначала отделить корни уравнения, которые затем
можно будет уточнить с помощью команды
fzero
. Чаще всего отделить корни
можно графическим способом.
Пример. Найти корни уравнения
234
=+−+
.
Построим график заданной функции на отрезке [-8; 6].
Из графика видно, что один корень находится на отрезке [-8; 6], а остальные
– на отрезке [-2; 4], однако не очень понятно, сколько их там. Поэтому дополнительно построим график функции F(x) на отрезке [-2; 4]. Получим
38

По графику определим отрезки [-1; 0], [0;1] и [1; 2], каждый из которых содержит ровно один корень.
Теперь можно приступить к написанию программы. Задать функцию F(x) в
программе можно с помощью команды
@(x) выражение:
F=inline('x^4+5*x^3-12*x^2+3');
или F=@(x) x^4+5*x^3-12*x^2+3;
inline('выражение')
Теперь найдем корни уравнения:
x1 = fzero(F,[-8,-6])
x2 = fzero(F,[-1, 0])
x3 = fzero(F,[ 0, 1])
x4 = fzero(F,[ 1, 2])
Получим в командном окне:
x1 = -6.7643
x2 = -0.46136
x3 = 0.58641
x4 = 1.6393
или
Результаты расчета можно проверить с помощью команды
roots
, так как
в нашем примере функция F(x) есть полином четвертой степени. Выполнив команды
>> P = [1, 5, -12, 0, 3];
>> roots(P)
мы получим тот же результат.
39
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
