1 семестр / Линейная Алгебра / модуль 3 / lab7 / lab7_kozhuhov
.pdfЛинейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.
Лабораторная работа 7.
Системы координат.
Декартовая система координат (также именуемая прямоугольной системой координат) задаётся началом координат, двумя перпендикулярно направленными осями координат и единичным отрезком для численного обозначения расстояния между двумя точками. Оси координат принято обозначать символами x (ось абсцисс) и y (ось ординат).
Таким образом, положение любой точки на плоскости однозначно определено двумя числами: первое число – величина проекции точки на первую ось (взятая с плюсом, если проекция попала на “положительную” часть оси, или с минусом, если на “отрицательную”), а второе – величина проекции соответственно на вторую ось.
Говорят, что на плоскости введена полярная система координат < O; u >, если заданы:
1.некоторая точка O, называемая полюсом;
2.некоторый луч u, исходящий из точки O и называемый полярной осью.
Полярными координатами точки M 6= O называют два числа: полярный радиус r(M) =
j ~ j
OM и полярный угол '(M) - угол, на который следует повернуть ось u для того, чтобы её
направлоение совпало с направлением вектора ~ . запись означает, что точка M
OM M(r; ')
имеет полярные координаты r и '.
Пусть на плоскости введены правая декартова прямоугольная система координат Oxy(т.е. такая, что кратчайший поворот от оси Ox к оси Oy происходит против часовой стрелки) и полярная система < O; u >, причём полярная ось совпадает с положительной полуосью абсцисс. Тогда связь между декартовыми прямоугольными и полярными координатами произвольной точки M 6= O задаётся формулами.
|
|
|
y |
|
x = r cos '; y = r sin '; r = px2 + y2; tg ' = |
||||
x |
Цилиндрическая система координат по своей сути является продолжением полярной системы координат применительно к трёхмерному пространству. Координата z в цилиндрических координатах равна координате z в декартовых координатах.
Matlab имеет встроенные команды для покоординатного перевода из одной системы координат в другую. Так, например, cart2pol переводит из картезианской (декартовой) системы координат в полярную или цилиндрическую в зависимости от количества аргументов.
>> |
help cart2pol |
|
|
|
|
|
CART2POL Transform Cartesian to polar |
coordinates . |
|||||
|
[TH ,R] = |
CART2POL (X ,Y) transforms |
corresponding elements of data |
|||
|
stored in |
Cartesian coordinates X ,Y to polar coordinates ( angle TH |
||||
|
and radius R ). The arrays X and Y must be the same size ( or |
|||||
|
either can be scalar ). TH is returned in radians . |
|||||
|
|
|
|
|
||
|
Так, например, можно получить полярные координаты точки с координатами (3; 3) в |
|||||
декартовой системе. |
|
|
|
|
||
|
|
|
|
|
|
|
>> [phi , r] = |
cart2pol (3 , 3); |
|
|
|
|
|
>> |
fprintf ( ’phi =%f, r=%f\n’, phi , r) |
|
|
|
|
|
phi =0.785398 , |
r =4.242641 |
|
|
|
|
|
|
|
|
|
|
||
|
Действительно, угол отклонения равен =4, а раccтояние до начала координат p |
|
. |
|||
|
18 |
|
1
Линейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.
Системы координат. Примеры.
Пример 1.
Для отображения графиков функция в полярных координатах удобно использовать функцию polar. Так, например, можно нарисовать так называемую полярную розу r = a sin(n ').
clear all close all clc
n = 7; a = 2;
phi = 0: pi /100:2* pi ;
polar ( phi , a* sin (n* phi ), ’k ’ );
90
|
2 |
|
120 |
|
60 |
|
1.5 |
|
150 |
1 |
30 |
|
0.5 |
|
180 |
|
0 |
210 |
330 |
240 |
300 |
270
Варьируя значения параметра n, можно получать разное количество лепестков полярной розы.
Пример 2.
Для графика функции y = 2x + 3 произвести поворот координатных осей на pi=3 против часовой стрелки. Отразить результат с помощью функции plot.
Решение:
Для поворота координатных осей используем замену.
x = x0 cos( ) y0 sin( ) y = x0 sin( ) + y0 cos( )
Таким образом:
2
Линейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.
|
|
x0 sin( ) + y0 cos( ) = 2 x0 cos( ) 2 y0 sin( ) + 3 |
|
|
|
|||||||||||
|
|
|
y0 |
= x0 |
|
2 cos( ) sin( ) |
+ |
3 |
|
|
|
|
|
|||
|
|
|
|
|
cos( ) + 2 |
|
sin( ) |
cos( ) + 2 |
sin( ) |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|||||||
|
Создаём скрипт следующего содержания: |
|
|
|
|
|
|
|
||||||||
clear |
all ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
close |
all ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
clc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
figure , hold , grid |
on |
|
|
|
|
|
|
|
|
|
|
|
|
|||
x = -10:0.01:10; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
y = 2.* x + 3; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
plot ( |
x , y , ’g ’ |
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a |
= pi /3; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y_ |
= |
(2* cos (a)- sin (a )) |
/ |
( cos (a )+2* sin (a )) |
.* x |
+ 3/( cos (a )+2* sin (a )); |
||||||||||
plot ( x , y_ , ’b ’ ); |
|
|
|
|
|
|
|
|
|
|
|
|
||||
legend ( ’y(x) ’, ’y - new (x) ’ ); |
|
|
|
|
|
|
|
|
|
|||||||
|
Результат выполнения скрипта |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y(x) |
|
|
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
y−new(x) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
−5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
−10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
−15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
−20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
−10 |
−8 |
|
|
−6 |
−4 |
|
−2 |
0 |
|
2 |
4 |
6 |
8 |
10 |
Так как произошёл поворот осей координат против часовой стрелки, то график функции соответственно совершил поворот по часовой стрелке.
Системы координат. Упражнения.
Упражнение 1.
Построить график функции x2 + y2 = 1 в декартовой системе координат с помощью функции plot. Провести замену к полярным координатам, построить график в полярных координатах с помощью функции polar. Сравнить полученные результаты.
Упражнение 2.
Создать функцию shift_rotate в отдельном файле shift_rotate.m, с помощью которой производится поворот графика функции y = 3 x + 2 на k радиан по часовой стрелке, а также его сдвиг на xm относительно оси абсцисс и на ym относительно оси ординат.
Переменные k; xm; ym должны являться аргументами этой функции.
3
Линейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.
Указания:
Простейший пример функции от двух аргументов (содержимое файла add.m). В данном случае result является возвращаемым значением, add - имя функции, x и y - аргументы функции.
function result = add ( x , y ) result = x + y;
end
Пример её использования:
>> add (13 ,2) ans =
15
Проверьте созданную Вами функцию на особенных значениях. Например, очевидно, что при достаточно небольшом k поворот осей координат будет практически незаметен.
Кривые второго порядка.
Упражнение 3.
Для уравнения кривой второго порядка a x2 + b xy + c y2 = 1 реализовать функцию get_canonical, которая приводит уравнение данной кривой к каноническому виду u x2 + v y2 = 1, используя поворот осей координат на определённый угол. Таким образом, заголовок файла get_canonical.m будет выглядеть примерно следующим образом
function [u ,v , phi ] = get_canonical (a ,b ,c)
...
Пример 3. Matlab обладает рядом встроенных функций для упрощённого построения графиков некоторых функций. Одна из таких функций - ezplot.
Построить эллипс x2 + y2 = 1 можно следующим образом:
>> ezplot ( ’x ^2+ y ^2=1 ’), axis ([ -1 1 -1 1])
Кроме того, данную функцию можно использовать и с символьными переменными.
>>syms x y
>>ezplot ( x + y - 1 )
Обратите внимание на заголовок получившегося графика.
Упражнение 4.
x2 + xy + 2y2 = 1
С помощью реализованной Вами ранее функции get_сanonical привести уравнение данной кривой к каноническому виду. Нарисовать график полученной кривой, отметить фокусы, отобразить директрисы. Нарисовать кривую, заданную первоначальным уравнением. Сравнить результат.
4
Линейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.
Поверхности второго порядка.
Matlab обладает мощным набором встроенных функций для построения различных поверхностей, в том числе и поверхностей второго порядка.
Эллипсоид можно определить следующей зависимостью координат точек своей поверхности от двух параметров u и v:
x = a sin(u) cos(v) y = b sin(u) cos(v) z = c sin(u) cos(v)
Пример построения эллипсоида:
clear |
all ; |
||
close |
all ; |
||
clc |
|
|
|
a =1; |
|
|
|
b =4; |
|
|
|
c =1; |
|
|
|
u |
= |
(0:0.01* pi :2* pi ) ’; |
|
v |
= |
0:0.01* pi :2* pi ; |
|
X |
= |
a* sin (u )* cos (v ); |
|
Y |
= |
b* sin (u )* sin (v ); |
|
Z |
= |
c* cos (u )* ones ( size (v )); |
figure ( ’ Color ’,’w ’) hS = mesh (X ,Y ,Z );
xlabel ( ’x ’); ylabel ( ’y ’); zlabel ( ’z ’)
Однополостный гиперболоид определяется следующей зависимостью координат точек поверхности от двух параметров u и v:
|
|
|
x = a cosh(u) cos(v) |
|
|
|
y = b cosh(u) sin(v) |
|
|
|
z = c sinh(u) |
clear |
all ; |
||
close |
all ; |
||
clc |
|
|
|
a =2; |
|
|
|
b =4; |
|
|
|
c =1; |
|
|
|
u |
= |
( -1:0.01:1) ’; |
|
v |
= |
[0:0.01* pi :2* pi ]; |
|
X |
= |
a* cosh (u )* cos (v ); |
|
Y |
= |
b* cosh (u )* sin (v ); |
|
Z |
= |
c* sinh (u )* ones ( size (v )); |
figure ( ’ Color ’,’w ’) hS = mesh (X ,Y ,Z );
xlabel ( ’x ’); ylabel ( ’y ’); zlabel ( ’z ’)
5
Линейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.
Эллиптический параболоид имеет вид xa22 + yb22 = z. Так как переменная z может быть явно выражена черех x и y, то эллиптический параболоид можно построить с помощью meshgrid.
clear |
all ; |
|
|||
close |
all ; |
|
|||
clc |
|
|
|
|
|
a |
= |
1; |
|
|
|
b |
= |
1; |
|
|
|
[X , |
Y] |
= |
meshgrid ( |
-10:0.1:10 , -10:0.1:10 ); |
|
Z |
= |
(X .^2 |
./ a ^2 + |
Y .^2 ./ b ^2); |
figure ( ’ Color ’,’w ’); hS = mesh (X ,Y ,Z );
xlabel ( ’x ’); ylabel ( ’y ’); zlabel ( ’z ’)
Упражнение 5.
Задан эллиптический параболоид.
x2 + y2 = z
4 9
Его пересекает плоскость z = 4. Построить эти фигуры в пространстве и убедиться, что они действительно пересекаются. Аналитически составить уравнение кривой пересечения эллиптического параболоида и плоскости. Изобразить кривую пересечения графически, убедиться, что аналитическое решение подтверждает графическое (иными словами, построенная кривая является сечением эллиптического параболоида заданной плоскостью).
6