Вы находитесь на странице: 1из 6

Линейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.

Лабораторная работа 7. Системы координат.

Декартовая система координат (также именуемая прямоугольной системой координат) задаётся началом координат, двумя перпендикулярно направленными осями координат и единичным отрезком для численного обозначения расстояния между двумя точками. Оси координат принято обозначать символами x (ось абсцисс) и y (ось ординат). Таким образом, положение любой точки на плоскости однозначно определено двумя чис- лами: первое число – величина проекции точки на первую ось (взятая с плюсом, если про- екция попала на “положительную” часть оси, или с минусом, если на “отрицательную”), а второе – величина проекции соответственно на вторую ось. Говорят, что на плоскости введена полярная система координат < O, u >, если заданы:

1. некоторая точка O, называемая полюсом;

2. некоторый луч u, исходящий из точки O и называемый полярной осью.

Полярными координатами точки M = O называют два числа: полярный радиус r(M ) = | OM | и полярный угол ϕ(M ) - угол, на который следует повернуть ось u для того, чтобы её направлоение совпало с направлением вектора OM . запись M (r, ϕ) означает, что точка M имеет полярные координаты r и ϕ. Пусть на плоскости введены правая декартова прямоугольная система координат Oxy(т.е. такая, что кратчайший поворот от оси Ox к оси Oy происходит против часовой стрелки) и полярная система < O, u >, причём полярная ось совпадает с положительной полуосью абсцисс. Тогда связь между декартовыми прямоугольными и полярными координатами про- извольной точки M = O задаётся формулами.

x = r cos ϕ;

y = r sin ϕ;

r = x 2 + y 2 ;

tg ϕ = y

 

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).

either can be scalar). TH is returned in radians.

The

arrays

X

and

Y

must

be the

same

size (or

Так, например, можно получить полярные координаты точки с координатами (3, 3) в декартовой системе.

>>

>> fprintf( ’phi=%f,␣r=%f\n’, phi , r) phi=0.785398, r=4.242641

[phi ,

r]

=

cart2pol(3, 3);

Линейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.

Системы координат. Примеры.

Пример 1. Для отображения графиков функция в полярных координатах удобно использовать функ- цию polar. Так, например, можно нарисовать так называемую полярную розу r = asin(nϕ).

clear all

close all

clc

n

a =

phi = 0:pi/100:2*pi; polar( phi , a*sin(n*phi), ’k’ );

=

7;

2;

90

2

120 60 1.5 150 1 30 0.5 180 210 330 240 300
120
60
1.5
150
1
30
0.5
180
210
330
240
300

270

0

Варьируя значения параметра n, можно получать разное количество лепестков полярной розы.

Пример 2. Для графика функции y = 2x + 3 произвести поворот координатных осей на pi/3 против часовой стрелки. Отразить результат с помощью функции plot. Решение:

Для поворота координатных осей используем замену.

x = x cos(α) y sin(α)

y = x sin(α) + y cos(α)

Таким образом:

2

Линейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.

x sin(α) + y cos(α) = 2 x cos(α) 2 y sin(α) + 3

y = x

2 cos(α) sin(α)

cos(α) + 2 sin(α)

+

3

cos(α) + 2 sin(α)

Создаём скрипт следующего содержания:

clear all;

close all;

clc

figure , hold , grid

x = -10:0.01:10; y =

plot(

2.*x +

x,

y,

3;

’g’

);

on

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

20

15

10

5

0

−5

−10

−15

y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)

y(x)

y−new(x)

y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)
y(x) y−new(x)

−8

−6

−4

−2

0

2

4

6

8

10

−20 −10

Так как произошёл поворот осей координат против часовой стрелки, то график функции соответственно совершил поворот по часовой стрелке.

Системы координат. Упражнения.

Упражнение 1. Построить график функции x 2 + y 2 = 1 в декартовой системе координат с помощью функции plot. Провести замену к полярным координатам, построить график в полярных координатах с помощью функции polar. Сравнить полученные результаты.

Упражнение 2. Создать функцию shift_rotate в отдельном файле shift_rotate.m, с помощью которой производится поворот графика функции y = 3 x + 2 на k радиан по часовой стрелке, а также его сдвиг на x m относительно оси абсцисс и на y m относительно оси ординат. Переменные k, x m , y m должны являться аргументами этой функции.

3

Линейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.

Указания:

Простейший пример функции от двух аргументов (содержимое файла add.m). В данном случае result является возвращаемым значением, add - имя функции, x и y - аргументы функции.

function

result

end

result =

x

+

=

add

y;

(

x,

y

)

Пример её использования:

>> add(13,2) =

ans

15

Проверьте созданную Вами функцию на особенных значениях. Например, очевидно, что при достаточно небольшом k поворот осей координат будет практически незаметен.

Кривые второго порядка.

Упражнение 3. Для уравнения кривой второго порядка a x 2 + b xy + c y 2 = 1 реализовать функцию get_canonical, которая приводит уравнение данной кривой к каноническому виду u x 2 + v y 2 = 1, используя поворот осей координат на определённый угол. Таким образом, заголовок файла get_canonical.m будет выглядеть примерно следующим образом

function [u,v,phi] = get_canonical(a,b,c)

Пример 3. Matlab обладает рядом встроенных функций для упрощённого построения графиков некоторых функций. Одна из таких функций - ezplot. Построить эллипс x 2 + y 2 = 1 можно следующим образом:

>> ezplot(’x^2+y^2=1’), axis([-1 1 -1 1])

Кроме того, данную функцию можно использовать и с символьными переменными.

>> syms

>>

x

ezplot(

y

x

+

y

-

1

)

Обратите внимание на заголовок получившегося графика.

Упражнение 4.

x 2 + xy + 2y 2 = 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’)

Линейная алгебра в среде Matlab, ЛР #7 . Системы координат. Кривые второго порядка.

Эллиптический параболоид имеет вид x 2 + y 2 = z. Так как переменная z может быть явно выражена черех x и y, то эллиптический параболоид можно построить с помощью meshgrid.

a

2

b

2

clear all;

close all;

clc

a

b =

=

1;

1;

[X, Y] = meshgrid( -10:0.1:10, -10:0.1:10 );

Z

figure(’Color’,’w’); hS = mesh(X,Y,Z); xlabel(’x’); ylabel(’y’); zlabel(’z’)

= (X.^2

./

a^2

+ Y.^2

./ b^2);

Упражнение 5. Задан эллиптический параболоид.

x

2

4

+

y 2

9

= z

Его пересекает плоскость z = 4. Построить эти фигуры в пространстве и убедиться, что они действительно пересекаются. Аналитически составить уравнение кривой пересече- ния эллиптического параболоида и плоскости. Изобразить кривую пересечения графически, убедиться, что аналитическое решение подтверждает графическое (иными словами, постро- енная кривая является сечением эллиптического параболоида заданной плоскостью).

6

Оценить