Potenzieren in C++
-
hab mir auch so nen punkterechner gebaut in c++.
y = 2894/(1+259* pow(2.718281828459,(-0.0025*x)));
so sieht das bei mir aus, und funktioniert einwandfrei.
habe e durch den zahlenwert (nicht ganz genau, aber sollte mit so vielen nachkommastellen reichen) ersetzt, und die ergebnisse die rauskommen, stimmen auch.bin zur zeit nur noch auf der suche nach der umstellung dieser formel nach x = ...
-
y = \frac{a}{1 + b \cdot e^{c \cdot x}} \\
wobei logischerweise:
und
-
dot schrieb:
y = \frac{a}{1 + b \cdot e^{c \cdot x}} \\
wobei logischerweise:
und
vielen dank dafür, hat mir sehr geholfen!
habe die funktion nun für C++ umgesetzt, und mit einigen Ergebnissen durchgetestet, sollte eigentlich so hinkommen:
x = (1 / -0.0025)*log((2894 -y) / (259 * y));und funktioniert bei mir soweit auch. ( x = double; y = double )
danke vielmals.
-
habe übrigens die berechnung von y nochmal überarbeitet (alte berechnung ist ja oben von mir angegeben).
y = 2894/(1+259* exp(-0.0025*x));
sollte besser funktionieren als das alte. ist zumindest "sauberer" gelöst als mit einer normalen potenzfunktion (pow(x,y)), und nicht mit einem für e eingesetzten wert.
und ergebnis stimmt nach wie vor

-
gut wenn es geholfen hat

mich würd interessieren: was macht diese komische funktion ("Punkterechner"=!?)
-
bei dieser formel geht es prinzipiell einmal um das online-spiel world of warcraft.
bei diesem spiel gibt es ein spieler-gegen-spieler (PvP) element, das sogenannte arena-system.
in dieser arena können nun spieler gegeneinander antreten, im 5-5, 3-3 und 2-2 modus. die team sind fest, also vorher festgelegt, man "unterschreibt" dazu im spiel eine mitgliedssatzung um das team zu gründen, und kann für jeden spielmodus immer nur ein festes team haben.das script, dass ich mir nun gebastelt habe (und der threadersteller wohl auch) berechnet nun nach der vom hersteller des spiels (blizzard) angegebenen formel die arenapunkte, welche man wöchentlich angerechnet bekommt. diese arenapunkte - für die man sich im spiel gegenstände erwerben kann - (y), sind nun abhängig von der teamwertung (x).
da die berechnung von hand jedes mal etwas zu umständlich wäre, habe ich mir das script geschrieben.die umkehrfunktion ( x = ... ) habe ich nun gesucht damit man auch umgedreht herausfinden kann, wieviel teamwertung man haben muss, wenn man einen bestimmten betrag an arenapunkten (x) haben möchte.
ich habe nun allerdings noch ein problem gefunden, an dem ich gerade arbeite, und da mathe noch nie meine stärke war (ich habe mich über jede arbeit die über 5 punkte war gefreut ^^), brauche ich da eventuell nochmal deine hilfe, falls du denn magst.
in der ausgangsgleichung ( y = .. ) ist das problem schon einfach zu lösen, das funktioniert auch bereits.
im 3vs3 und 2vs2 modus bekommt man weniger arenapunkte, sprich im 3vs3 nur 80%, und im 2vs2 nur 60%. diese werden erst nach der berechung von y abgezogen, also hat ein einfaches y = y*0.8 bzw. y = y*0.6 gereicht.wie baue ich diesen abzug nun aber in die nach x umgestellte gleichung ( x = ... ) ein ?
nehmen wir als beispiel die teamwertung y = 1800. damit bekommt man ca. x = 746 arenapunkte.mit der nach x umgestellten gleichung bekomme ich das ergebnis auch raus, jedoch gilt das ja nur für den 5vs5 modus, da ich dort 100% der punkte bekomme.
wie kann ich nun aber in die nach x umgestellte gleichung die 80% für 3vs3 bzw. 60% für 2vs2 einbauen ? habe bereits einige sachen versucht, komme aber nicht wirklich drauf.
nehmen wir als beispiel wieder teamwertung y = 1800. damit bekäme man ca. 448 arenapunkte im 2vs2.
aber wie berechne ich das mit x = .. ?hast du da einen rat ?
falls du helfen kannst, danke ich vorab,
ansonsten hoffe ich, meine erläuterung der ganzen geschichte hier war ausführlich genug
/edit: hab mich nun mal hier registriert

falls du dir das ganze script mal ansehen willst, kann ich dir per pm einen link zukommen lassen.
-
WoW

ich hab mal ne zeit lang GuildWars gespielt
reicht es nicht, einfach vor dem einsetzen in die umkehrfunktion z.b. y * 1.2 zu nehmen (z.b. im 3vs3 fall)!?
-
das wird so leider nicht funktionieren, da es ja so gedacht ist, dass beide rechnungen getrennt voneinander funktionieren.
sprich man wählt erst aus:
-
- Arenapunkte berechnen ( Also Teamwertung angeben )
-
- Nötige Teamwertung berechnen für x Arenapunkte (in allen Spielmodi)
komme bisher immer nur an ergebnisse die zwar "relativ" nah dran sind, aber immerhin sich noch um bis zu 100 vom tatsächlichen ergebnis unterscheiden. und das ist definitiv zu ungenau.
-
-
dot schrieb:
reicht es nicht, einfach vor dem einsetzen in die umkehrfunktion z.b. y * 1.2 zu nehmen (z.b. im 3vs3 fall)!?
Prozentrechnung ist wohl nicht deine Stärke, oder? Die Umkehrung von "y*0.8" ist nicht "y*1.2", sondern "y/0,8" (bzw. "y*1.25") - und damit dürften auch exaktere Werte rauskommen.
-
lol, stimmt...sry hatte ich nen kleinen denkfehler, normalerweise passiert mir sowas nicht

-
CStoll schrieb:
dot schrieb:
reicht es nicht, einfach vor dem einsetzen in die umkehrfunktion z.b. y * 1.2 zu nehmen (z.b. im 3vs3 fall)!?
Prozentrechnung ist wohl nicht deine Stärke, oder? Die Umkehrung von "y*0.8" ist nicht "y*1.2", sondern "y/0,8" (bzw. "y*1.25") - und damit dürften auch exaktere Werte rauskommen.
ahhh, dass ich da selbst nicht drauf gekommen bin

vielen dank dafür, thema wäre damit ja eigentlich erledigt, das ist ja eigentlich so gesehen eh schon "off-topic"

funktioniert nun mit
2vs2:
x = (1 / -0.0025)*log((2894 - y/0.6) / (259 * y/0.6));3vs3:
x = (1 / -0.0025)*log((2894 - y/0.8) / (259 * y/0.8));5vs5:
x = (1 / -0.0025)*log((2894 - y) / (259 * y));(habs nochmal gepostet, falls es mal jmd anderes gebrauchen kann.
danke an euch! werde wohl öfter mal hier im forum vorbeischauen!
