Καλησπέρα και καλή χρονιά,
στον κώδικα που παραθέτω αντιμετοπίζω το εξής πρόβλημα
ValueError: f(a) and f(b) must have different signs
Η εξίσωση είναι σωστή καθώς την έχω δοκιμάσει με γνωστές τις μεταβλητές ma, gam και άγνωστο το fld με σωστά αποτέλεσματα. Το πρόβλημα παρουσιάζεται μόνο όταν χρησιμοποιώ την μέθοδο διχοτόμησης (bisect).Να αναφέρω επίσης ότι έχω δοκιμάσει με διαφορετικά όρια (f(a),f(b))χωρίς κάποιο αποτέλεσμα, όμως οι λύσεις που ψάχνω ξέρω ότι είναι στο (1,10).
from scipy.optimize import bisect
from math import log
gam = 1.4
fld = 0.305
def f(ma):
return fld - (1/gam)*((1/(ma**2))-1) + ((gam+1)/(2*gam))*log((((gam+1)/2)*(ma**2))/(1+((gam-1)/2)*(ma**2)))
ma = float (bisect(f , 1 , 10 , xtol=1e-5 ))
print(ma)
Όποιοαδήποτε ιδέα καλοδεχούμενη.