Wie kann ich das effizienter umsetzen?

8

Ich habe also eine Funktion (ich schreibe das in einer pseudo-funktionalen Sprache, ich hoffe es ist klar):

%Vor%

Und ich möchte das n mal auf einen Wert x anwenden. Ich könnte es rekursiv implementieren:

%Vor%

Aber es muss einen Weg geben, wie ich es mathematisch machen kann, ohne auf eine iterative Prozedur zurückzugreifen (rekursiv oder eine Schleife).

Leider sind meine Algebrafähigkeiten rosig unglaublich, kann jemand helfen?

    
sanity 06.03.2009, 23:32
quelle

4 Antworten

2

Wir können die Serie vollständig aus Ihrer Formel entfernen.

Uns wird gegeben:

%Vor%

Dies kann vereinfacht werden, indem Sie wie folgt umschreiben:

%Vor%

Wir haben das effektiv in eine Tail-Rekursion umgewandelt. (Wenn Sie die Informatik Perspektive wollen.)

Das bedeutet:

%Vor%

Der große Begriff auf der rechten Seite ist eine geometrische Reihe , die ebenfalls zusammengelegt werden kann:

%Vor%

Bearbeitet aufgrund eines kleinen Fehlers in den endgültigen Ausdrücken. +1 zum kommendenSturm.

    
Rob Lachlan 07.03.2009, 05:35
quelle
5
%Vor%

zweimaliges Anwenden ergibt

%Vor%

und dreimal

%Vor%

oder allgemein, n-mal ergibt

%Vor%

Hilft das?

    
MarkusQ 06.03.2009 23:57
quelle
1

Tatsächlich hat MarkusQs Beitrag einen Fehler. Die richtige Formel lautet:

%Vor%

Beachten Sie auch, dass "n" die Häufigkeit angibt, mit der Sie die Funktion anwenden. In Ihrem obigen funktionalen Pseudocode wendet der Fall "n = 0" die Funktion einmal an, nicht null mal; Um der obigen Formel zu entsprechen, müsste es gehen:

%Vor%     
comingstorm 07.03.2009 06:52
quelle
0

Meine Algebra-Fähigkeit lutscht auch, aber ich beschloss, die Gleichung etwas zu überarbeiten und begann, einige der Fälle d0 und d1 zu untersuchen:

%Vor%

Wenn Sie das Quadrat sehen, können Sie die kubische Form usw. sehen.

An diesem Punkt wird das x nur einmal verwendet, und Sie müssen sich nur mit der Potenzierung aller Unterausdrücke der Form (1 - lr) ^ n befassen.

    
Saem 07.03.2009 00:01
quelle

Tags und Links