Entwickler-Ecke
Sonstiges (Delphi) - Basis und Potenz
NoEon - So 13.04.03 12:50
Titel: Basis und Potenz
Hallo ich stehe gerade von einem Problem. Ich weiss nicht wie ich in meiner Formel die "Hochzahl" angeben muss. --->Potenz?<---
Mist ich kenn gerade nicht mal den Mathematisch korrekten Ausdruck dafür.
Also es geht um ZinsesZinsrechnung.
ich weiss das man das theoretisch auch mit der for do schleife machen kann, aber.. da hab ich im Unterricht "gepennt"
Es gibt aber auch eine Formel dafür, die hab ich mir gebastelt!
Wer kann mal helfen?!
Danke schön
NoEon
Husar - So 13.04.03 13:21
Willst du einfach nur potenzieren oder willst du ein funktion zur zinsberechnung, das sind nämlich 2 paar Schuhe und das 2. hat nichts mit Potenzen zu tun?
NoEon - So 13.04.03 13:24
beide Wege würden mir weiterhelfen!! --->weil ich beide nicht kenne!
Potenzieren wäre aber der wichtigste!!
BungeeBug - So 13.04.03 13:24
Hi,
naja nicht wirklich da das eine das andere mit sich bringt ... also wenn ich das richtg verstanden hab kannst du das einfach so schreiben <Basis>^<Potenz> und dann geht das schon :P
MfG BungeeBug
?dit
Scheint doch nicht zu gehn ....
dann bin ich auch mal gespannt ...
NoEon - So 13.04.03 13:29
na wenn das so ist!... let's go
zufällig ne Ahnzng wo ich den MS Help Workshop herbekomme??
Husar - So 13.04.03 13:29
Potenzieren =
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| program potenzieren; uses crt; var x,potenziertes_x,n:integer; begin clrscr; write('Geben Sie die Basis ein: '); readln(x); potenziertes_x:=x; write('Geben Sie den Exponenten ein: '); readln(n); while n>1 do begin potenziertes_x:=potenziertes_x*x; n:=n-1; end; write(radiziertes_x); readln; end. |
Christian S. - So 13.04.03 13:53
Ich würde die Funktion "power" empfehlen.
Oder, wenn Du das nicht willst, für ganzzahlige Exponenten diese Funktion (ist um einiges schneller als eine simple Schleife):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function potenz (basis : Extended; exponent : Integer) : Extended; VAR ergebnis : Extended; begin if exponent = 0 then result:=1 else begin if exponent = 1 then result:=basis else begin if exponent mod 2 = 0 then begin ergebnis:=potenz(basis, exponent div 2); result:=ergebnis*ergebnis; end else result:=potenz(basis, exponent-1)*basis; end; end; end; |
Oder für x > 0 geht auch, wenn Du x^k haben willst: exp(k*ln(x))
Ich würde aber power empfehlen.
MfG,
Peter
NoEon - So 13.04.03 14:08
Danke das Funzt! Fertig!!!
Was war mit dem Help Workshop zum erstellen von Hilfe Datein? oder macht man das woanderes mit??
Danke schöen
Gruss
NoEoN
NoEon - So 13.04.03 14:22
Wunderbar!!!
Der Sonntag ist gerettet, die 99 Steps hab ich schon gefunden. Jetzt geht es rund, sprach der Kanarienvogel und flog in den Ventilator
Aso noch was... gibt es da auch so was wo ich das Programm einpacken lassen kann...? So ein Setup Dingsbums?
NoEoN
NoEon - So 13.04.03 17:42
Titel: mist geht noch nicht ganz
Hallo ich bin es noch mal schau mal das hab ich jetzt Fabriziert:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.BitBtn6Click(Sender: TObject); var kn, k0, n, p:real; begin
k0:=StrToFloat(edit16.Text); p :=StrToFloat(edit17.Text); n :=StrToFloat(edit18.Text);
if edit16.text = '0' then if abfang1(edit16) then Exit; if edit17.text = '0' then if abfang1(edit17) then Exit; if edit18.text = '0' then if abfang1(edit18) then Exit;
kn:= (k0*((1+p)/(100)^n)); label27.caption:-=FloatToStrf(kn, ffFixed, 18,2); end;
end. |
aber das ghet nicht so wie ich mir das gedacht habe.
das Basiert auf der Zinseszinsformel. Ich ich gefunden habe!
Kn=K0*((1+p)/(1*100))^n
das sollte so auch von der Umstellung her Stimmen, kann mir das mal jemand sagen ob das überhaupt richtig ist??
Danke noch mal
NoEoN
Christian S. - So 13.04.03 17:53
In meiner Formelsammlung steht die Zinseszinsformel so drin, dass nicht 1+p durch 100 geteilt wird, sondern dass es so aussieht: 1+p/100.
Die Formel sieht dann so aus:
kn = k0*q^n mit q = 1+p/100
Außerdem haben wir alle so fleißig Algorithmen und befehle für die Potenzberechnung gepostet, dass Du sie auch benutzen sollest!
| Zitat: |
label27.caption:-=FloatToStrf(kn, ffFixed, 18,2);
|
Das Minus in der Zuweisung solltest Du wegmachen.
MfG,
Peter
NoEon - So 13.04.03 18:03
hast Du p und q durcheinander gebracht???
Christian S. - So 13.04.03 18:15
Nö. So steht es in der Formelsammlung. Scheint mir auch einleuchtend zu sein. Wenn ich p = 3 habe (also 3% Zinsen), muss ich k0 mit 1,03 multiplizieren. Stimmt doch, oder?
NoEon - So 13.04.03 18:47
ne sorry heute rall ich nichst mehr ich glaub für heute lass ich das ich krieg das jetzt nicht merh in das billy billig Programm rein, mal sehn vielleicht morgen.
sag: for do schleife wurde oben erklärt... wurd die auch schon mal woanderes erklärt ich hab nichts gefunden. :-(
bis dann
ich gebs auf-....
NoEon - Mo 14.04.03 13:48
ok also jetzt sieht das bei mri so aus.. mit der Power Funktion
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.BitBtn6Click(Sender: TObject); var z, kn, p,ze,k0, lz:real;
begin
kn:=StrToFloat(edit16.Text); p :=StrToFloat(edit17.Text); lz :=StrToFloat(edit18.Text);
if edit16.text = '0' then if abfang1(edit16) then Exit; if edit17.text = '0' then if abfang1(edit17) then Exit; if edit18.text = '0' then if abfang1(edit18) then Exit;
k0:=kn*power((1+p/1*100), 1/lz); //ze:=k0*(1+p/1*100); //z:=power(ze, 1/lz); //kn:= (k0*(power(1+p)/(100), 1/n)); //kn := k0*q^n mit q = 1+p/100
label27.caption:=FloatToStrf(k0, ffFixed, 18,2); end; |
aber ich bekomme krumme werte raus.. also stimmt nicht .. aber was nur ich hatte die Formel schon 2 mal umgestellt aber es ändert sich nichts!
unit math läuft und ist eingebunden
Danke und Gruss
NoEoN
Christian S. - Mo 14.04.03 14:08
| Zitat: |
| k0:=kn*power((1+p/1*100), 1/lz); |
Wie kommst Du auf diese Formel? Wenn ich die Formel, die ich gepostet habe, nach k0 umstelle, bekomme ich ein 1/(q^lz) und dann muss es also nicht 1/lz, sondern -lz heißen.
| Zitat: |
| kn:= (k0*(power(1+p)/(100), 1/n)); |
Wieso 1/n ? Und das (1+p) ist auch falsch. Es muss doch 1 + p/100 heißen und nicht (1+p)/100.
MfG,
Peter
NoEon - Mo 14.04.03 14:57
hi Peter, erstmal danke das Du Dich intensiv mit meinem Problem beschäftigst!
p das ist meine Variable
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| begin if LCSAbfang(edit16) then begin kn:=StrToFloat(edit16.Text); if LCSAbfang(edit17) then begin p :=StrToFloat(edit17.Text); if LCSAbfang(edit18) then begin lz :=StrToFloat(edit18.Text);
-->diese Zeile kn:= (k0*(power(1+p)/(100), 1/p));---->ist unterlegt //k0:=kn*power((1+p/1*100), 1/lz); //ze:=k0*(1+p/1*100); //z:=power(ze, 1/lz); //kn:= (k0*(power(1+p)/(100), 1/n)); //kn := k0*q^n mit q = 1+p/100
label27.caption:=FloatToStrf(kn, ffFixed, 18,2); end; end; end;
end. |
das ist jetzt erstmal mein text (quelltext)
und ich bekomme noch immer folgenden Fehler
warte ich Zitiere
| Zitat: |
[Hinweis] Unit1.pas(116): Auf 'wert' zugewiesener Wert wird niemals benutzt
[Fehler] Unit1.pas(228): Nicht genügend wirkliche Parameter
[Fataler Fehler] zinsen.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden |
so das setht da.. aber was nun noch nicht merh stimmt, das kann ich beim bestenwillen nicht sagen! Weil diese Meldungen, bis auf die letzte kenne ich nicht!
danke
Christian S. - Mo 14.04.03 15:42
Also, beim Power ist die erste ")" zu viel (die, hinter dem p). Deswegen glaubt er, das (1+p) wäre der einzige Parameter, deswegen die Fehlermeldung.
Dann glaube ich nicht, dass diese Formel mathematisch korrekt ist. Da steht nur k0 und p drin und sonst nichts, das kann nicht stimmen. Und das mit dem "1/" hast Du mir auch noch nicht erklärt.
NoEon - Mo 14.04.03 15:58
Hi, damit wir von gleichen reden
| Zitat: |
| kn:= (k0*(power(1+p)/(100), 1/n)); |
das ist die richtige Formel??
kn:= Zinskapital nach n Jahren
k0:=Anfangskapital;
p:=Prozentsatz;
n:=Anzahl der Jahre;
das ist doch richtig oder?
und umstellen ist für mich sehr schwer.. weil ab da hab ich nur noch in Mathe gepennt, versteh das .. da sist ein Traume.. --->war wegen des Lehrers sogar beim Arzt, ich wollt nicht merh hin zu dem A** lo**.
Bitte hab verständniss dafür... ich bring mir das alles soweit ich damit in Kontakt komme selber bei oder lasse mir von Leuten wie Dir auf die Sprünge helfen!---->weil Mathe ist wichtig!
_____________________________________________________________
so nach mal ne änderung
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| var k0, p, n, kn:real;
begin if LCSAbfang(edit16) then begin k0:=StrToFloat(edit16.Text); if LCSAbfang(edit17) then begin p :=StrToFloat(edit17.Text); if LCSAbfang(edit18) then begin n :=StrToFloat(edit18.Text);
kn:= (k0*(power(1+p/(100), 1/n))); {k0:=kn*power((1+p/1*100), 1/lz); ze:=k0*(1+p/1*100); z:=power(ze, 1/lz); kn:= (k0*(power(1+p)/(100), 1/n)); kn := k0*q^n mit q = 1+p/100 }
label27.caption:=FloatToStrf(kn, ffFixed, 18,2); end; end; end; end; end. |
das ist jetzt soweit alles richtig, aber ....wenn die Länge der Laufzeit größer als eins ist, dann wird mein Endkapital auch kleiner!! :-( was ist das den nun schon wieder?
Christian S. - Mo 14.04.03 16:24
Die Formel ist so leider nicht richtig. Zur Erklärung:
Nehmen wir an, Du hast ein Startkapital k0 und bekommst 3% Zinsen pro Jahr. Wenn Du Dein Geld 1 Jahr angelegt hast, hast Du das Kapital k1. Das erhalten wir, indem wir das Startkapital mit (1+3%) multiplizieren, also mit 1,03. (Daher auch das 1+ p/100, denn 1+3% ist nichts anderes als 1+3/100)
Also: k1=k0*1,03 (Gleichung 1)
Für k2 gilt dann, dass wir k1 mit 1,03 multiplizieren. Also:
k2 = k1*1,03 (Gl. 2)
Nun ist aber nach Gl. 1 k1 = k0*1,03. Wenn wir das mal in Gl. einsetzen erhalten wir:
k2 = k0*1,03*1,03 (Gl. 3)
Wenn wir das so weiterführen kommen wir auf folgende allgemeine Gleichung für das Jahr n:
kn = k0*1,03*1,03* ... *1,03 wobei da n-mal 1,03 steht. Also:
kn = k0*1,03^n
Mit unseren Symbolen heißt das Ganze dann:
kn = k0*(1+p/100)^n
und in Delphi
kn:=k0*power(1+p/100,n);
Ich hoffe, ich konnte Dir damit weiterhelfen. Wenn Du generell mal Hilfe mit Mathe brauchst, kannst Du Dich gerne per PN bei mir melden.
MfG,
Peter
NoEon - Mo 14.04.03 16:38
Dafür danke ich Dir... ich werd mir das mal auf der Zunge ("Hirnwindungen") zergehn lassen!
Danke
echt Klasse jetzt läuft es auch!
:D :D :D :D :D :D :D :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!