Как сделать программу векторной математики? - PullRequest
0 голосов
/ 19 июня 2020

, поэтому я хочу создать программу векторной математики, которая имеет 3 измерения. сложение (сложение векторов) точка (сумма произведений) нормализация (нормой одного вектора является квадрат root суммы квадратов)

, если у меня 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

Пример вывода:

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

Заранее спасибо.

1 Ответ

1 голос
/ 19 июня 2020

Вот вы:)

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)))

вывод:

a (1, 3, 2)
b (2, 3, 0)
a + b :  (3, 6, 2)
norm of a : 3.74
norm of b : 3.61
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...