Quader

Bei dieser einfachen Aufgabe soll anhand der Länge, Breite und Höhe eines Quaders dessen Volumen, Oberfläche und Raumdiagonale bestimmt werden.

Aufgabe:

Bestimme zu den Massen l=10, b=8 und c=6 das Volumen, die Oberfläche und die Raumdiagonale eines Quaders.

Lösung:

Die gesuchten Größen lassen sich folgendermaßen berechnen:

V _{\rm{Quader}} &= h \cdot b \cdot l \\[4pt]
A _{\rm{Quader}} &= 2 \cdot (h \cdot b + b \cdot l + l \cdot h) \\[4pt]
d _{\rm{Quader}} &= \sqrt{l^2 + b^2 + h^2}

Die rechte Seite der letzten Gleichung entspricht dem Betrag eines dreidimensionalen Vektors.

Zur Berechnung der Quaderdiagonale kann die Funktion sqrt() aus dem math-Modul genutzt werden:

import math as m
import functools as ft

cuboid_dimensions = [10,8,6]

cuboid_volume = ft.reduce(lambda x,y: x*y , cuboid_dimensions)

cuboid_surface = lambda
cuboid_surface = 2 * (
    cuboid_dimensions[0] * cuboid_dimensions[1] +
    cuboid_dimensions[0] * cuboid_dimensions[2] +
    cuboid_dimensions[1] * cuboid_dimensions[2]
)

cuboid_diagonal = m.sqrt(
    cuboid_dimensions[0]**2 +
    cuboid_dimensions[1]**2 +
    cuboid_dimensions[2]**2
)

# Ergebnisse:

# cuboid_volume:   480
# cuboid_surface:  376
# cuboid_diagonal: 14.142135623730951

Bei der Berechnung des Quadervolumens wurde, um Schreibarbeit zu sparen, die Funktion reduce() aus dem functools-Modul verwendet.

Anstelle des Lambda-Ausdrucks (quasi einer Funktion ohne Namen) kann auch die Funktion mul() aus dem Modul operator verwendet werden. Diese wertet das Produkt aller Werte einer (als eingigem Argument übergebenen) Liste aus:

import operator as op

ft.reduce(op.mul, [1,2,3]) == ft.reduce(lambda x,y: x*y, [1,2,3])

# Ergebnis: True

Zudem könnte die Schreibarbeit durch die Definition von Funktionen entsprechend Aufgabe Quaderliste – Volumen und Oberfläche weiter reduziert werden.