Imaginäre Zahlen in AutoIt

  • Guten Abend Forum :)

    Da ich momentan verschiedenste Formeln automatisieren will, muss ich mit imaginären Zahlen arbeiten.
    Da diese von AutoIt aber leider nicht unterstützt werden, würde ich mich über jeden guten Workaround freuen.

    Meine Algorithmen haben ich bereits so überarbeitet, dass man nur noch die Variable $i deklarieren muss.
    Folgendes geht natürlich nicht:

    [autoit]

    Global Const $i = Sqrt(-1)

    [/autoit]

    Schonmal danke im Vorraus!

    Regards, James

  • Verwende Arrays und baue die Komplex-Logik selbst ;) Dim $complex = [$real, $imaginary]

  • Ich nehme an die Zahl der Programmiersprachen die von Haus aus imaginäre Zahlen unterstützen tendiert gegen 0...
    Imaginäre Zahlen heißen nicht umsonst so. ^^ Die standardoperatoren und alle Funktionen für Zahlen können mit sowas nicht umgehen.
    Im besten Fall erhältst du jede Menge Fehlermeldungen. Ich bin mir relativ sicher, dass du alle nötigen Operationen auf selbstgeschriebene Funktionen auslegen musst die kompatibel mit diesen Zahlen sind. Die Zahlen selbst wirst du wahrscheinlich in Arrays speichern müssen.

    Edit: Zu spät...

  • Danke für die Idee, nur kann ich Arrays nicht einfach so an Funktionen wie Cos übergeben. z.B.:

    [autoit]

    Sqrt(-4/3 * $p) * Cos(1/3 * ACos(-$q/2 * Sqrt(-27 / $p^3)))

    [/autoit]

    MfG, James

    Edit: @Name die Grundrechenarten wären ja kein Problem, dann gibt es ja aber auch noch Funktionen wie Log, Sin, Cos, Tan, ...

  • Du musst tatsächlich alle Rechenarten als Funktion neu für diesen Datentyp schreiben.
    Wurde allerdings >>hier<< schon einmal gemacht.

    Ich nehme an die Zahl der Programmiersprachen die von Haus aus imaginäre Zahlen unterstützen tendiert gegen 0...


    Ja bis z.B. auf Python, Fortran, C (ab C99), C++...

  • AspirinJunkie Vielen Dank, die UDF beinhaltet alle Funktionen die ich brauche. :thumbup:

    Edit: Soweit ich mich erinnern kann, ist/war die von AspirinJunkie vorgeschlagene UDF (teilweise) fehlerhaft. (Nur als Anmerkung für die, die ein ähnliches Problem haben und dieses Thema finden.)

  • Mit komplexen Zahlen kann man zum Beispiel Gleichungen lösen, die man mit reellen Zahlen nicht lösen kann.
    z.B.: x^2 + 1 = 0

    MfG, James

    Edit: Ich poste in den nächsten Tagen auch noch mal ein Skript zu diesem Thema...

  • Was kann man eigentlich damit machen???

    Das frage ich mich auch (bin schulisch leider noch nicht auf dem mathematischen Niveau). Ich hab mir auf Youtube mal ein paar Videos zu Komplexen Zahlen angesehen. Aber so auf nen praktischen Anwendungssinn bin ich noch nicht gestoßen.. außer bei Elektrotechnik, da kann man iwas damit berechnen, aber wozu brauch man das in AutoIt oder allgemein beim Programmieren?
    Ich meine, man stellt sich vor es gäbe eine Imaginäre Einheit und rechnet dann mit Zahlen, die es ja eigentlich im Endeffekt gar nicht gibt, oder versteh ich das falsch?

    Edit: Ich poste in den nächsten Tagen auch noch mal ein Skript zu diesem Thema...

    Ich bin schon gespannt :D

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • rechnet dann mit Zahlen, die es ja eigentlich im Endeffekt gar nicht gibt


    Eigentlich im Endeffekt gibt es ja auch keine negativen Zahlen. Was ist weniger als nichts? :D

  • Eigentlich im Endeffekt gibt es ja auch keine negativen Zahlen. Was ist weniger als nichts?

    hm das ist wohl wahr :D, aber dann noch die Wurzel aus weniger als nichts zu ziehen^^.. naja ;D

    Ich denke sowas steht gar nicht auf dem Lehrplan. Meiner Meinung nach lernt man sowas erst im Studium.

    Ja, leider. Ich glaub ein paar wenige Lehrer behandeln das noch im Mathe-Leistungskurs.. aber davon ausgehen kann man nicht.

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • Moin Moin,

    ich an Deiner stelle würde das Rad nicht zum x-ten mal neu erfinden sondern z.B. die yacas dll einbinden.
    Ein kleiner Fred dazu
    Hier gibts es die DLL
    Ein kleiner Überbklick wie yacas mit complexen Zahlen arbeitet

    Ein (kleines) Problem wird sein, die DLL Output entsprechend zu "parsen". Aber das ist IMO reine String- Akrobatik, und die beherrscht AU3 sehr gut, im Gegensatz zum erstellen von eigenen Typen oder (noch besser) Objekten/ Methoden.

    Grüße
    uuchip

    P.S.: Wenn man unbedingt selber was basteln möchtest, wirf mal eine Blick auf
    https://autoit.de/index.php?page=Thread&amp;threadID=17920


    • Offizieller Beitrag

    [OT]
    Mathematik ist eine Wissenschaft, die auf Annahmen beruht - in diesem Fall die Annahme, das die Quadratwurzel aus -1 = i ist und schon kann man weiter rechnen.
    Da fällt mir immer ein netter Mathematiker Witz ein:
    Ein Handwerker, ein Physiker und ein Mathematiker werden jeweils mit einer Büchse Nahrung 3 Tage in eine Höhle gesperrt.
    - Handwerker: Wirft die Büchse solange an die Wand, bis sie offen ist - er überlebt.
    - Physiker: Berechnet Winkel, Wurfgeschwindigkeit und Aufschlagskräfte, schleudert die Büchse entsprechend an die Wand - sie ist offen und er überlebt.
    - Mathematiker: Er nimmt an die Büchse sei offen - und verhungert.
    :D
    [/OT]

  • - Mathematiker: Er nimmt an die Büchse sei offen - und verhungert.


    Wäre die Büchse offen, hätte er überlebt. Da dies nicht der Fall ist muss die Büchse geschlossen sein. Und damit ist der Widerspruchsbeweis abgeschlossen. :D