向量点积计算

总时间限制: 1000ms  内存限制: 65536kB

描述

在线性代数、计算几何中,向量点积是一种十分重要的运算。

给定两个n维向量a=(a1,a2,...,an)和b=(b1,b2,...,bn),求点积a·b=a1b1+a2b2+...+anbn

输入
第一行是一个整数n。1 <= n <= 1000。
第二行包含n个整数a1,a2,...,an。
第三行包含n个整数b1,b2,...,bn。
相邻整数之间用单个空格隔开。每个整数的绝对值都不超过1000。
输出
一个整数,即两个向量的点积结果。
样例输入
3
1 4 6
2 1 5
样例输出
36

源代码如下:
#include<stdio.h>
int a[1001],b[1001];
int main()
{
	int i,n,total=0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=0;i<n;i++)
	{
		scanf("%d",&b[i]);
	}
	for(i=0;i<n;i++)
	{
		total+=a[i]*b[i];
	}
	printf("%d",total);
	return 0;
}

向量(又称数量)是两个向量之间的一种运算,其结果是一个标量。的数学计算公式如下: 设有两个三维向量 $\vec{a} = (a_1, a_2, a_3)$ 和 $\vec{b} = (b_1, b_2, b_3)$,它们的定义为: $$ \vec{a} \cdot \vec{b} = a_1 b_1 + a_2 b_2 + a_3 b_3 $$ 该公式可以推广到任意维度,即对应分量相乘后求和。 此外,还可以通过向量的模长和它们之间的夹角来表示: $$ \vec{a} \cdot \vec{b} = |\vec{a}| |\vec{b}| \cos \theta $$ 其中 $|\vec{a}|$ 和 $|\vec{b}|$ 分别表示向量 $\vec{a}$ 和 $\vec{b}$ 的模长,$\theta$ 是它们之间的夹角 [^1]。 ### 几何意义 的几何意义在于它可以表示一个向量在另一个向量方向上的投影长度乘以另一个向量的模长。当两个向量垂直时,为零;当方向相同时,为正值;当方向相反时,为负值。 ### C# 示例代码 以下是一个使用 C# 实现向量计算的函数: ```csharp using System; public class VectorOperations { /// <summary> /// 计算两个向量 /// </summary> /// <param name="a">第一个向量</param> /// <param name="b">第二个向量</param> /// <returns>结果</returns> public static double DotProduct(double[] a, double[] b) { if (a.Length != b.Length) throw new ArgumentException("向量长度必须一致"); double result = 0.0; for (int i = 0; i < a.Length; i++) { result += a[i] * b[i]; } return result; } } class Program { static void Main() { double[] vectorA = { 1, 2, 3 }; double[] vectorB = { 4, 5, 6 }; double dot = VectorOperations.DotProduct(vectorA, vectorB); Console.WriteLine($"向量结果: {dot}"); } } ``` ### 示例说明 - `vectorA` 和 `vectorB` 是两个三维向量- `DotProduct` 方法计算它们的- 输出结果为 $1 \cdot 4 + 2 \cdot 5 + 3 \cdot 6 = 32$。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值