Dot
Tích vô hướng của hai vector.
cpp
double vector::Dot(
const vector& b // vector thứ hai
);
1
2
3
2
3
Tham số
b
[in] Vector.
Giá trị trả về
Giá trị vô hướng.
Ghi chú
Tích vô hướng của hai ma trận là tích ma trận matrix::MatMul()
.
Thuật toán đơn giản cho tích vô hướng của vector trong MQL5:
cpp
double VectorDot(const vector& vector_a, const vector& vector_b)
{
double dot=0;
if(vector_a.Size()==vector_b.Size())
{
for(ulong i=0; i<vector_a.Size(); i++)
dot+=vector_a[i]*vector_b[i];
}
return(dot);
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Ví dụ MQL5:
cpp
for(ulong i=0; i<rows; i++)
{
vector v1=a.Row(i);
for(ulong j=0; j<cols; j++)
{
vector v2=b.Row(j);
result[i][j]=v1.Dot(v2);
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Ví dụ Python:
cpp
import numpy as np
a = [1, 0, 0, 1]
b = [4, 1, 2, 2]
print(np.dot(a, b))
>>> 6
1
2
3
4
5
6
7
2
3
4
5
6
7