Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -37,7 +37,14 @@ Given the three vectors:
|
|||
* Wikipedia [[wp:Dot product|dot product]].
|
||||
* Wikipedia [[wp:Cross product|cross product]].
|
||||
* Wikipedia [[wp:Triple product|triple product]].
|
||||
|
||||
* Wikipedia [[wp:Hodge star operator|hodge star operator]]
|
||||
* Wikipedia [[wp:Inner product space|inner product space]]
|
||||
* Wikipedia [[wp:Outer product|outer product]]
|
||||
* Wikipedia [[wp:Interior product|interior product]]
|
||||
* Wikipedia [[wp:Exterior product|exterior product]]
|
||||
* Wikipedia [[wp:Wedge product|wedge product]]
|
||||
* Wikipedia [[wp:Curry product|curry product]]
|
||||
* Wikipedia [[wp:Pfaffian product|pfaffian product]]
|
||||
|
||||
;Related tasks:
|
||||
* [[Dot product]]
|
||||
|
|
|
|||
|
|
@ -1,78 +0,0 @@
|
|||
with Ada.Text_IO;
|
||||
|
||||
procedure Vector is
|
||||
type Float_Vector is array (Positive range <>) of Float;
|
||||
package Float_IO is new Ada.Text_IO.Float_IO (Float);
|
||||
|
||||
procedure Vector_Put (X : Float_Vector) is
|
||||
begin
|
||||
Ada.Text_IO.Put ("(");
|
||||
for I in X'Range loop
|
||||
Float_IO.Put (X (I), Aft => 1, Exp => 0);
|
||||
if I /= X'Last then
|
||||
Ada.Text_IO.Put (", ");
|
||||
end if;
|
||||
end loop;
|
||||
Ada.Text_IO.Put (")");
|
||||
end Vector_Put;
|
||||
|
||||
-- cross product
|
||||
function "*" (Left, Right : Float_Vector) return Float_Vector is
|
||||
begin
|
||||
if Left'Length /= Right'Length then
|
||||
raise Constraint_Error with "vectors of different size in dot product";
|
||||
end if;
|
||||
if Left'Length /= 3 then
|
||||
raise Constraint_Error with "dot product only implemented for R**3";
|
||||
end if;
|
||||
return Float_Vector'(Left (Left'First + 1) * Right (Right'First + 2) -
|
||||
Left (Left'First + 2) * Right (Right'First + 1),
|
||||
Left (Left'First + 2) * Right (Right'First) -
|
||||
Left (Left'First) * Right (Right'First + 2),
|
||||
Left (Left'First) * Right (Right'First + 1) -
|
||||
Left (Left'First + 1) * Right (Right'First));
|
||||
end "*";
|
||||
|
||||
-- scalar product
|
||||
function "*" (Left, Right : Float_Vector) return Float is
|
||||
Result : Float := 0.0;
|
||||
I, J : Positive;
|
||||
begin
|
||||
if Left'Length /= Right'Length then
|
||||
raise Constraint_Error with "vectors of different size in scalar product";
|
||||
end if;
|
||||
I := Left'First; J := Right'First;
|
||||
while I <= Left'Last and then J <= Right'Last loop
|
||||
Result := Result + Left (I) * Right (J);
|
||||
I := I + 1; J := J + 1;
|
||||
end loop;
|
||||
return Result;
|
||||
end "*";
|
||||
|
||||
-- stretching
|
||||
function "*" (Left : Float_Vector; Right : Float) return Float_Vector is
|
||||
Result : Float_Vector (Left'Range);
|
||||
begin
|
||||
for I in Left'Range loop
|
||||
Result (I) := Left (I) * Right;
|
||||
end loop;
|
||||
return Result;
|
||||
end "*";
|
||||
|
||||
A : constant Float_Vector := (3.0, 4.0, 5.0);
|
||||
B : constant Float_Vector := (4.0, 3.0, 5.0);
|
||||
C : constant Float_Vector := (-5.0, -12.0, -13.0);
|
||||
begin
|
||||
Ada.Text_IO.Put ("A: "); Vector_Put (A); Ada.Text_IO.New_Line;
|
||||
Ada.Text_IO.Put ("B: "); Vector_Put (B); Ada.Text_IO.New_Line;
|
||||
Ada.Text_IO.Put ("C: "); Vector_Put (C); Ada.Text_IO.New_Line;
|
||||
Ada.Text_IO.New_Line;
|
||||
Ada.Text_IO.Put ("A dot B = "); Float_IO.Put (A * B, Aft => 1, Exp => 0);
|
||||
Ada.Text_IO.New_Line;
|
||||
Ada.Text_IO.Put ("A x B = "); Vector_Put (A * B);
|
||||
Ada.Text_IO.New_Line;
|
||||
Ada.Text_IO.Put ("A dot (B x C) = "); Float_IO.Put (A * (B * C), Aft => 1, Exp => 0);
|
||||
Ada.Text_IO.New_Line;
|
||||
Ada.Text_IO.Put ("A x (B x C) = "); Vector_Put (A * Float_Vector'(B * C));
|
||||
Ada.Text_IO.New_Line;
|
||||
end Vector;
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
#include<stdio.h>
|
||||
|
||||
typedef struct{
|
||||
float i,j,k;
|
||||
}Vector;
|
||||
|
||||
Vector a = {3, 4, 5},b = {4, 3, 5},c = {-5, -12, -13};
|
||||
|
||||
float dotProduct(Vector a, Vector b)
|
||||
{
|
||||
return a.i*b.i+a.j*b.j+a.k*b.k;
|
||||
}
|
||||
|
||||
Vector crossProduct(Vector a,Vector b)
|
||||
{
|
||||
Vector c = {a.j*b.k - a.k*b.j, a.k*b.i - a.i*b.k, a.i*b.j - a.j*b.i};
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
float scalarTripleProduct(Vector a,Vector b,Vector c)
|
||||
{
|
||||
return dotProduct(a,crossProduct(b,c));
|
||||
}
|
||||
|
||||
Vector vectorTripleProduct(Vector a,Vector b,Vector c)
|
||||
{
|
||||
return crossProduct(a,crossProduct(b,c));
|
||||
}
|
||||
|
||||
void printVector(Vector a)
|
||||
{
|
||||
printf("( %f, %f, %f)",a.i,a.j,a.k);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("\n a = "); printVector(a);
|
||||
printf("\n b = "); printVector(b);
|
||||
printf("\n c = "); printVector(c);
|
||||
printf("\n a . b = %f",dotProduct(a,b));
|
||||
printf("\n a x b = "); printVector(crossProduct(a,b));
|
||||
printf("\n a . (b x c) = %f",scalarTripleProduct(a,b,c));
|
||||
printf("\n a x (b x c) = "); printVector(vectorTripleProduct(a,b,c));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
constant X = 1, Y = 2, Z = 3
|
||||
|
||||
function dot_product(sequence a, sequence b)
|
||||
return a[X]*b[X] + a[Y]*b[Y] + a[Z]*b[Z]
|
||||
end function
|
||||
|
||||
function cross_product(sequence a, sequence b)
|
||||
return { a[Y]*b[Z] - a[Z]*b[Y],
|
||||
a[Z]*b[X] - a[X]*b[Z],
|
||||
a[X]*b[Y] - a[Y]*b[X] }
|
||||
end function
|
||||
|
||||
function scalar_triple(sequence a, sequence b, sequence c)
|
||||
return dot_product( a, cross_product( b, c ) )
|
||||
end function
|
||||
|
||||
function vector_triple( sequence a, sequence b, sequence c)
|
||||
return cross_product( a, cross_product( b, c ) )
|
||||
end function
|
||||
|
||||
constant a = { 3, 4, 5 }, b = { 4, 3, 5 }, c = { -5, -12, -13 }
|
||||
|
||||
puts(1,"a = ")
|
||||
? a
|
||||
puts(1,"b = ")
|
||||
? b
|
||||
puts(1,"c = ")
|
||||
? c
|
||||
puts(1,"a dot b = ")
|
||||
? dot_product( a, b )
|
||||
puts(1,"a x b = ")
|
||||
? cross_product( a, b )
|
||||
puts(1,"a dot (b x c) = ")
|
||||
? scalar_triple( a, b, c )
|
||||
puts(1,"a x (b x c) = ")
|
||||
? vector_triple( a, b, c )
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
function dot-product($a,$b) {
|
||||
$a[0]*$b[0] + $a[1]*$b[1] + $a[2]*$b[2]
|
||||
}
|
||||
|
||||
function cross-product($a,$b) {
|
||||
$v1 = $a[1]*$b[2] - $a[2]*$b[1]
|
||||
$v2 = $a[2]*$b[0] - $a[0]*$b[2]
|
||||
$v3 = $a[0]*$b[1] - $a[1]*$b[0]
|
||||
@($v1,$v2,$v3)
|
||||
}
|
||||
|
||||
function scalar-triple-product($a,$b,$c) {
|
||||
dot-product $a (cross-product $b $c)
|
||||
}
|
||||
|
||||
function vector-triple-product($a,$b) {
|
||||
cross-product $a (cross-product $b $c)
|
||||
}
|
||||
|
||||
$a = @(3, 4, 5)
|
||||
$b = @(4, 3, 5)
|
||||
$c = @(-5, -12, -13)
|
||||
|
||||
"a.b = $(dot-product $a $b)"
|
||||
"axb = $(cross-product $a $b)"
|
||||
"a.(bxc) = $(scalar-triple-product $a $b $c)"
|
||||
"ax(bxc) = $(vector-triple-product $a $b $c)"
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
-- 28 Jul 2025
|
||||
include Settings
|
||||
-- 24 Aug 2025
|
||||
include Setting
|
||||
|
||||
say 'VECTOR PRODUCTS'
|
||||
say version
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue