2016-04-02 6 views
0

Ich habe eine Funktion dieser ArtFinding Nullen einer Funktion

f(x)=alpha+beta \sum_i A_i/(x-B_i) 

wo alpha, beta, A_i und B_i reelle Zahlen sind. Ich möchte numerisch alle Nullen von f(x) finden (ich möchte nur die Nullen auf der realen Achse betrachten).

Was wäre die beste Strategie/Algorithmus für diesen Zweck?

Für diese Funktion x=B_i sind Asymptoten, so sagen wir, dass ich die Suche im Intervall [B_i,B_{i+1}] einschränken kann (ich nehme an, dass). Im Allgemeinen hat f(x) mehr als eine Null im Intervall [B_i,B_{i+1}].

+0

Haben alle A dasselbe Zeichen? – dmuir

+0

nein, sie können positiv oder negativ sein – user3368447

Antwort

1

Verwenden Sie einfache Algebra die Funktion neu zu fassen, um das Ganze ein einziges Polynom über einen gemeinsamen Nenner:

denominator(x) = \product_i (x-B_i) 

Der Zähler ein Polynom sein wird, und die Wurzeln dieses Polynom werden die Wurzeln der sein ganze Funktion. Anschließend können Sie mit diesem einfachen Polynom eines beliebigen aus einer Vielzahl von Wurzelfindungs ​​Methoden verwenden:

https://en.wikipedia.org/wiki/Root-finding_algorithm#Finding_roots_of_polynomials

Ihre Einsicht, dass die Wurzeln in Intervallen zwischen Nullen des Nenners sein werden, wird ohne Zweifel nützlich sein. Stellen Sie sicher, dass keine der Wurzeln des Zählers mit den Wurzeln im Nenner übereinstimmt. In diesem Fall müssen Sie einen gemeinsamen Faktor löschen und es erneut versuchen.