Forum: Mikrocontroller und Digitale Elektronik Potenzfunktion


von Peter (Gast)


Lesenswert?

Hallo,

ich habe eine Potenzfunktion (y=0,2166x^1,0482) und die würde ich gerne 
in C ausrechnen lassen. Weis einer wie ich das machen kann? Speziell 
wegen den Kommazahlen. Über eine schnelle antwort würde ich mich freuen.

mfg Peter

von U.R. Schmitt (Gast)


Lesenswert?


von Peter (Gast)


Lesenswert?

und wenn ich kein C Buch habe?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter schrieb:
> und wenn ich kein C Buch habe?
Geh Zeitungen austragen, dann kannst du dir eins kaufen... ;-)

BTW: ich habe das mit Erinnerungsvermögen und Schulwissen gemacht 
und bin auf die
y = 0,2166 * exp(1,0482*log(x));
gekommen...

von U.R. Schmitt (Gast)


Lesenswert?

Dann bleibst du ewig Anfänger.
Bei so einem <zensiert> macht das Helfen richtig Spass :-)

von Harald Wilhelms (Gast)


Lesenswert?

Peter schrieb:
> Hallo,
>
> ich habe eine Potenzfunktion (y=0,2166x^1,0482) und die würde ich gerne
> in C ausrechnen lassen. Weis einer wie ich das machen kann? Speziell
> wegen den Kommazahlen. Über eine schnelle antwort würde ich mich freuen.

Vielleicht wäre es einfacher, eine passende Tabelle abzuspeichern...
Gruss
Harald

von Peter (Gast)


Lesenswert?

>Vielleicht wäre es einfacher, eine passende Tabelle abzuspeichern...

leider sind es aber über 300 mögliche Wert Tabelle wird also schwierig.

von Alexander S. (esko) Benutzerseite


Lesenswert?

Peter schrieb:
>>Vielleicht wäre es einfacher, eine passende Tabelle abzuspeichern...
> leider sind es aber über 300 mögliche Wert Tabelle wird also schwierig.

Wenn es tatsächlich nur ca. 300 Werte sind würde ich schon eine Tabelle 
nehmen. Kommt wie immer auf den Anwendungsfall an.

von Rainer (Gast)


Lesenswert?

Peter schrieb:
>>Vielleicht wäre es einfacher, eine passende Tabelle abzuspeichern...
> leider sind es aber über 300 mögliche Wert Tabelle wird also schwierig.

Wie wäre es mit linearer Interpolation zwischen den Tabellenwerten?

Zum Nachschlagen bei Fragen zu C hilft oft
http://de.wikibooks.org/wiki/C-Programmierung

Gruß

von Peter (Gast)


Lesenswert?

>y = 0,2166 * exp(1,0482*log(x));

also diese Funktion würde funktionieren, wenn keine kommazahl vorhanden 
wäre. Was kann ich machen damit ich auch mit komma rechnen kann?

von Achim M. (minifloat)


Lesenswert?

Peter schrieb:
>>y = 0,2166 * exp(1,0482*log(x));
>
> also diese Funktion würde funktionieren, wenn keine kommazahl vorhanden
> wäre. Was kann ich machen damit ich auch mit komma rechnen kann?

float oder double oder so?
math.h eingebunden?
header schon durchgesehen ob es da sowas wie z.B. "pow(a,b);" gibt?
mfg mf

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter schrieb:
> Was kann ich machen damit ich auch mit komma rechnen kann?
1
  float x,y;
2
  
3
  x = 3.4567;
4
  y = 0.2166 * exp(1.0482*log(x));
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.7.html
Alle Funktionen in der math.h sind mit double definiert und werden daher 
als Fließkommazahl ausgeführt. Und pow() sollte es durchaus auch 
geben...

> Was kann ich machen damit ich auch mit komma rechnen kann?
> 0,2166
Nimm statt des Kommas einen Punkt...  :-/
So etwa: 0.2166

BTW: du könntest dir echt mal ein C-Buch kaufen.
Das sind urschleimigste Grundlagen...

von U.R. Schmitt (Gast)


Lesenswert?

Lothar Miller schrieb:
> BTW: du könntest dir echt mal ein C-Buch kaufen.
> Das sind urschleimigste Grundlagen...

Tja habe ich auch schon angemerkt: Also Antwort kam:

Peter schrieb:
> und wenn ich kein C Buch habe?

...ohne Worte

von Peter (Gast)


Lesenswert?

also nochmal danke an alle die mit helfen wollten.
@ Lothar:
Danke es lag an dem komma statt Punkt. Das vergess ich immer wieder.
Und keine Angst ich werde mir auch bald ein C Buch kaufen. :)

U.R. Schmitt schrieb:
> Dann bleibst du ewig Anfänger.
> Bei so einem <zensiert> macht das Helfen richtig Spass :-)
du kannst mich mal... :(

mfg Peter

von Peter (Gast)


Lesenswert?

hallo,

ich hätte noch eine frage:

ich berechne jetzt die Funktion y = 0.2166*exp(1.0482*log(x));
und will das Ergebnis auf einen LCD Display darstellen.
Das Problem ist wenn ich das y, was ein float ist mir der Funktion 
sprintf darstellen will kommt eine Fehlermeldung im AVR Studio.
Weis einer was ich da machen kann?

mfg Peter

von Peter (Gast)


Lesenswert?

keiner eine idee=

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.