Du wirst nicht nur die Headerdatei brauchen ;)
Aus Spass hier mal ein Code den ich noch bei mir rumfliegen hatte der
direkt nach der Definition der Exponentialfunktion vorgeht, garantiert
unoptimiert und unexakt (aufzurufen mit power (x, y)):
@ Niklas Gürtler
Vielen Dank für den Code.
Steckt viel Arbeit da hinter, vermute deshalb auch, dass es soetwas noch
nicht vorgefertigt in einer Headerdatei gab.
Muss mir das mal in Ruhe anschauen.
Aber der Ansatz scheint folgender zu sein:
2^7 = 10^(2*log(7))
@Klaus Wachtler
Was möchtest du mir damit sagen?
Den Header math.h kannte ich bereits.
A. R. schrieb:> @ Niklas Gürtler>> Vielen Dank für den Code.> Steckt viel Arbeit da hinter, vermute deshalb auch, dass es soetwas noch> nicht vorgefertigt in einer Headerdatei gab.
Du beliebst zu scherzen
> Was möchtest du mir damit sagen?> Den Header math.h kannte ich bereits.
Und?
Warum hast du dann nicht hineingeschaut?
Was sagt dir die Funktion pow wie 'power'?
Zitat vom Klaus-Zitat
1
DESCRIPTION
2
The pow() function returns the value of x raised to the power of y.
mit anderen Worten:
x^y <==> pow( x, y )
(wobei ^ der Potenzoperator ist und nicht das C-spezifische XOR)
AUsserdem: was verwendest du denn für ein Schmalspur-C-Buch, wenn da
drinnen die Funktion pow() bei der Besprechung der Funktionen aus math.h
nicht vorkommt?
Schmeiss es weg und kauf dir ein Vernünftiges.
@ Karl heinz Buchegger
>Du beliebst zu scherzen
Könntest du das bitte etwas genauer erläutern? Das war ernst gemeint.
Ironie oder einen Scherz hätte ich markiert.
>AUsserdem: was verwendest du denn für ein Schmalspur-C-Buch, wenn da>drinnen die Funktion pow() bei der Besprechung der Funktionen aus math.h>nicht vorkommt?>Schmeiss es weg und kauf dir ein Vernünftiges.
Diesen Kommentar würde ich gerne an den Absender zurückgeben!
>double pow(double x, double y) xy.>Ein Argumentfehler liegt vor bei x=0 >und y<0, oder bei x<0 und y ist nicht >ganzzahlig.
Mit anderen Worten:
Der Exponent muss eine Ganzzahl sein.
Der Titel des Threads hätte schon darauf hindeuten müssen, dass mir die
Funktion "double pow(double x, double y)" nicht weiterhilft!
>>Diesen Kommentar würde ich gerne an den Absender zurückgeben!>double pow(double x, double y) xy.>Ein Argumentfehler liegt vor bei x=0 >und y<0, oder bei x<0 und y ist nicht>ganzzahlig.
Kommentare an K. H. Buchegger zurückzugeben beinhaltet das Risiko sich
ein wenig zu blamieren und über die Bedeutung des Wortes "und" belehrt
zu werden. Nochmal lesen, tief durchatmen und nochmal lesen. Dann erst
denken.
>Kommentare an K. H. Buchegger zurückzugeben beinhaltet das Risiko sich>ein wenig zu blamieren
Das Risiko muss man manchmal eingehen.
>Nochmal lesen, tief durchatmen und nochmal lesen.
Das hilft manchmal!
Hatte im Kopf, dass man mit pow nur Ganzzahlen als Exponent verwenden
darf.
Dann hat sich das Problem erledigt. Danke für den Hinweis.
Hiermit möchte ich mit bei Karl heinz Buchegger entschulden und mich für
die Hilfe bedanken!
1
int_tmain(intargc,_TCHAR*argv[])
2
{
3
doublex=5;
4
doubley=7.2;
5
doubleErgebniss=pow(x,y);
6
printf("%f",Ergebniss);
7
system("pause");
8
return0;
9
}
Das Programm klappt wunderbar.
>Du brauchst also "die" komplexe Wurzel? Dann sag das doch gleich...
Nein
Mit (-5)^(7,2) wäre ich etwas überfordert.
Karl heinz Buchegger schrieb:> A. R. schrieb:>> @ Niklas Gürtler>>>> Vielen Dank für den Code.>> Steckt viel Arbeit da hinter, vermute deshalb auch, dass es soetwas noch>> nicht vorgefertigt in einer Headerdatei gab.>> Du beliebst zu scherzen
Das setzt einfach nur die mathematische Definition von dem, was eine
Potenz ist, um. und ist deswegen total simpel und wahrscheinlich
fürchterlich ungenau und langsam. Wenn man die Formeln vorgegeben hat
(was ich hatte, als ich das geschrieben hab) geht das ganz fix zu
programmiern...
Die Idee dahinter:
Definition der Exponentialfunktion:
Definition der Logarithmusfunktion als Umkehrfunktion der
Exponentialfunktion:
Definition der Potenz über die Exponentialfunktion:
Die Reihendarstellung die ich da für den Logarithmus verwendet habe weiß
ich grad leider nicht auswendig...
Vorsicht, diese Definition der Exponentialfunktion ist zwar ganz nett,
aber für den praktischen Einsatz nicht ohne weiteres empfehlenswert.
Versuch zum Beispiel mal, damit
auszurechnen. Die dabei auftretenden Summanden sind betragsmässig irre
groß, aber ihre Summe ist ≈0. Die bei den Additionen auftretenden
Rundungsfehler der alternierewnden Summanden machen das Ergebnis zu
einem Märchenwert.
> Die Reihendarstellung die ich da für den Logarithmus verwendet habe weiß> ich grad leider nicht auswendig...
Es ist i.w. die Reihenentwicklung des Areacotangenshyperbolicus :-)
Ohne Skalierung liegen die Werte m in der Reihenentwicklung u.U. am
Rande des Konvergenzkreises → Die Konvergenz ist Theorie, in der Praxis
gibt's Märchenwerte, weil die Rundungsfehler bei weitem dominieren.
Niklas Gürtler schrieb:> sachich ja, hab nie behauptet dass das genau ist :)
Naja, wenn man was ausrechnet (bzw. ausrechnen lässt) will man ja auch
das gewünschte Ergebnis bekommen und nicht irgendwas mehr oder weniger
zufälliges.
Ein "klassisches" Beispiel ist die Leibnitz-Reihe
Die Rundungsfehler und die langsame Konvergenz machen die Reihe für
einen praktischen Einsatz unbrauchbar — auch wenn die Formel selbst ganz
einfach und hübsch ist.
Was die Exponentialfunktion angeht, so hilft