Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
import numpy as np
def m_unendlich(tau):
"""Berechnet den analytischen Wert der Magnetisierung 'm' im unendlichen
System."""
tau_c = 2.0 / np.arcsinh(1)
a = 1.0/np.sinh(2.0/tau)
m = (1.0 - a**4.0)**0.125
if tau.any() < tau_c:
return m
elif tau_c <= tau.any():
return 0.0
tau = np.linspace(0.0, 5.0, 200)
eigtl. soll sogar +m und -m bei tau < tau_c ausgegeben werden. Kann mir jemand helfen, das zu realisieren? Würde m_unendlich dann gern in abhängigkeit von tau plotten, aber vorher müssen die werte passen.
@alex2007: Was sind denn jetzt die Probleme? Ich denke Du hast die `any()`-Methode falsch verwanden. Und die `m_unendlich`-Funktion gibt entweder ein Array (`m`) oder einen einzelnen Wert (0.0) zurück. Das sieht mir auch reichlich komisch aus.
also, ich möchte die Funktion: m_unendlich = ±(1 - 1/(sinh(2/t)^4))^(1/8) für t<t_c
m_unendlich = 0.0 für t>= t_c mit t_c= 2/arcsinh(1)
darstellen.
Ich dachte eben dass ich das über if Bedingungen löse und für den Plot 200 Werte für t benutze, die von 0 bis sagen wir 5 gehen.
Wie setz ich das am besten um?
Problem ist, dass es offensichtlich nicht so funktioniert, wie ich das möchte.
Habe eine umständliche Lösung, aber hätte es gern in Forn von einer einzigen Funktion m_unendlich(tau), welche ich über tau plotte und fertig.
@EyDu: das sieht nach genau dem aus, was mir helfen könnte. Die Frage ist, ob dass dann mit den Dimensionen passt. Werd es morgen früh ausprobieren. Danke erstma.
Die Frage ist noch, wie ich das +- umsetze. Am besten ich schreibe die Funktion, die per piecewise die werte bzw. 0 ausgibt und zeichne einmal die Funktion und einmal die negative Funktion. Gibt's ne Möglichkeit zu jedem.Wert t, jeweils den positiven und negativen Wert m auszugeben und mit einmal zu plotten, ohne dass Python zwecks Dimension rumspeckert? Wäre halt am elegantesten, wenn man eine Funktion definiert und diese mit einem! Plotbefehl so zeichnet.
Dich hindert ja nichts daran den Output der Funktion zweidimensional zu machen. Ist tau < tau_c dann lieferst du zu jedem tau [m, -m] zurück, andernfalls [0, 0]. Am Ende hast du dann eine 2xN-Matrix. Das ist zum Plotten schnell in zwei Arrays der Länge N zerlegt.
Oder halt der offensichtliche Weg: Alle ms für tau bestimmen und am ende ms und -ms plotten...