...also, danke
Habe da heute länger mit einem Freund herumprobiert. Senkrecht zum Gradienten stimmt natürlich und taugt auch halbwegs, kleine Schrittweite und wiederfinden. Analytisch kann man noch sagen, wenn P(x,y) glatt ist, gilt für eine Niveaulinie y(x) die gewöhnliche DGL
[math]\frac{\partial y}{\partial x} = - \frac{\frac{\partial P}{\partial x}}{\frac{\partial P}{\partial y}}[/math]
(folgt aus der Kettenregel)
und wenn der Nenner Null ist, geht die Niveaulinie halt senkrecht und man kann in dem Bereich mit der analogen Gleichung für x(y) arbeiten.
Ich habs dann aber anders gelöst, weil ich noch ein paar mehr Sachen über P wusste. (dass es überhaupt für jedes y nur ein x auf der Niveaulinie gibt). In Python:
Code:
from scipy.optimize import fsolve
#Funktion P
def P_func(x,y):
#langer Term
#partielle Ableitung dP/dy
def dPdy(x,y):
#noch laengerer Term
#liefert zu einem Niveau P und einer Stelle x ein y, so dass P(x,y) gleich dem übergebenen P ist
def y_isoP(P,x):
return fsolve(lambda y: P - P_func(x,y), 0.5*(rhoc-x), fprime=lambda y: -dPdy(x,y))
Geht an eine Stelle x. 0.5*(rhoc-x) ist ein Startwert, das Definitionsgebiet ist ein bisschen komisch geformt und das liegt immer drin. Es wird eine Nullstelle von P-P_func gesucht, das ist ja gerade das y was gesucht ist. Das fprime-Argument ist optional, Solver freuen sich wenn man ihnen Ableitungen der Gleichungen gibt.