In herkömmlicher mathematischer Notation Ihre Gleichung
Die Durchsuchungen Funktion SciPy fsolve
für einen Punkt, an dem ein gegebenen Ausdruck Null (eine „Null“ oder „Wurzel“ des Ausdrucks) entspricht. Sie müssen fsolve
mit einer ersten Schätzung angeben, die Ihrer gewünschten Lösung "nahe" ist. Eine gute Möglichkeit, eine solche erste Schätzung zu finden, besteht darin, den Ausdruck einfach zu plotten und nach dem Nulldurchgang zu suchen.
#!/usr/bin/python
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import fsolve
# Define the expression whose roots we want to find
a = 0.5
R = 1.6
func = lambda tau : R - ((1.0 - np.exp(-tau))/(1.0 - np.exp(-a*tau)))
# Plot it
tau = np.linspace(-0.5, 1.5, 201)
plt.plot(tau, func(tau))
plt.xlabel("tau")
plt.ylabel("expression value")
plt.grid()
plt.show()
# Use the numerical solver to find the roots
tau_initial_guess = 0.5
tau_solution = fsolve(func, tau_initial_guess)
print "The solution is tau = %f" % tau_solution
print "at which the value of the expression is %f" % func(tau_solution)
ich mir ziemlich sicher bin, dass diese Gleichung eine analytische Lösung in C – lejlot
habe ich nicht so denken würde, wenn Sie es genau bestimmen können. Ich habe versucht, Newtons Methode mit Python zu verwenden, aber es scheint von der Art und Weise, wie die Gleichung geschrieben wird, abhängig zu sein. – stars83clouds
probiere wolfram's alpha solver, wenn du ein bestimmtes R und ein a verwendest gibt es schöne, saubere Lösungen in C. – lejlot