首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python-VBA编程500例-012(入门级)

  • 25-03-03 08:01
  • 2259
  • 11354
blog.csdn.net

目录

1、点积:

1-1、Python:

1-2、VBA:

2、相关文章:

Python算法之旅: http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502

个人主页:非风V非雨-CSDN博客

欢迎志同道合者一起交流学习,我的QQ:94509325/微信

        点积(Dot Product)算法在多个领域中有广泛的应用,包括但不限于以下几个场景:

1、图形学:在图形学中,点积被广泛应用于计算两个向量的夹角,从而判断两个方向的接近程度。此外,点积还可以用于计算投影,即一个向量在另一个向量上的投影长度。这些计算对于光照效果、方向性判断等图形渲染过程至关重要。

2、物理学:在物理学中,点积被用于计算合力和功。当一个力沿着某个方向作用时,该力在这个方向上的分量(即投影)与位移的点积即为该力所做的功。

3、人工智能:在人工智能领域,点积是神经网络技术的数学基础之一。神经网络的权重和输入数据之间的点积运算可以衡量输入数据与权重之间的相似度,从而实现模式识别和分类等任务。

4、动画制作:在动画制作中,点积被用于计算骨骼或物体之间的旋转和平移等变换。这些变换可以通过将向量表示为四元数或矩阵,并利用点积等运算来实现。

5、信号处理:在信号处理中,点积被用于计算信号之间的相关性。两个信号的点积越大,说明它们之间的相关性越高。这对于信号检测、滤波和去噪等任务具有重要意义。

6、文本处理:在自然语言处理和文本处理中,点积被用于计算词向量之间的相似度。词向量是将词语表示为高维空间中的向量,利用点积可以计算不同词向量之间的夹角和相似度,从而实现文本分类、情感分析等任务。

        总之,点积算法在多个领域中都有广泛的应用,它是衡量向量之间相似度和方向性的重要工具。

1、点积:
1-1、Python:
  1. # 1.问题描述:
  2. # 给出两个数组,求它们的点积.
  3. # 2.问题示例:
  4. # 输入arr1 = [3, 5, 6, 8],arr2 = [10, 10, 11, 24],输出结果为338,即3 x 10 + 5 x 10 + 6 x 11 + 8 x 24 = 338;
  5. # 输入arr1 = [3, 5, 6],arr2 = [11, 24],输出结果为-1,即没有点积.
  6. # 3.代码实现:
  7. class Solution:
  8. # 参数arr1和arr2: 输入列表
  9. # 返回值: 整数,即点积
  10. def dotProduct(self, arr1, arr2):
  11. if len(arr1) == 0 or len(arr2) == 0:
  12. return -1
  13. if len(arr1) != len(arr2):
  14. raise ValueError("两个列表的长度必须相同才能计算点积")
  15. # 初始化点积结果为0
  16. answer = 0
  17. # 使用zip同时迭代两个列表,并计算点积
  18. for num1, num2 in zip(arr1, arr2):
  19. answer += num1 * num2
  20. return answer
  21. #主函数
  22. if __name__ == '__main__':
  23. arr1 = [3, 5, 6, 8]
  24. arr2 = [10, 10, 11, 24]
  25. solution = Solution()
  26. print("arr1与arr2分别是:", arr1, arr2)
  27. print("点积为:", solution.dotProduct(arr1, arr2))
  28. # 4.运行结果:
  29. # arr1与arr2分别是: [3, 5, 6, 8] [10, 10, 11, 24]
  30. # 点积为: 338
1-2、VBA:
  1. Rem 自定义函数,功能:点积计算
  2. Function DotProduct(arr1 As Variant, arr2 As Variant) As Variant
  3. Dim i As Long
  4. Dim length1 As Long
  5. Dim length2 As Long
  6. Dim answer As Double
  7. ' 获取两个数组的长度
  8. length1 = UBound(arr1) - LBound(arr1) + 1
  9. length2 = UBound(arr2) - LBound(arr2) + 1
  10. ' 如果任一数组为空,返回-1
  11. If length1 = 0 Or length2 = 0 Then
  12. DotProduct = -1
  13. Exit Function
  14. End If
  15. ' 如果两个数组长度不等,抛出一个错误
  16. If length1 <> length2 Then
  17. MsgBox "两个列表的长度必须相同才能计算点积", vbCritical, "警告!"
  18. Exit Function
  19. End If
  20. ' 初始化点积结果为0
  21. answer = 0
  22. ' 使用循环计算点积
  23. For i = LBound(arr1) To UBound(arr1)
  24. answer = answer + arr1(i) * arr2(i)
  25. Next i
  26. ' 返回点积结果
  27. DotProduct = answer
  28. End Function
  29. Rem 执行过程,功能:调用自定义函数DotProduct,并以弹窗方式输出结果
  30. Sub TestRun()
  31. Dim arr1 As Variant
  32. Dim arr2 As Variant
  33. Dim result As Variant
  34. ' 初始化数组
  35. arr1 = Array(3, 5, 6, 8)
  36. arr2 = Array(10, 10, 11, 24)
  37. ' 调用点积函数
  38. result = DotProduct(arr1, arr2)
  39. ' 显示结果
  40. If IsNumeric(result) And Len(result) > 0 Then '判断结果是否为数值且不为空
  41. MsgBox "arr1与arr2的点积为:" & result, vbInformation, "点积计算"
  42. Else
  43. MsgBox "无法计算点积", vbCritical, "警告"
  44. End If
  45. End Sub

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,以弹窗形式输出结果。

2、相关文章:

2-1、Python-VBA编程500例-010(入门级)

2-2、Python-VBA编程500例-011(入门级) 

2-3、Python-VBA编程500例-013(入门级) 

2-4、Python-VBA编程500例-014-01(入门级) 

Python算法之旅: http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览60120 人正在系统学习中
遨游码海,我心飞扬
微信名片
注:本文转载自blog.csdn.net的神奇夜光杯的文章"https://myelsa1024.blog.csdn.net/article/details/136840131"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top