You are on page 1of 3

Мариана Горанова

Вектор Приложение

Вектор е група от данни, която съдържа – аритметика с полиноми:


алгебричен елемент – дължина (модул) и изчисляване и интерполация на полином;
геометричен елемент – направление. умножение на полиноми;
аритметични операции с големи числа,
Координати на вектор – геометричните проекции представени чрез полином;
на вектор върху трите координатни оси.
– матрична аритметика.
z
a

x y

a = {ax, ay, az}

Логическо описание
Операции
Съединение на елементи от тип РЕАЛНО,
наречени координати на вектор. 1. Създаване на вектор
2. Произведение на вектор със скалар
данни: тип РЕАЛНО
тип ВЕКТОРРЕАЛНО=(координатаx; координатаy; координатаz) 3. Събиране на вектори
4. Скаларно произведение
5. Векторно произведение
6. Смесено произведение на три вектора
7. Двойно векторно произведение

Физическо представяне
─ чрез структура
1. Непрекъснато представяне
– чрез масив тип ВЕКТОР = (координатаx: РЕАЛНО;
координатаy: РЕАЛНО;
координатаz координатаz: РЕАЛНО)
вектор координатаy
координатаx

координатаx – тип РЕАЛНО


координатаy – тип РЕАЛНО
координатаz – тип РЕАЛНО

Структури от данни и приложни


алгоритми 1
Мариана Горанова

2. Верижно представяне Дефиниране

начало
ax
struct vector // вектор
вектор ay {
double vx, // x координата
az vy, // y координата
vz; // z координата
};
typedef struct vector VECTOR;

1. Създаване на вектор 2. Произведение на вектор със скалар

Алгоритъм
Алгоритъм

v.c = (cvx )i + (cv y ) j + (cvz )k


v = ( x )i + ( y ) j + ( z )k

VECTOR create (double x, double y, double z) VECTOR product (VECTOR v, double c)


{ {
VECTOR v; VECTOR v3;
v.vx = x; v3.vx = c*v.vx;
v.vy = y; v3.vy = c*v.vy;
v.vz = z; v3.vz = c*v.vz;
return v; return v3;
} }

3. Събиране на вектори 4. Скаларно произведение

Алгоритъм Алгоритъм

v1 + v2 = (v1x + v2 x )i + (v1 y + v2 y ) j + (v1z +v 2 z )k v1 • v2 = v1x .v2 x + v1 y .v2 y + v1z .v 2 z

VECTOR add (VECTOR v1, VECTOR v2) double dot (VECTOR v1, VECTOR v2)
{ {
VECTOR v3; double d;
v3.vx = v1.vx + v2.vx; d = v1.vx*v2.vx + v1.vy*v2.vy + v1.vz*v2.vz;
v3.vy = v1.vy + v2.vy; return d;
v3.vz = v1.vz + v2.vz; }
return v3;
}

Структури от данни и приложни


алгоритми 2
Мариана Горанова

5. Векторно произведение 6. Смесено произведение на три вектора

Алгоритъм Алгоритъм

v1 × v2 = (v1 y v2 z − v1z v2 y )i + (− v1x v2 z + v1z v2 x ) j + (v1x v2 y −v1 y v2 x )k v1 • (v2 × v3 ) = (v2 y v3 z − v2 z v3 y )v1x + (− v2 x v3 z + v2 z v3 x )v1 y + (v2 x v3 y −v 2 y v3 x )v1z

VECTOR cross (VECTOR v1, VECTOR v2) double mixedProduct (VECTOR v1, VECTOR v2, VECTOR v3)
{ {
VECTOR v3; VECTOR vv;
v3.vx = v1.vy*v2.vz - v1.vz*v2.vy; double d;
v3.vy = -v1.vx*v2.vz + v1.vz*v2.vx; vv = cross (v2, v3);
v3.vz = v1.vx*v2.vy - v1.vy*v2.vx; d = dot (v1, vv);
return v3; return d;
} }

7. Двойно векторно произведение на три Задача: Структура данни ВЕКТОР


вектора 1. Напишете функции X(), Y() и Z(), които
осигуряват достъп съответно до x-координата,
Алгоритъм y-координата и z-координата на даден вектор.
2. Напишете функция divide() за деление на
v1 × (v2 × v3 ) = (v1 • v3 ) • v2 − (v1 • v2 )v3 вектор със скалар.
v.c = (v x / c )i + (v y / c ) j + (v z / c )k
3. Напишете функция length() за изчисляване
VECTOR doubleCross(VECTOR v1,VECTOR v2,VECTOR v3) дължина (модул) на вектор и функция angle()
{ за изчисляване на ъгъл между два вектора.
VECTOR vv1, vv2;
vv1 = cross (v2, v3); l = v x2 + v y2 + vz2
vv2 = cross (v1, vv1);
v1x v2 x + v1 y v2 y + v1z v2 z
return vv2; cos(v1 , v2 ) =
} v + v12y + v12z v22x + v22 y + v22z
2
1x

Задача: Представете структура данни ВЕКТОР


чрез масив. Напишете функция add(), която
изчислява сумата на два полинома.

r (x ) = p(x ) + q(x )
p( x ) = po + p1 x + ... + p N −1 x N −1
q( x ) = qo + q1 x + ... + q N −1 x N −1
r (x ) = ( p0 + q0 ) + ( p1 + q1 )x + ... + ( p N −1 + q N −1 )x N −1

Структури от данни и приложни


алгоритми 3

You might also like