目录
Python算法之旅: http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
欢迎志同道合者一起交流学习,我的QQ:94509325/微信
点积(Dot Product)算法在多个领域中有广泛的应用,包括但不限于以下几个场景:
1、图形学:在图形学中,点积被广泛应用于计算两个向量的夹角,从而判断两个方向的接近程度。此外,点积还可以用于计算投影,即一个向量在另一个向量上的投影长度。这些计算对于光照效果、方向性判断等图形渲染过程至关重要。
2、物理学:在物理学中,点积被用于计算合力和功。当一个力沿着某个方向作用时,该力在这个方向上的分量(即投影)与位移的点积即为该力所做的功。
3、人工智能:在人工智能领域,点积是神经网络技术的数学基础之一。神经网络的权重和输入数据之间的点积运算可以衡量输入数据与权重之间的相似度,从而实现模式识别和分类等任务。
4、动画制作:在动画制作中,点积被用于计算骨骼或物体之间的旋转和平移等变换。这些变换可以通过将向量表示为四元数或矩阵,并利用点积等运算来实现。
5、信号处理:在信号处理中,点积被用于计算信号之间的相关性。两个信号的点积越大,说明它们之间的相关性越高。这对于信号检测、滤波和去噪等任务具有重要意义。
6、文本处理:在自然语言处理和文本处理中,点积被用于计算词向量之间的相似度。词向量是将词语表示为高维空间中的向量,利用点积可以计算不同词向量之间的夹角和相似度,从而实现文本分类、情感分析等任务。
总之,点积算法在多个领域中都有广泛的应用,它是衡量向量之间相似度和方向性的重要工具。
1、点积:
1-1、Python:
- # 1.问题描述:
- # 给出两个数组,求它们的点积.
- # 2.问题示例:
- # 输入arr1 = [3, 5, 6, 8],arr2 = [10, 10, 11, 24],输出结果为338,即3 x 10 + 5 x 10 + 6 x 11 + 8 x 24 = 338;
- # 输入arr1 = [3, 5, 6],arr2 = [11, 24],输出结果为-1,即没有点积.
- # 3.代码实现:
- class Solution:
- # 参数arr1和arr2: 输入列表
- # 返回值: 整数,即点积
- def dotProduct(self, arr1, arr2):
- if len(arr1) == 0 or len(arr2) == 0:
- return -1
- if len(arr1) != len(arr2):
- raise ValueError("两个列表的长度必须相同才能计算点积")
- # 初始化点积结果为0
- answer = 0
- # 使用zip同时迭代两个列表,并计算点积
- for num1, num2 in zip(arr1, arr2):
- answer += num1 * num2
- return answer
- #主函数
- if __name__ == '__main__':
- arr1 = [3, 5, 6, 8]
- arr2 = [10, 10, 11, 24]
- solution = Solution()
- print("arr1与arr2分别是:", arr1, arr2)
- print("点积为:", solution.dotProduct(arr1, arr2))
- # 4.运行结果:
- # arr1与arr2分别是: [3, 5, 6, 8] [10, 10, 11, 24]
- # 点积为: 338
1-2、VBA:
- Rem 自定义函数,功能:点积计算
- Function DotProduct(arr1 As Variant, arr2 As Variant) As Variant
- Dim i As Long
- Dim length1 As Long
- Dim length2 As Long
- Dim answer As Double
-
- ' 获取两个数组的长度
- length1 = UBound(arr1) - LBound(arr1) + 1
- length2 = UBound(arr2) - LBound(arr2) + 1
- ' 如果任一数组为空,返回-1
- If length1 = 0 Or length2 = 0 Then
- DotProduct = -1
- Exit Function
- End If
- ' 如果两个数组长度不等,抛出一个错误
- If length1 <> length2 Then
- MsgBox "两个列表的长度必须相同才能计算点积", vbCritical, "警告!"
- Exit Function
- End If
- ' 初始化点积结果为0
- answer = 0
- ' 使用循环计算点积
- For i = LBound(arr1) To UBound(arr1)
- answer = answer + arr1(i) * arr2(i)
- Next i
- ' 返回点积结果
- DotProduct = answer
- End Function
-
- Rem 执行过程,功能:调用自定义函数DotProduct,并以弹窗方式输出结果
- Sub TestRun()
- Dim arr1 As Variant
- Dim arr2 As Variant
- Dim result As Variant
-
- ' 初始化数组
- arr1 = Array(3, 5, 6, 8)
- arr2 = Array(10, 10, 11, 24)
- ' 调用点积函数
- result = DotProduct(arr1, arr2)
- ' 显示结果
- If IsNumeric(result) And Len(result) > 0 Then '判断结果是否为数值且不为空
- MsgBox "arr1与arr2的点积为:" & result, vbInformation, "点积计算"
- Else
- MsgBox "无法计算点积", vbCritical, "警告"
- End If
- End Sub
注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,以弹窗形式输出结果。
2、相关文章:
2-4、Python-VBA编程500例-014-01(入门级)
Python算法之旅: http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:



评论记录:
回复评论: