DOT Produkt berechnen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
sublist
User
Beiträge: 33
Registriert: Donnerstag 11. Dezember 2008, 16:04

Hi Leute.

Kann mir jemand erklären wie ich ein DOT Produkt in Python berechne? Numpy?

Code: Alles auswählen

def Barycentric(p, a, b, c):
    v0 = [0, 0, 0]
    v1 = [0, 0, 0]
    v2 = [0, 0, 0]

    v0[0] = b[0] - a[0]
    v0[1] = b[1] - a[1]
    v0[2] = b[2] - a[2]

    v1[0] = c[0] - a[0]
    v1[1] = c[1] - a[1]
    v1[2] = c[2] - a[2]

    v2[0] = p[0] - a[0]
    v2[1] = p[1] - a[1]
    v2[2] = p[2] - a[2]

    d00 = dot(v0, v0)
    d01 = dot(v0, v1)
    d11 = dot(v1, v1)
    d20 = dot(v2, v0)
    d21 = dot(v2, v1)
    denom = d00*d11 - d01*d01

    result = []
    result[0] = (d11*d20 - d01*d21) / denom
    result[1] = (d00*d21 - d01*d20) / denom
    result[2] = 1.0 - result[0] - result[1]
    return result
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

sublist hat geschrieben:Kann mir jemand erklären wie ich ein DOT Produkt in Python berechne? Numpy?
numpy.dot

Code: Alles auswählen

import numpy as np

a = np.array([ 1., 2., 3.])
b = np.array([-1., 0., 0.5])

s = np.dot(a,b)
print(s) # Ausgabe 0.5
Mit Numpy kannst Du mit Vektoren rechnen und musst nicht alles komponentenweise machen. Wenn p, a, b, c Numpy-Arrays sind, dann kann man die Funktion Barycentric kürzer und übersichtlicher schreiben

Code: Alles auswählen

def Barycentric(p, a, b, c):
    v0 = b - a
    v1 = c - a
    v2 = p - a
 
    d00 = np.dot(v0, v0)
    d01 = np.dot(v0, v1)
    d11 = np.dot(v1, v1)
    d20 = np.dot(v2, v0)
    d21 = np.dot(v2, v1)
    denom = d00*d11 - d01*d01
 
    result = np.empty((3,), dtype=np.float64)
    result[0] = (d11*d20 - d01*d21) / denom
    result[1] = (d00*d21 - d01*d20) / denom
    result[2] = 1.0 - result[0] - result[1]
    return result
a fool with a tool is still a fool, www.magben.de, YouTube
sublist
User
Beiträge: 33
Registriert: Donnerstag 11. Dezember 2008, 16:04

Danke.

Ich sehe gerade ich kann Numpy gar nicht importen. Ich muss mit einer Software arbeiten, bei der ich keine externen Module importieren kann.

Sonst mach ich das Dot Produkt einfach selbst?

Code: Alles auswählen

def dotPrd(v0, v1):
    d = v0[0] * v1[0] + v0[1] * v1[1] + v0[2] * v1[2]
    return d
Antworten