Sunteți pe pagina 1din 5

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei

Referat
pe tema:
Produsul mixt al vectorilor
Interpretarea geometrica a
determinantului de ordinal 3

A efectuat: Tîmbur Ștefan gr. Ti-173

Chişinău 2018
Definiție:

Fie tripletul ordonat de vectori liberi u, v, w ∈ V.


Produsul mixt al celor trei vectori se noteaza cu (u, v,w) si se
defineste prin (u, v,w) =< u, v × w >

Proprietăți:
 daca B = {i, j, k} este o baza ortonormata pozitivă și u = x 1 i
+ x 2 j + x 3 k, v = y 1 i + y 2 j + y 3 k, w = z 1 i + z 2 j + z 3 k,
atunci:

 Semnul produsului mixt (u, v,w) se schima daca se permuta


doi dintre factorii sai dar nu se schimba daca se permuta
circular toti cei trei factori.

 (Interpretarea geometrica) Daca u, v,w sunt necoplanari,


atunci |(u, v,w)| reprezinta volumul paralelipipedului
construit pe cei trei vectori.
Aplicație:

Sa se calculeze volumul tetraedrului cu vârfurile:


A (0,6,4), B(3,5,3), C(-2,11,-5) D(1,-1,4)

𝐴𝐵=(0,6,4) AC=(-2,5,-9) AD=(1,-7,0)

Implementare în limbajul C:
#include <stdio.h>
#include <stdlib.h>
int **m,i,j,*a,*b,*c,*d,det;
float vol;
void alocare(){
m=malloc(3*sizeof(int*));
for (i=0;i<3;i++)
*(m+i)=malloc(3*sizeof(int));
a=malloc(3*sizeof(int));
b=malloc(3*sizeof(int));
c=malloc(3*sizeof(int));
d=malloc(3*sizeof(int));
}
void citire(){
printf("Introdu coordonatele varfurilor tetraedrului \n\n");
printf("Introdu coordonatele primului varf: \n");
for (i=0;i<3;i++)
scanf("%d",a+i);
printf("Introdu coordonatele varfului al doilea: \n");
for (i=0;i<3;i++)
scanf("%d",b+i);
printf("Introdu coordonatele varfului al treilea:\n");
for (i=0;i<3;i++)
scanf("%d",c+i);
printf("Introdu coordonatele varfului al patrulea:\n");
for (i=0;i<3;i++)
scanf("%d",d+i);
printf("\n");
}
void calc_vector(){
for (i=0;i<3;i++){
*(*(m+0)+i)=*(b+i)-*(a+i);
*(*(m+1)+i)=*(c+i)-*(a+i);
*(*(m+2)+i)=*(d+i)-*(a+i);
}

}
void calc_determ_vol(){
det=*(*(m+0)+0)**(*(m+1)+1)**(*(m+2)+2)-
*(*(m+0)+0)**(*(m+1)+2)**(*(m+2)+1)-
*(*(m+0)+1)**(*(m+1)+0)**(*(m+2)+2)+
*(*(m+0)+1)**(*(m+1)+2)**(*(m+2)+0)+
*(*(m+0)+2)**(*(m+1)+0)**(*(m+2)+1)-
*(*(m+0)+2)**(*(m+1)+1)**(*(m+2)+0);
det=abs(det);
vol=det; vol/=6;

void afisare(){
printf("Matricea formata este: \n\n");
for (i=0;i<3;i++){
for (j=0;j<3;j++)
printf("\t%d",*(*(m+i)+j));
printf("\n\n");
}

printf("Volumul tetraiedului este:\n");


printf("%.2f",vol);

}
void liber(){
free(m);
free(a);
free(b);
free(c);
free(d);

}
int main(){
alocare();
citire();
calc_vector();
calc_determ_vol();
afisare();
liber();
return 0;
}