Seite 1 von 2

Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Sonntag 26. Mai 2019, 14:55
von xXSkyWalkerXx1
Abend,

Ich bin gerade dabei das Programm für meine Belegarbeit im Leistungskurs Mathematik zu beenden.

Mein Problem liegt darin herauszufinden wie ich die x-Werte in die Ausgangsgleichung setzen kann, damit ich die y-Werte der Extremas bekomme
und die x-Werte in die 2.Ableitung zu setzen und mit 0 vergleichen, um herauszufinden, ob der x-Wert Minima oder Maxima ist.

Mein Ansatz war :

Code: Alles auswählen

for werte in x:
     y = self.f().subs(Symbol('x'),x)
     print(y)
allerdings gibt er mir ein Fehler aus, da self.f() ein String ist, doch wie mache ich es dann - welche Alternative gibts?

Code: Alles auswählen

    def f(self):
        #Funktion erstellen
        return self.entry.text() #QLineEdit.text()

    def erste_ableitung(self):
        #1.Ableitung bilden
        return diff(self.f())

    def zweite_ableitung(self):
        #2.Ableitung bilden
        return diff(self.erste_ableitung())

    def extremas(self):
        #Extremas berechnen
        #Bekomme alle X'n, setze in f() ein um Y zubekommen
        x = solveset(self.erste_ableitung(),Symbol('x'))
        return x
Zum Inhalt des Programms: es soll die 1. & 2. Ableitung bilden, Extremas berechnen, glob.&lok. Minimas&Maximas bestimmen

Grüße,
xXSkyWalkerXx1

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Montag 27. Mai 2019, 13:42
von xXSkyWalkerXx1
Niemand? ^^

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Montag 27. Mai 2019, 13:52
von Sirius3
@xXSkyWalkerXx1: hast Du schon ein Sympy-Tutorial durchgearbeitet. Da sollte eigentlich vorkommen, wie man einen String in einen Ausdruck umwandelt.

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Montag 27. Mai 2019, 17:23
von xXSkyWalkerXx1
Habe nochmals, genauer, hineingeschaut und habe die Lösung gefunden! :)
"sympify()" konvertiert String zu Ausdruck.

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Freitag 31. Mai 2019, 11:53
von xXSkyWalkerXx1
Habe Mal 1 Frage:

Wie vergleiche ich komplexe Zahlen?
Also z.b. if 1 == sqrt(2)

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Freitag 31. Mai 2019, 12:25
von snafu
Ich sehe da keine komplexen Zahlen. Dein Beispiel vergleicht einen Integer mit einem Float...

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Freitag 31. Mai 2019, 12:50
von __blackjack__
@snafu: Nicht wenn `sqrt` aus dem `cmath`-Modul kommt. 👉

Code: Alles auswählen

In [10]: cmath.sqrt(2)
Out[10]: (1.4142135623730951+0j)

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Freitag 31. Mai 2019, 13:00
von xXSkyWalkerXx1
Ja, tschuldigung, hätte das erwähnen sollen, dass es aus dem Modul kommt. ^^

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Freitag 31. Mai 2019, 14:04
von __blackjack__
@xXSkyWalkerXx1: Jetzt solltest Du vielleicht noch verraten was denn Dein Problem ist‽ Denn der Vergleich wird genau so gemacht wie Du ihn gezeigt hast:

Code: Alles auswählen

In [19]: 1 == cmath.sqrt(2)
Out[19]: False

In [20]: 1 == 1+0j
Out[20]: True

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Samstag 1. Juni 2019, 07:31
von xXSkyWalkerXx1
Naja, durch Substitution (.subs() ) werden x-Werte in eine Funktion gesetzt, um die y-Werte dessen zu ermitteln, dabei wird allerdings ab einer Funktion 3. Grades auch Mal eine Wurzel ausgegeben.
Doch diese y-Werte muss ich mit 0 vergleichen können, um herrauszu finden welches lokalen Und dann die globalen Minima & Maximas sind.

Nur dabei bekomme ich einen Fehlercode, dass das Programm die 0 nicht mit komplexen Zahlen vergleichen könne.

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Samstag 1. Juni 2019, 07:44
von __blackjack__
@xXSkyWalkerXx1: Geht doch:

Code: Alles auswählen

In [39]: 0 == 1+0j
Out[39]: False
Ich weiss was Du tust und welche Fehlermeldung Du warum bekommst. Du musst aber dringend an Deiner Kommunikation arbeiten. Was Du tust und was für eine Fehlermeldung Du bekommst, sollte man nämlich nicht raten müssen, das sollte von Dir beschrieben werden. Am besten mit Code und Fehlermeldung, und nicht mit diesen vagen Andeutungen.

Also was tust Du denn da genau und was passiert genau, und vor allem – was erwartest Du denn von so einem Vergleich und warum?

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Donnerstag 6. Juni 2019, 17:58
von xXSkyWalkerXx1
Ist zwar bissel spät, hatte aber bissel was für Schule zu tun. ^^

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Users\Philipp\Desktop\Eigene_Programme\Mathe - Belegarbeit\Berechner von Min&Max.py", line 68, in <lambda>
    self.button.clicked.connect(lambda: self.calculation(self.x))
  File "C:\Users\Philipp\Desktop\Eigene_Programme\Mathe - Belegarbeit\Berechner von Min&Max.py", line 93, in calculation
    self.find_extremas(x)
  File "C:\Users\Philipp\Desktop\Eigene_Programme\Mathe - Belegarbeit\Berechner von Min&Max.py", line 131, in find_extremas
    if value < 0:
  File "C:\Users\Philipp\AppData\Roaming\Python\Python35\site-packages\sympy\core\expr.py", line 358, in __lt__
    raise TypeError("Invalid comparison of complex %s" % me)
TypeError: Invalid comparison of complex 2 - 2*sqrt(3)*I/9
...das ist der Fehlercode, den ich bekomme, wenn ich beim Programm ab "x**3" eingebe.

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Donnerstag 6. Juni 2019, 18:07
von Sirius3
Wie soll eine komplexe Zahl auch größer oder kleiner sein als eine andere?

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Donnerstag 6. Juni 2019, 18:15
von xXSkyWalkerXx1
Ich muss die aber vergleichen können, bezüglich Minima & Maxima.

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Donnerstag 6. Juni 2019, 18:17
von __blackjack__
@xXSkyWalkerXx1: Aber wie? Zeig doch mal einen Vergleich zwischen einer komplexen Zahl auf kleiner oder grösser und erkläre dann mal was da Deiner Meinung nach herauskommen soll und warum, beziehungsweise wie man auf dieses Ergebnis kommen soll‽

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Donnerstag 6. Juni 2019, 18:23
von xXSkyWalkerXx1
Ich bin mir nicht sicher, ob ich dich richtig verstanden habe, aber hier... :

Code: Alles auswählen

try:#lokale Max&Min
            for value in y_val_abl2_list:
                if value < 0:
                    lok_maxima_list.append(value)
                else:
                    lok_minima_list.append(value)
        except:
            lok_maxima_list.append("/")
            lok_minima_list.append("/")
...der Vergleich.

Das Programm soll auch die Komplexe "2 - 2*sqrt(3)*I/9" (siehe Fehlercode) vergleichen, um diese Minima bzw. Maxima zu zuordnen.
Also demnach sollte diese Komplexe der Minimaliste zugeordnet (hinzugefügt) werden.

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Donnerstag 6. Juni 2019, 18:38
von Sirius3
Also mal konkret, ist nun 2-3i < 0 oder größer 0?

Keine nakten Excepts, vor allem, wenn man den Fehler ignoriert.

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Donnerstag 6. Juni 2019, 19:49
von xXSkyWalkerXx1
Das ist kein "I", sondern eine "1".

Und es ist >0.

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Donnerstag 6. Juni 2019, 20:08
von Sirius3
Was ist eine 1? Hast Du nun komplexe Zahlen oder nicht?

Re: Berechnen von glob.+lok. Maxima & Minima [Programm]

Verfasst: Samstag 8. Juni 2019, 17:45
von xXSkyWalkerXx1
1. Ja, es ist eine komplexe Zahl.
2. Naja, scheint wohl doch ein "I" zu sein, aber woher kommt das "I" - denn ich habe es ja garnicht mit eingegeben, als Funktion?

Da muss ich mir Mal kurz die Doku anschauen.

EDIT: reicht es die "0" als Vergleich in eine Komplexe Zahl umzuwandeln - mit "complex()"?
Bin nämlich gerade nicht am PC, sondern erst morgen wieder.