7
votes

Trouver des racines d'une fonction A x ^ n + bx - c = 0 où n n'est pas un entier avec NUMPY?

J'écris un programme en python et je dois trouver les racines d'une fonction: xxx

a et b sont des constantes calculées plus tôt dans le programme, mais il y en a plusieurs mille. J'ai besoin de répéter cette équation deux fois pour toutes les valeurs de A et B une fois avec n = 77/27 et une fois avec n = n = n = 3 .

Comment puis-je faire cela dans Python? J'ai vérifié numpy.roots (p) et cela fonctionnerait pour quand n = 3 je pense. Mais pour n = 77/27 Comment puis-je pouvoir faire ça?


0 commentaires

4 Réponses :


5
votes

look ici et ici .

Je suis si fier de moi-même, je me souviens encore des détails (sans lire le lien!) :)

Si vous ne recevez pas cela, regardez ici .


7 commentaires

Je ne comprends pas comment fonctionne la dernière fonction ... et quelle partie de ceci est celle que je vais courir? Je suppose que c'est celui que je ne comprendrait pas ... ça aurait le plus de sens ... mais je ne comprends pas vraiment les paramètres


D'accord, connaissez-vous des calculs?


Oui je sais que je sais de calculer ... Je pense comprendre les maths derrière cela, je ne comprends tout simplement pas comment la fonction est-elle. Je ne comprends pas comment je suis censé décider du début x1 par exemple et que c'est exactement r_i


Ok, alors ive gère le code plusieurs fois pour voir comment il agit et sa droite la plupart du temps, mais si je lui donne un point de départ loin, cela donne des numéros étranges ... je suppose que le R_I est s'il a plus d'une racine?


Je n'aime réellement que le premier lien beaucoup mieux maintenant, j'ai compris que R_i est en fait si je veux que je retourne le nombre d'itérations qu'il a fallu pour se faire ... Mon seul problème est en fait maintenant une question de mathématiques et c'est ce que le point de départ Est-ce que j'utilise? J'ai testé cela et comparait à Wolframalpha, parfois exactement la même réponse et parfois son chemin ... surtout dans le cas où il y a plus d'une racine ... Toute suggestion?


Oui, c'est la partie difficile. Utilisez le théorème de la valeur intermédiaire pour déterminer où une racine doit exister. Ou, il suffit d'utiliser la valeur minimale de la fonction si vous savez qu'ils ne vont pas trop loin négatif.


Quiconque vient de monter ma réponse, je suis toujours là et je l'apprécie toujours :)



0
votes

Vous avez besoin d'un algorithme de recherche de racine comme la méthode de Newton. Tous les algorithmes de recherche de racines fonctionneront avec des pouvoirs non entière. Ils n'ont même pas besoin d'être des nombres rationnels.


0 commentaires

5
votes

J'utiliserais fsolve code> de Scipy, xxx pré>

ceci bien sûr vous donne une racine em>, pas nécessairement tous racines. p>


EDIT: Utilisez BRENTQ code>, c'est beaucoup plus rapide fort> p>

fsolve  15.5562820435
brentq  3.84963393211


0 commentaires

8
votes

Je pense que votre choix de bête est scipy.optimize.brentq ( ) : xxx

impression xxx


3 commentaires

En fait, je suis d'accord ... cela pourrait être le meilleur parce que je choisis la gamme sur laquelle il obtient la racine, mais il reste toujours la question de décider de ce que cela devrait être, comme la question de décider de ce que le point de départ devrait utiliser la méthode de Newton


Je reçois une erreur disant: Traceback (appel le plus récent): fichier "/home/saad/document/testing.py", ligne 6, dans impression scipe.optimize.brentq (attributError: "Module" L'objet n'a pas de attribut 'optimise'


@sbeleidy: Vous devez IMPORT IMPIPY.OPTIMISE PREMIER - JUSTE IMPORTER SCIPY ne suffit pas.