簡體   English   中英

如何制作矢量數學程序?

[英]How to make a vector math program?

所以我想創建一個矢量數學程序,它有 3 個計算維度。 addition(向量相加) dot(乘積之和) normalization(單個向量的范數是平方和的平方根)

如果我有 2 個向量:A = (1,3,2) B = (2,3,0)

加法:A + B = (1 + 2, 3 + 3, 2 + 0) = (3,6,2)

點:AB = 1.2 + 3.3 + 2.0 = 2 + 9 + 0 = 11

范數(A):A = Sqrt(1^2 + 3^2 + 2^2) = Sqrt(14) = 3.74

B = Sqrt(2^2 + 3^2 + 0^2) = Sqrt(4+9+0) = Sqrt(13) = 3.61

樣本 Output:

Enter vector a:

1 3 2

Enter vector b:

2 3 0

A + B = [3, 6, 2]

A.B = 11

A = 3.74

B = 3.61

提前致謝。

這個給你:)

from math import sqrt

class Vector():
    def __init__(self, x=0, y=0, z=0):
        self.x = x
        self.y = y
        self.z = z

    def __add__(self, v):
        x = self.x + v.x
        y = self.y + v.y
        z = self.z + v.z
        return Vector(x, y, z)

    def dot(self, v):
        xdot = self.x * v.x
        ydot = self.y * v.y
        zdot = self.z * v.z
        return xdot + ydot + zdot

    def norm(self):
        return sqrt(self.x**2 + self.y**2 + self.z**2)

    def __str__(self):
        return "({}, {}, {})".format(self.x, self.y, self.z)


a = Vector(1, 3, 2)
b = Vector(2, 3, 0)

print("a", a)
print("b", b)
print("a + b : ", a + b)
print("norm of a : {}".format(round(a.norm(), 2)))
print("norm of b : {}".format(round(b.norm(), 2)))

output:

a (1, 3, 2)
b (2, 3, 0)
a + b :  (3, 6, 2)
norm of a : 3.74
norm of b : 3.61

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM