Go語言程式:求解兩個向量的點積
點積衡量的是兩個向量指向方向的接近程度。兩個向量的點積是線性代數中的一個基本運算,它計算兩個向量中對應元素乘積的總和。本文將編寫一個Go語言程式,使用迴圈以及Go語言的range關鍵字來求解兩個向量的點積。
說明
兩個向量的點積計算公式如下所示
DOT PRODUCT = A⋅B =Ax ⋅Bx +Ay ⋅By +Az ⋅Bz
假設我們有兩個向量A和B,其中A = (1,2,3)和B = (4,5,6),則兩個向量的點積計算方法為A.B = (1*4 + 2*5 + 3*6) = 32
演算法
首先定義一個名為dotProduct的函式,該函式接受兩個向量引數:vector1和vector2。
檢查vector1和vector2的長度是否相等。如果不相等,則引發panic或根據所需方法處理錯誤。點積僅適用於長度相同的向量。
將名為dotProduct的變數初始化為0。此變數將儲存兩個向量中對應元素乘積的累加和。
迭代從0到vector1長度的每個索引i。在迴圈內,計算vector1[i]和vector2[i](向量的對應元素)的乘積。
將計算出的乘積新增到dotProduct變數。迴圈完成後,返回dotProduct變數中儲存的值作為結果。
語法
func dotProduct(vector1 []int, vector2 []int) int
此處名為“dotProduct”的函式接受兩個引數:“vector1”和“vector2”,型別均為[int]。它返回一個數字,即兩個向量的點積。
示例1
在這個例子中,我們將使用迴圈遍歷所有向量,並編寫一個Go語言程式來求解兩個向量的點積。我們將建立一個名為“dotProduct”的函式,該函式接受兩個向量作為輸入,並返回這些向量的“點積”作為數字。首先,我們檢查兩個向量的長度是否相同。如果不相同,我們將傳送一條恐慌訊息,指出向量的長度必須相同。然後,我們設定一個名為dotProduct的變數來儲存結果。我們使用for迴圈遍歷向量的每個元素。在每一步中,我們都將對應向量的元素相乘,並將乘積新增到dotProduct變數。
package main
import (
"fmt"
)
func dotProduct(vec1 []int, vec2 []int) int {
if len(vec1) != len(vec2) {
panic("Vector should have same lenghth")
}
dotProduct := 0
for i := 0; i < len(vec1); i++ {
dotProduct += vec1[i] * vec2[i]
}
return dotProduct
}
func main() {
vec1 := []int{1, 2, 3}
vec2 := []int{4, 5, 6}
dotProduct := dotProduct(vec1, vec2)
fmt.Println("The Dot Product is :", dotProduct)
}
輸出
The Dot Product is: 32
示例2
在這個例子中,我們將利用range關鍵字簡化程式碼,同時遍歷一個向量的元素並訪問另一個向量中對應的元素,並編寫一個Go語言程式來求解兩個向量的點積。我們使用range關鍵字遍歷vector1的元素,並將每個元素的索引和值分別儲存在i和v變數中。然後,我們可以使用i在vector2中找到對應的元素並將其相乘。結果值被賦給名為“dotProduct”的變數。
package main
import (
"fmt"
)
func dotProduct(vector1 []int, vector2 []int) int {
if len(vector1) != len(vector2) {
panic("Vectors should have same length")
}
dotProduct := 0
for i, v := range vector1 {
dotProduct += v * vector2[i]
}
return dotProduct
}
func main() {
vector1 := []int{1, 2, 3}
vector2 := []int{4, 5, 6}
dotProduct := dotProduct(vector1, vector2)
fmt.Println("The Dot Product of two vector is :", dotProduct)
}
輸出
The Dot Product of two vector is: 32
實際應用
計算機圖形學:點積的應用之一是確定表面的著色。它用於計算照射到一個點上的光線的強度;因此,它有助於在三維圖形中建立逼真的陰影效果。
物理學:我們都聽說過功和能,計算力所做的功,就是力與距離的點積。W = F·d,其中F是力,d是距離。
結論
點積也稱為兩個向量的標量積,兩個向量的點積提供一個標量值。在本文中,我們研究瞭如何使用兩種不同的方法編寫Go語言程式來求解兩個向量的點積。第一種方法使用迴圈進行精確控制,而第二種方法利用range關鍵字編寫簡潔易讀的程式碼。這些技術易於理解。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP