Schleifen-Rechnung zu einer Formel umstellen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Ava

Gast

Betreff: Schleifen-Rechnung zu einer Formel umstellen

BeitragSo, Sep 04, 2005 13:14
Antworten mit Zitat
Hallöle!

Also, es geht darum, dass ich eine Berechnung innerhalb einer Schleife durchführe.

(Solange A > 0 )
X = X + A
A = A * B + C

B und C sind immer gegeben.
B ist ein Wert zwischen 0.00 und 1.00.
C ist ein Wert kleiner 0.00.


Im Normalfall ist A ebenfalls gegeben.
Das relevante Ergebnis ist in diesem Fall am Ende der Schleife X.


Mein Problem ist, dass ich zwei Formeln benötige:


1) X berechnen, wenn A, B und C gegeben sind.
2) A berechnen, wenn X, B und C gegeben sind.


Ist so eine Berechnung möglich und wenn ja,
wie sehen die Formel dafür aus?? Confused

(möglich ohne eine Schleife zu verwenden!)


Ich habe selbst bisher keine Lösung finden können.... Evil or Very Mad


Lieben Gruss,
+ Ava +
 

DasKlo

BeitragSo, Sep 04, 2005 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
So etwas nennt man in Mathe eine rekurisve Funktion (glaub ich). Dafür wirst du immer Schleifen brauchen, anders geht das nicht (außer mit mathemathischen Operatoren, die ich nicht kenne und die höchstwarscheinlich auch BB nicht unterstützt).
Aktuelles Projekt:
Demonspawn 29%
Gesamt CodeGröße: 614KB
Zeilen: 17967
OrdnerGröße: 151MB (wird allerdings noch weniger)
 

Ava

Gast

BeitragMo, Sep 05, 2005 0:35
Antworten mit Zitat
Gut, mag sein das es wirklich nicht möglich ist... Sad

Dann eben mit Schleife.
Da ist 1) natürlich kein Problem,
aber wie berechne ich dann 2) ?

2) A, wenn X, B und C gegeben sind.

Also welches A ich beötige, um ein bestimmtes X am Ende zu erhalten. Question
 

Klaas

BeitragMo, Sep 05, 2005 11:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin mir relativ sicher das man dies nicht mit simpler Mathematik lösen kann.
Das liegt daran, da es eine Schleife mit Abbruchsbedingung gibt und dies die Menge der Iterationen an A koppelt, welches wiederum Rekursiv berechnet wird.
Ich denke dies kann man nur mit einer Aproximation lösen d.h. einen Nährungswert finden. Dazu gibt es den Algorythmus der "Sukzessive Approximation". Man beginnt dabei mit einem Schätzwert und pegelt diesen ein in dem man feststellt ob die Zahl größer oder kleiner ist ...

Ich denke mir aber das wird (da du es ja scheinbar möglichst schnell berechnen möchtest) nichgt praktikabel sein.
Verrate mal wozu du das brauchst, evtl. kann man die Problematik ja anderweiteg lösen.
Wie genau müssen denn die Lösungen sein? Kann man evtl. mit vorberechneten Wertetabellen arbeiten?
 

Ava

Gast

BeitragMo, Sep 05, 2005 11:46
Antworten mit Zitat
Hi Klaas,

danke für Deine Antwort! Mittlerweile bin ich zu einer ähnlichen Erkenntnis gekommen. Sprich, dass es so einfach wohl nicht zu berechnen ist und ich mich wohl mit einem Annährerungswert zufriedengeben oder eine vorberechnete Tabelle verwenden müsste. Confused Beides blöd. Ersteres habe ich schon hinbekommen, wenn ich B ausser acht lasse. Hach naaajaaa, ich habe mich nun erstmal geschlagen gegeben .... fast 6 Stunden habe ich gestern mti Grübeln über dieser Aufgabe verbracht, viel zu viel verschwendete Zeit. Confused

Diese Berechnung war teil meiner KI, um den Ausgang bestimmter Bewegungsabläufe schon im voraus zu bestimmen bzw. eine Bewegung mit einem bestimmten Zielwert zu starten.

Die Genauigkeit wäre in diesem Fall ein kleines bisschen zu vernachlässigen, eine möglichst schnelle Berechnung hingegen wäre Pflicht.

Alfadur

BeitragMo, Sep 05, 2005 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
rekursion hat nix mit schleifen zu tun, ist ja eigentlich das gegenteil von iteration ...für dein erstes problem könnte es so aussehen ...

BlitzBasic: [AUSKLAPPEN]

Function rek1#(a#,b#,c#,x#=0)
If a#<=0 Then Return x#
x#=x#+a#
Return rek1#(a#*b#+c#,b#,c#,x#)
End Function


für dein zweites problem könnte man mit dieser funktion über schon genannte annäherung an den a#-wert kommen ...

edit : kleiner fehler drin gewesen .-)
A Cray is the only computer that runs an endless loop in less than four hours.
 

Klaas

BeitragMo, Sep 05, 2005 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Alfadur hat Folgendes geschrieben:
rekursion hat nix mit schleifen zu tun, ist ja eigentlich das gegenteil von iteration


I)n diesem Falle liegt die Rekursion darin das für die berechnung von A auch A benutzt wird. Genauso wie bei einem Fraktal, welches man auch als Rekursiv bezeichnet.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group