Die Primzahlen sind ja 2, 3, 5, 7, 11, 13, 17, ...

Es müssen genau drei verschiedene Primzahlen sein. Damit ist die größt mögliche Zahl 100/(2*3)=16,666. Also kommen nur die Primzahlen bis einschließlich 13 in Frage.

Es gibt also 7 Primzahlen aus denen du 3 auswählen musst. Das kannst du dann systematisch machen. Theoretisch sind das 35 Kombinationen, aber du musst ja bedenken, dass das Produkt kleiner 100 sein soll. Damit fallen einige weg.

...zur Antwort

Mir ist keine einfache Möglichkeit bekannt wie man das in Python machen kann. Für ein paar Sonderfälle gibt es sicherlich schon fertige Funktionen, aber für dich vermutlich nicht passend.

Hier wäre mein Lösungsvorschlag:

string = "0007+0605*0+30"


def process_string(s):
    # function to get structure of string
    def get_struc(s):
        struc = "n" # add 'n' to later detect leading zeros
        for i in range(len(s)):
            if s[i] in ['1', '2', '3', '4', '5', '6', '7', '8', '9']:
                struc += 'i'
            elif s[i] in ['0']:
                struc += '0'
            else:
                struc += 'n'
        return struc + 'n' # add 'n' to later detect single zeros
    
    # function to remove specific character in string
    def remove_at(s, i):
        return s[:i] + s[i+1:]
    
    # save string for output
    s_out = s
    finished = False
    while (not finished):
        structure = get_struc(s_out)
        # if pattern "n0i" or "n00" -> leading zero
        # string.find returns -1 if not found
        ind1 = structure.find("n00")
        ind2 = structure.find("n0i")
        if (ind1 >= 0):
            s_out = remove_at(s_out, ind1)
        elif (ind2 >= 0):
            s_out = remove_at(s_out, ind2)
        else:
            finished = True
    return s_out
    
print("'" + string + "' --> '" + process_string(string) + "'")

Als erstes wird die Struktur des Strings erkannt. Danach wird nach Fehlern in der Struktur gesucht (also vorangestellt '0' bei Zahlen) und diese dann gelöscht. Es ist gefühlt etwas umständlich, weil immer nur ein Fehler nacheinander gefunden wird. Man könnt es noch dahingehend optimieren mehrere Fehler gleichzeitig zu finden.

Ich denke aber so ist es ersichtlicher was genau der Code macht und kann auch einfach angepasst werden.

...zur Antwort

Vereinfacht gesagt: Regeln ist Steuern mit Rückkopplung.

Wird etwas gesteuert, dann ändert man das Eingangssignal mit dem Ziel das Ausgangssignal in einer bestimmten Weise zu ändern. Dabei wird aber nicht überprüft ob die Änderung auch genau so erfolgt ist wie vorgesehen.

Beim Regeln gibt es eine solche Überprüfung. Das Ausgangssignal wird wieder an den Eingang zurückgeführt und mit dem Soll-Wert verglichen. Stimmt das rückgeführte Signal mit dem Eingang überein war die Regelung erfolgreich. Falls nicht passt sich das Eingangssignal an, solange bis Rückkopplung und Eingang übereinstimmen.

Hier mal ein praktisches Beispiel:

  • Möchte man die Drehzahl eines Lüfters steuern, so verändert man dessen Spannung. Je größer die Spannung, desto schneller dreht er sich. Für eine gewisse Drehzahl muss eine bestimmte Spannung eingestellt werden. Stellt man diese Spannung ein, ist die Drehzahl festgelegt. Aber ob der Lüfter wirklich mit der gewünschten Drehzahl dreht ist nicht sichergestellt.
  • Regelt man hingegen die Lüfterdrehzahl, dann wird zuerst auch eine Spannung eingestellt, aber dann die Drehzahl gemessen. Diese gemessene Größe wird dann mit der gewünschten Drehzahl verglichen. Ist die Drehzahl zu klein wird die Spannung etwas erhöht und umgekehrt. Das ganze passiert solange, bis die tatsächliche Drehzahl stimmt.
...zur Antwort

Wenn du in FreeCAD Modelle erstellst, dann machst du das ja vermutlich im Arbeitsbereich Part Design oder Part. Wenn du da einen neuen Körper erstellst, erscheint im Paneel Combo-Ansicht ein neues Objekt was Body genannt wird.

Bist du mit dem Erstellen fertig, musst du dieses Objekt auswählen (in der Combo-Ansicht anklicken) und dann kannst du unter Datei > Exportieren ... das Modell exportieren und als .stl speichern.

Falls die Combo-Ansicht nicht angezeigt wird, kannst du diese unter Ansicht > Paneele > Combo-Ansicht wieder einblenden.

...zur Antwort

Wenn dein Akku eine Kapazität von 1,8 kWh hat (60V*30Ah), dann brauchst du um die Kosten zu berechnen den Preis für eine Kilowattstunde und die Effizienz des Ladegeräts.

Google meint der Preis für eine Kilowattstunde liegt in Deutschland bei durchschnittlich 32,16 ct. Nehmen wir den Wert mal so an. Die Effizienz des Ladegeräts würde ich mal auf 95% schätzen, damit ergibt sich:



Für das Beispiel sind das dann:



Eine komplette Ladung würde also ungefähr 61 ct kosten.

...zur Antwort

Das beste wäre es mit Symbolen (Kreisen, Teilkreisen und Rechtecken) nachzuzeichnen. Das kann aber mit der Ausrichtung nervig werden. Eine andere Möglichkeit ist ein Kreisdiagramm:

Bild zum Beitrag

Das kannst du dann entsprechend deinen Wünschen formatieren. Die Personen in der Mitte kann man als Piktogramme einfügen.

...zur Antwort

Allgemein hast du ja folgendes dastehen:



Wenn dich das a vor dem x² stört, kannst du es einfach ausklammern:



Für den Teil in der Klammer kannst du die quadratische Ergänzung ganz normal machen. Schau dir den Faktor vor dem x an, sei dieser f. Der fehlende Summand für die binomische Formel ist f²/4. Diesen musst du nun einfach dazu addieren und wieder abziehen:



Nun kannst du die binomische Formel anwenden:



Und zum Schluss wieder ausmultiplizieren:



Das kannst du nun bei jeder Aufgabe so anwenden. Pass nur mit den Vorzeichen auf.

...zur Antwort

In Parallelschaltungen ist das Verhältnis der Ströme das gleiche wie das Verhältnis der Leitwerte, bzw. umgekehrt zum Verhältnis der Widerstände. Siehe auch Stromteiler – Wikipedia



Das kannst du nach I2 umstellen, einsetzen und ausrechnen.

...zur Antwort

Die Aufstiegschancen sehen so aus, dass du in geregelten Abständen in deiner Entgeltgruppe eine Stufe aufsteigst. Also nach einem Jahr in die zweite Stufe, nach zwei Jahren in die dritte Stufe usw. Ab Stufe 3 oder 4 kann der Aufstieg auch schneller gehen, je nach Leistung.

Mit "am Ende einer Eingruppierung" meinst du vermutlich dann die maximale Stufe 6. Bei TvöD nehme ich mal VKA an. Da du 5000€ Brutto geschrieben hast, nehme ich mal E10 an. Falls du mehr Geld möchtest, dann geht das nur in einer höheren Entgeltgruppe. Die Eingruppierung ist vom Bildungsniveau abhängig. Mit einem Bachelor kannst du z.B. bis E12 und mit einem Master ab E13.

Hier noch mehr Informationen dazu: TVöD Entgeltgruppen: Eingruppierung im öffentlichen Dienst 2022 (oeffentlichen-dienst.de)

Zusammengefasst ist (viel) mehr Geld in naher Zukunft eher weniger der Fall. Die letzte Erfahrungsstufe wirst du erst nach frühestens 10 Jahren erreichen. Und für deutlich mehr Geld brauchst du einen Masterabschluss.

...zur Antwort

Du würfelst noch zweimal und bist an den beiden Augenzahlen interessiert. Für jedes mal würfeln gibt es sechs Möglichkeiten. Insgesamt gibt es 36 Mögliche Ereignisse. Diese sind unabhängig und gleichwahrscheinlich (Laplace-Experiment).

Du musst nun einfach alle 36 Ereignisse aufschreiben und für a) und b) entscheiden welche davon ein korrektes Dreieck ergeben (Summe beider kleinsten Zahlen > größte Zahl). Die Anzahl der günstigen Ereignisse teilst du dann durch die Anzahl aller möglichen Ereignisse und erhältst damit deine gesuchte Wahrscheinlichkeit.

...zur Antwort

Nach langjähriger Erfahrung kann ich dir den Tipp geben, wenn du mit Rainbow Six Siege noch nichts zu tun hattest, spiele am Anfang alle Einzelspielermissionen.

Bevor du das erste Multiplayer-Spiel startest solltest du versuchen Alle Missionen auf 3 Sterne zu bekommen (Der Schwierigkeitsgrad dabei ist erstmal egal). Durch die Missionen bekommst du ein gutes Gefühl für das Spiel und lernst so manche Besonderheiten kennen.

Die letzte von den Missionen ist Multiplayer. Diese brauchst du nicht wirklich spielen, weil diese nicht wie eine typische Siege-Runde ist.

Wenn du dann Multiplayer spielst, am Anfang den Newcomer-Modus. Bei den gibt es nur eine kleine Kartenauswahl und somit nicht so viel Neues. Bei den Operatoren kannst du dich am Schwierigkeitsgrad orientieren. Zu Beginn am besten die mit der geringsten Schwierigkeit verwenden.

...zur Antwort

Es bringt dich nicht weiter, wenn man dir nur die Lösung vorrechnet. Dein Anspruch sollte sein das Prinzip eines OPVs zu verstehen.

Wenn man sich die Schaltung anschaut sieht man, dass der OPV negativ zurückgekoppelt ist. Da es ein idealer OPV ist, ist daher der Spannungsabfall am Eingang 0V und auch der Strom in die beiden Eingänge 0A. Damit liegt der invertierende Eingang virtuell auf Masse.

Der Spannungsabfall über die Widerstände entspricht somit den jeweiligen Eingangsspannungen. Mit U und R kannst du den Strom durch die Widerstände berechnen (achte auf die Vorzeichen!). Die drei Ströme fließen in dem Kontenpunkt vom negativen Eingang zusammen. Da in den OPV kein Strom reinfließt, muss die Summe der drei Eingangsströme durch R2 fließen (Kirchhoffsche Kontenregel).

Da du nun den Strom durch R2 hast, kannst du den Spannungsabfall über diesen berechnen. Der eine Anschluss von R2 liegt virtuell auf Masse und am anderen Anschluss ist das Ausgangspotential U2.

Das ganze musst du nun mal mathematisch aufschreiben und die Gleichung nach U13 umstellen.

...zur Antwort

Die Umwandlung welche du ansprichst heißt Modulation und Demodulation.

Elektrische Signale sind elektromagnetische Wellen (EMW), unabhängig davon, ob diese sich im Raum ausbreiten oder auf einer Leitung. Die Welle ist durch Frequenz, Amplitude und Phase beschreiben.

Die wahrscheinlich einfachste Modulation die man kennt ist Amplitudenmodulation (AM). Dabei wird, wie der Name sagt, die Amplitude moduliert, also entsprechend der Daten geändert. Beim UKW-Radio wird das unter anderem verwendet, wenn du am Radio AM wählst. FM wäre übrigens Frequenzmodulation, also eine Änderung der Frequenz.

Die beiden genannten Beispiele waren für analoge Signale, aber die gleichen Prinzipien gelten auch für digitale Signale. Würde man einzelne Bits senden, dann wäre eine einfache Möglichkeit der Amplitudenmodulation: Signal aus für 0 und Signal an für 1.

Bei moderneren Modulation werden übrigens meistens mehrere Bits zu sogenannten Symbolen zusammengefasst und jedem Symbol eine Kombination aus Frequenz, Amplitude und Phase zugeordnet.

Zusammengefasst heißt es, dass die verschickten Daten (welche wir mit 0 und 1 beschreiben) physikalisch durch EMW mit bestimmten Eigenschaften (Frequenz, Amplitude, Phase) dargestellt werden. Wie genau diese Zuordnung ist, hängt von der verwendeten Modulation ab. Bei Bluetooth ist das in vielen Fällen GFSK.

Wie am Anfang erwähnt ist es bei der Modulation erstmal egal in welchem Medium sich die Welle ausbreitet, also ob zum Beispiel Leitungsgeführt oder Freiraum. Natürlich sind manche Modulation aber für das eine besser geeignet als für das andere.

...zur Antwort

Als ich mal danach recherchiert habe (war schon einige Monate her), bin ich zur gleichen Erkenntnis gekommen. Nur preislich war ABS besser, weil es auch mehr Hersteller gab.

...zur Antwort
Allgemeines

Der Anfang bei jeder Aufgabe mit elektromagnetischer Induktion ist das Faraday'sche Induktionsgesetz. Mit der Lenz'schen Regel gilt:



Die induzierte Spannung ist somit von der Änderung des magnetischen Flusses abhängig. Dieser ist definiert als das Integral der magnetischen Flussdichte über die Fläche einer geschlossenen Kurve:



In deiner Aufgabe ist die Fläche die Fläche der Leiterschleife und die magnetische Flussdichte wird durch den Strom im Leiter hervorgerufen. Aus dem Ampèresche Gesetz (Durchflutungsgesetz) lässt sich eine Formel zur Berechnung der magnetischen Feldstärke für einen langen geraden dünnen Leiter herleiten:



Die Feldstärke hat nur eine tangentiale Komponente. Dabei r ist der Abstand zum Leiter und I der Strom. Da deine Anordnung in der Luft ist, gilt weiterhin:



Vereinfachungen

Bei deiner Aufgabe vereinfachen sich viele Dinge. Bei der Berechnung kannst du auf eine vektorielle Beschreibung verzichten, wenn du dir bewusst bist, welche Vektorkomponenten die einzelnen Größen haben.

  • Die Flächennormale ist in negativer y-Richtung
  • Die zu integrierende Flussdichte von Leiter 1 ist in positiver y-Richtung
  • Die zu integrierende Flussdichte von Leiter 2 ist in negativer y-Richtung

Damit ergibt sich für den magnetischen Fluss:



...zur Antwort
Umfang und den Flacheninhalt des Kreises bestimmen mit dem Python?

Hallo

, ich brauche Hilfe.

man soll 2 Python Programme mit oben stehende Formeln ( Formeln zur Bestimmung des Radius des Inkreises im Dreieck)

schreiben, die jeweils den Umfang und

den Flacheninhalt des Kreises bestimmen.Erste program soll nur mit a,b und c sein und zweite program mit h(höher), β und γ(gamma) sein, längen sollen in cm und Winkel soll in grad sein.

Ich habe es versucht, aber mein Programm hat nicht funktioniert, ich möchte bitten kann mir jemand zeigen, wie man dafür die richtige Programme schreiben kann?

hier ist mein code.

from math import sqrt

a = float(input('Koeffizient a: '))

b = float(input('Koeffizient b: '))

c = float(input('Koeffizient c: '))

frage = int(input ("ist f bekannt? :")

if frage == "yes":

f = float(input('f eingeben :'))

r = (f+f) / (a + b + c)

p = round(2 * 3.14 * r, 2)

area = round(3.14 * r * r, 2)

print ("p=", p)

print("area =",area)

else:

s = (a+b+c)/2

r1 = sqrt((s-a)(s-b)(s-c)/s)

area1=round((3.14*r1*r1,2))

p1=round(2*3.14*r1,2)

print("area1=",area1)

print("p1=",p1)

hier zum beispiel.f ist A(flächeninhalt von Dreieck) hier. ich möchte ein programm schreiben das fragt wenn A bekannt ist dann berechnet das programm den radius mit 2f/a+b+c fomel wenn nicht dann mit dieser formeln s = (a+b+c)/2 ,r1 = sqrt((s-a)(s-b)(s-c)/s). Ich benant radius hier r1. aber ich weiß nicht, wie ich mein Programm dazu bringen soll, diese Frage zu stellen, es funktioniert nicht, nachdem es gefragt habe, ob f bekannt ist oder nicht.

Grüße

...zur Frage

Wenn du Quellcode schreibst bitte richtig formatieren. Vor allem bei Python ist das wichtig wegen den Einzügen. Du musst aufpassen, dass bei der Eingabe der Zahlen kein Fehler entsteht. Bei der Berechnung kannst du anstatt cot(..) auch 1/tan(..) verwenden. Die Eingabe erfolgt aber in der Regel im Bogenmaß, muss also noch umgerechnet werden.

Ich weiß nicht wozu du die Höhe brauchst, diese kommt in deinen Formeln gar nicht vor. Ebenso ist auch die Fläche unwichtig, wenn alle drei Seiten bekannt sind. Wenn man nur die drei angegebenen Formeln verwendet, wäre das mein Vorschlag:

import numpy as np

# gibt zuerst eine Nachricht <msg> aus (falls diese definiert ist)
# stellt anschließend eine Frage <text> und erwartet eine Eingabe
# gibt folgenden Wert zurück:
# - float-Wert der Eingabe falls eine Zahl im Bereich <dim_min> bis <dim_max>
# - np.nan falls Eingabe '-'
# fragt solange bis gültige Zahl oder '-' eingegeben wurde
def get_dim(text, msg=None, dim_min=0, dim_max=np.inf):
    # Audgabe der Nachricht
    if not msg==None:
        print(msg)
    # Eingabe der Zahl
    dim_str = input(text)
    try:
        # wandle Eingabe in float-Zahl (oder NaN falls '-')
        dim_test = np.nan if dim_str == '-' else float(dim_str)
        # Ausgabe falls Zahl im spezifizierten Bereich -> ansonsten neuer Versuch
        return dim_test if np.isnan(dim_test) or (not np.isnan(dim_test) and (dim_min < dim_test <= dim_max)) else get_dim(text, "Ungültige Zahl!")
    except:
        # Falls keine Zahl oder kein '-' -> neuer Versuch
        return get_dim(text, "Ungültige Eingabe!")

# berechnet den Radius des Inkreises eines Dreiecks
# gegeben müssen alle 3 Seiten (<a>, <b>, <c>) sein
# optional kann Fläche <A> gegeben sein.
# es wird nicht überprüft ob die Fläche stimmt!
# alle Werte sollten positiv sein
def calc_r1(a, b, c, A=np.nan):
    # Berechung des halben Umfangs
    s = (a+b+c)/2
    if np.isnan(A):
        # Wenn Fläche unbekannt -> Formal (2)
        return np.sqrt( ((s-a)*(s-b)*(s-c))/s )
    else:
        # Wenn Fläche bekannt -> Formel (1)
        return A/s

# berechnet den Radius des Inkreises eines Dreiecks
# gegeben sein müssen:
# - eine Seite <l>
# - und die beiden anliegenden Winkel <arc1> und <arc2> in Grad
# alle Werte sollten positiv sein und die Winkel kleiner 180
def calc_r2(l, arc1, arc2):
    # Formel (3)
    return l / ( (1/np.tan(np.deg2rad(arc1/2))) + (1/np.tan(np.deg2rad(arc2/2))) )

# gibt aus was das Programm macht und erwartet
print("Bestimmung von Umfang und Fläche des Inkreises eines Dreiecks:")
print("        +       ")
print("       / \      ")
print("      /   \     ")
print("     /gamma\    ")
print("  b /       \ a ")
print("   /         \  ")
print("  /alpha  beta\ ")
print(" +-------------+")
print("        c       ")
print("Geben Sie die gefragten Werte ein!\n(Falls ein Wert unbekannt ist '-' eingeben)")

# Eingabe der drei Seitenlängen
a = get_dim("Länge [cm] a: ")
b = get_dim("Länge [cm] b: ")
c = get_dim("Länge [cm] c: ")

# Ermittlung der Anzahl der bekannten Seiten
cnt_nan_1 = np.sum(np.isnan([a, b, c]))
if cnt_nan_1 == 3:
    # Wenn keine Seite bekannt -> Problem nicht lösbar
    print("Nicht lösbar!\n(Mindestens eine Seite muss bekannt sein)")
elif cnt_nan_1 == 0:
    # Wenn alle Seiten bekannt -> Abfrage ob Fläche bekannt
    A = get_dim("Fläche [cm³] A: ")
    # Berechnung des Radius -> Funktionsaufruf
    r = calc_r1(a, b, c, A)
else:
    # ansonsten: Eingabe der drei Winkel
    alpha = get_dim("Winkel alpha [°] gegenüber Seite a: ", dim_max=180)
    beta  = get_dim("Winkel beta  [°] gegenüber Seite b: ", dim_max=180)
    gamma = get_dim("Winkel gamma [°] gegenüber Seite c: ", dim_max=180)
    # Ermittlung der Anzahl der bekannten Winkel
    cnt_nan_2 = np.sum(np.isnan([alpha, beta, gamma]))
    if cnt_nan_2 >= 2:
        # Wenn zwei oder mehr Winkel unbekannt -> Problem nicht lösbar
        # (zumindest nicht mit den gegebenen Formeln)
        # (unter bestimmten Bedingungen trotzdem lösbar aber hier nicht betrachtet)
        print("Nicht lösbar!\n(Mindestens zwei Winkel müssen bekannt sein!)")
    else:
        # Wenn mindestens zwei Winkel bekannt -> Funktionsaufruf
        # Es werden zunächst alle drei Optionen versucht zu berechnen
        r1 = calc_r2(a, beta, gamma)
        r2 = calc_r2(b, alpha, gamma)
        r3 = calc_r2(c, alpha, beta)
        # Auswahl des Radius welcher sich berechnen ließ
        # - r1 falls dieser nicht NaN
        # - ansonsten r2 falls dieser nicht NaN
        # - ansonsten r3 (dieser muss dann nicht NaN sein)
        r = r1 if not np.isnan(r1) else r2 if not np.isnan(r2) else r3

# Berechnung von Unfang <circ> und Fläche <area> des Inkreises
circ = 2 * np.pi * r
area = np.pi * r**2

# Ausgabe von Umfang und Fläche des Inkreises
print("Umfang: " + "{:.3f}".format(circ) + "cm")
print("Fläche: " + "{:.3f}".format(area) + "cm³")
...zur Antwort

10^100 kann man sich nicht vorstellen. Davon abgesehen hat das Universum auch nicht so viele Atome. Man schätzt rund 10^80 Atome. (Wie viele Atome gibt es im Universum? (greelane.com))

Ich habe für die Fakultät von 52 aber eine schöne Vorstellung gefunden (52! ist ungefähr 8,0658*10^67):

52 Factorial (czep.net)

Angenommen man hat eine Stoppuhr die von 52! rückwärts läuft.
Umrunde die Welt entlang des Äquators, aber gehe nur alle Milliarde Jahre einen Schritt. Entferne nach Abschluss der Umrundung einen Tropfen Wasser aus dem Pazifik. Mache jetzt dasselbe noch einmal: Gehe mit einem Schritt pro einer Milliarde Jahren um die Welt und entferne nach jeder Umrundung einen Tropfen Wasser aus dem Pazifik. Fahre fort, bis der Ozean leer ist. Wenn es soweit ist, nimm ein Blatt Papier und lege es flach auf den Boden. Fülle nun den Ozean wieder auf und beginne den gesamten Vorgang erneut, indem jedes Mal, wenn der Ozean geleert wird, ein Blatt Papier auf den Stapel gelegt wird.
Tue dies, bis der Papierstapel von der Erde bis zur Sonne reicht. Zu diesem Zeitpunkt haben sich die drei Ziffern ganz links auf der Stoppuhr nicht einmal geändert. Es sind noch 8,063*10^67 Sekunden Zeit. Also, nimm den Stapel Papier runter und mache es noch einmal. Tausendmal mehr. Danach ist nur etwa ein Drittel der Zeit geschafft.
Um die verbleibende Zeit zu verstreichen, beginne mit dem Mischen eines Kartenstapels. Nimm alle Milliarde Jahre eine 5-Karten-Pokerhand. Jedes Mal, wenn es ein Royal Flush (fünf aufsteigende Karten der gleichen Farbe) ist, kaufe einen Lottoschein. Wenn dieser Schein den Jackpot gewinnt, wirf ein Sandkorn in den Grand Canyon. Mache weiter bis der gesamte Canyon mit Sand gefüllt ist. Entferne dann eine Unze (~28g) Fels vom Mt. Everest. Leere nun den Canyon und beginne von vorne. Wenn der komplette Mt. Everest abgetragen ist sind immer noch 5,364*10^67 Sekunden übrig.
Wenn man das 255 Mal wiederholen würde, wären immer noch 3,024*10^64 Sekunden übrig. Der Timer würde irgendwann während des 256. Versuchs schließlich Null erreichen.

Und das war ja jetzt nicht einmal 10^68. Die Zahl 10^80 ist noch 1.000.000.000.000 mal größer (1 Billionen). Du musst also das beschriebene noch 1 Billionen mal machen.

...zur Antwort