Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
35
Добавлен:
05.06.2015
Размер:
244.11 Кб
Скачать

Линейная алгебра в среде 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

Соседние файлы в папке lab7
  • #
    05.06.2015210 б35get_canonical.m
  • #
    05.06.2015244.11 Кб35lab7_kozhuhov.pdf
  • #
    05.06.2015323 б33shift_rotate.m
  • #
    05.06.2015231 б33task1.m
  • #
    05.06.2015404 б33task4.m
  • #
    05.06.2015471 б33task5.m