Zasadniczo, biorąc pod uwagę to funkcja, która produkuje tak wyjść dla różnych parametrów:Szybko znalezieniu pierwszego punktu, w którym funkcja jest równa 0 użyciem scipy.optimize
chcę szybko znaleźć pierwsze xw której funkcja równa się 0. Tak więc przy parametrach, które tworzą niebieską krzywą ponad x, chcę znaleźć x = 134. Na zielonej krzywej, chcę znaleźć x = 56 itd
myślę funkcja zawsze będzie monotonicznie maleje, aż spadnie do zera, ale nie jestem całkowicie pewien.
Funkcja niekoniecznie maleje monotonicznie.
I am pewność, że uderzy tylko 0 raz, a następnie pozostanie zero.
Obecnie jestem brutalnie-forsujący to przez iterowanie przez wartości x, aż osiągnę zero, ale chcę czegoś, co będzie lepsze w wykształconych domysłach (na podstawie nachylenia?) I iteracji.
Idealnie chcę użyć czegoś już wypalonego (since 90% of programmers can't even write a binary search correctly), jak coś z scipy.optimize, ale wygląda na to, że wszyscy chcą znaleźć albo globalne minimum, albo przejście przez zero.
(Ta funkcja to rodzaj distance_to_the_wall kostki RGB dla danej barwy w przestrzeni kolorów Lch (czyli po prostu budowanie funkcji "sanely clip to RGB"), ale ponieważ odwzorowanie między IRGB i LCh może się różnić w zależności od biblioteki i z parametrami takimi jak iluminant itp. Myślę, że najlepiej jest wypróbować kilka wartości, aż znajdzie się właściwy, a nie próbować odwrócić - obliczyć wartość bezpośrednio?)
Czy funkcja całkowita wahał (lub podobnie dyskretny)? W przeciwnym razie, jak możesz iterować przez wartości x? – abarnert
Ponadto, jeśli masz globalny algorytm minimalny i nie możesz znaleźć algorytmu przecinającego zero ... zawsze możesz użyć wartości 'global_minimum (lambda x: abs (foo (x))). (Nie twierdzę, że to oczywiście rozwiązanie _right_). – abarnert
Nie sądzę, że równania są takie, że można je rozwiązać za pomocą rachunku różniczkowego. Innymi słowy, musisz użyć metod numerycznych do przybliżenia? – vossad01