rechnen mit potenz(Kommazahl)

Gast #1890692
Lesenswert?

Hallo,nachdem mir hier schon sehr gut bei einer anderen Rechnung 
geholfen wurde,habe ich ein neues Problem.
Die Formel lautet:
1
F= 13,233 * rf * ((10hoch (7,5 * T)/(237 + T)))/(237,16 + T)


Das problem ist folgendes.Bei T = 20 kommt 10 hoch 0,584 raus.
Wie rechne ich den Wert von 10 hoch 0,584 in assembler auf einem mega32
aus?Der Rest der Rechnung hab ich hinbekommen.
Wäre nett,wenn mir jemand das erklären könnte.

gruss
andy
#1890699
Lesenswert?

Mit dem verallgemeinerten Hornerschema zur Berechnung von Wurzeln kann 
man auch alle anderen Wurzeln bzw. Potenzen ausrechnen. Daraus ergibt 
siche eine Iteration.

Oder einen Logarithmus zur Basis 2 von 10 berechnen, diesen mit 0,584 
multiplizieren und 2 mit dem Ergebnis potenzieren.

Mit der Basis 2 sind log und Potenz erwas einfacher als mit anderen 
Basen.
Gast #1890718
Lesenswert?

Danke für die antwort.Aber könntest du das vielleicht etwas einfacher 
erklären oder ein Beispiel schreiben,wie das zum beispiel mit
10 hoch 0,584 geht.Ich muss das Prinzip verstehen,da sich T ständig 
ändert.

gruss
andy
Gast #1890743
Lesenswert?

Wolfgang meint, dass es einfacher ist mit der Basis 2 zu rechnen.

Logarithmus von 10 zur Basis 2: 3,321928095.
Multiplikation von 3,321928095 mit 0,584: 1,940006007.
Endergebnis 2 hoch 1,940006007: 3,837072454.

Warum dies leicher ist? Keine Ahnung.

Wie viele verschiedenen Werte nimmt denn dein T an? Wenn es wenige Werte 
sind: Tabelle. Wenn es viele Werte sind: Iteration nach Newton.
Gast #1891339
Lesenswert?

Hallo,danke für die antworten.T steht für gemessene Temperatur,also sehr 
viele unterschiedliche Werte.
Jetzt ist es schon etwas klarer.Aber wie rechne ich 2 hoch 1,94?
Wenn ich 1,94 mit 256 multipliziere bekomme im 496 raus.
2 hoch 496 ist aber ziemlich riesig.Oder gehe ich die Sache jetzt falsch 
an?

gruss

andy
Gast #1891358
Lesenswert?

Eine Möglichkeit wäre 2 hoch 1 x 2 hoch 1/2 x 2 hoch 1/4, ..., usw. zu 
rechnen und jedesmal zu prüfen, ob die Potenz berechnet werden muss und 
sie dann abziehen. Je nach gewünschter Genauigkeit

Die ersten 5 Potenzen von 1,94 sind 1, 1/2, 1/4, 1/8, 1/16.
#1891374
Lesenswert?

Logarithmen und Potenzen in Assembler zu schreiben ist etwas länglich. 
Wenns läuft aber recht schnell. Dafür gibts aber auch 
Reihenentwicklungen nach Fourier.


Für 2^1,94 passt jetzt die Fourier-Reihe für 2^x. Die ist dann mit 
elementaren Rechenoperationen (+,-,*,/), die dir ja zur Verfügung 
stehen, auszurechnen.


W.
#1891541
Lesenswert?

Ich habe mal für deinen ganzen Term eine Reihenentwicklung erstellt.

F=rf·(3.006156242·t^5 + 0.8707963411·t^4 + 0.2017955946·t^3 + 
0.03507260965·t^2 + 0.004063808881·t + 0.0002354336441)

Dieser Term beinhaltet deine ganze Rechnung und läßt sich direkt 
elementar programmieren.


Der Term läßt sich noch einfacher schreiben:

F=rf·(((((3.006156242·t + 0.8707963411)·t + 0.2017955946)·t + 
0.03507260965)·t + 0.004063808881)·t + 0.0002354336441)

Somit fallen alle Potenzen weg und die Berechnungszeit ist wesentlich 
kürzer, da nur 6 Multiplikationen auftreten.

W.
#1891596
Lesenswert?

Die letzte Formel

F=13.233·rf·(10^(7.5·t/(237 + t))/(273.16 + t))

ist wohl richtig.

Ich habe mal 2 Beispiele durchgerechnet.

Dafür erhält man die Taylorreihe

F=rf·(1.004745136·10^(-10)·t^5 + 1.763389900·10^(-8)·t^4 + 
1.729932431·10^(-6)·t^3 + 0.0001014403429·t^2 + 0.003352613162·t + 
0.04844413563)


W.
Gast #1891701
Lesenswert?

Hallo,da hab ich einen Fehler gemacht,es muss natürlich 273,16 heissen.
Danke für die antworten,ich werde es jetzt mal mit

F=rf·(((((3.006156242·t + 0.8707963411)·t + 0.2017955946)·t +
0.03507260965)·t + 0.004063808881)·t + 0.0002354336441)

versuchen.

gruss

andy

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren