C++向量点积和叉积程序
假设我们有两个向量,例如向量 A 和向量 B,它们包含 x、y 和方向,任务是找到这两个给定向量数组的叉积和点积。
什么是向量?
在数学中,具有大小和方向的量称为向量,而只有大小值的一个量称为标量。向量开始的点称为起点,向量结束的点称为终点。向量起点和终点之间的距离称为向量的模或大小。
有多种类型的向量,例如:
- **单位向量** - 模为 1 的向量称为单位向量。
- **零向量** - 也称为空向量,因为在这种类型的向量中,起点和终点相同。
- **共起点向量** - 如果两个或多个向量具有相同的起点或起始点,则称它们为共起点向量。
- **共线向量** - 如果两个或多个向量平行于同一条直线,则称它们为共线向量。
- **相等向量** - 如果两个向量具有相同的大小和方向,则称它们为相等向量。
什么是点积?
点积也称为标量积,定义如下:
假设我们有两个向量 A = a1 * i + a2 * j + a3 * k 和 B = b1 * i + b2 * j + b3 * k,其中 i、j 和 k 是单位向量,这意味着它们的值为 1,x、y 和 z 是向量的方向,则点积或标量积等于 a1 * b1 + a2 * b2 + a3 * b3。
Input-: A = 2 * i + 7 * j + 2 * k B = 3 * i + 1 * j + 5 * k Output-: 2 * 3 + 7 * 1 + 2 * 5 = 23
什么是叉积?
叉积也称为向量积,定义如下:
假设我们有两个向量 A = a1 * i + a2 * j + a3 * k 和 B = b1 * i + b2 * j + b3 * k。则叉积等于 (a2 * b3 – a3 * b2) * i - (a1 * b3 – a3 * b1) * j + (a1 * b2 – a2 * b1) * k,其中 a2 * b3 – a3 * b2、a1 * b3 – a3 * b1 和 a1 * b1 – a2 * b1 是单位向量的系数,i、j 和 k 是向量的方向。
Input-: A = 2 * i + 7 * j + 2 * k B = 3 * i + 1 * j + 5 * k Output-: (7 * 5 - 2 * 1)i + (2 * 5 - 2 * 3)j - (2 * 1 - 7 * 3)k
算法
Start
Step 1 -> declare a function to calculate the dot product of two vectors
int dot_product(int vector_a[], int vector_b[])
Declare int product = 0
Loop For i = 0 and i < size and i++
Set product = product + vector_a[i] * vector_b[i]
End
return product
Step 2 -> Declare a function to calculate the cross product of two vectors
void cross_product(int vector_a[], int vector_b[], int temp[])
Set temp[0] = vector_a[1] * vector_b[2] - vector_a[2] * vector_b[1]
Set temp[1] = -(vector_a[0] * vector_b[2] - vector_a[2] * vector_b[0])
Set temp[2] = vector_a[0] * vector_b[1] - vector_a[1] * vector_b[0]
Step 3-> In main()
Declare vector int vector_a[] = { 4, 2, -1 }
Declare vector int vector_b[] = { 5, 7, 1 }
Declare variable int temp[size]
Call function for dot product as dot_product(vector_a, vector_b)
Call function for dot product as cross_product(vector_a, vector_b)
Loop For i = 0 and i < size and i++
Print temp[i]
End
Stop示例
#include <bits/stdc++.h>
#define size 3
using namespace std;
//function to calculate dot product of two vectors
int dot_product(int vector_a[], int vector_b[]) {
int product = 0;
for (int i = 0; i < size; i++)
product = product + vector_a[i] * vector_b[i];
return product;
}
//function to calculate cross product of two vectors
void cross_product(int vector_a[], int vector_b[], int temp[]) {
temp[0] = vector_a[1] * vector_b[2] - vector_a[2] * vector_b[1];
temp[1] = -(vector_a[0] * vector_b[2] - vector_a[2] * vector_b[0]);
temp[2] = vector_a[0] * vector_b[1] - vector_a[1] * vector_b[0];
}
int main() {
int vector_a[] = { 4, 2, -1 };
int vector_b[] = { 5, 7, 1 };
int temp[size];
cout << "Dot product:";
cout << dot_product(vector_a, vector_b) << endl;
cout << "Cross product:";
cross_product(vector_a, vector_b, temp);
for (int i = 0; i < size; i++)
cout << temp[i] << " ";
return 0;
}输出
Dot product:33 Cross product:9 -9 18
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP