eigentlich wollte ich "nur mal eben" die Formel umstellen für einen Temperatursensor PT100.
nachdem ich 2 Bekannte mit "wesentlich" besseren Mathekenntnissen um Hilfe gebeten habe und beide meinten,
das es ihnen zu viel Arbeit ist und zudem es wohl bis zu 4 Lösungen gibt, bin ich "etwas" verwundert.
Okay, das liegt wohl daran, dass meine Mathekenntnisse unterstes Niveau sind.
Aber ich hätte nicht gedacht, dass es so kompliziert sein kann...
Ich möchte auf diesem Wege hier bitte niemanden mit komplizierten Aufgaben versorgen,
aber eventuell, hat das ja schon mal jemand gemacht oder hat einen Link wo die Formel schon mal umgestellt wurde.
gegeben:
Widerstand(R) = R0 *(1 + A*t + B*t*t + C*(t-100)*t*t*t); // diese Formel möchte ich umgestellt haben nach "t"
Es handelt sich wohl um eine "Quartische Gleichung" Polynom 4ten Grades
https://de.wikipedia.org/wiki/Quartische_Gleichung
Code: Alles auswählen
Mein momentaner Pascal Code sieht so aus:
Für die positiven Temperaturen "Function CalcT" läuft schon.
var R0 : Double = 1000; // Widerstand in Ohm bei 0 Grad Celsius Wert für PT1000
var A : Double = 3.9083E-3; // Koeffizient 1
var B : Double = -5.775E-7; // Koeffizient 2
var C : Double = -4.183E-12; // Koeffizient 3
//------------------------------------------------------------------------------
// Ermittelt die Temperatur bei dem übergebenen Widerstandswert R
// !!!! Formel momentan nur für positive Temperaturn gueltig !!!!
// Bei negativen Temperaturen, also Widerstandswerte unter R0,
// wird die Berechnung anscheinend wesentlich komplexer....
Function CalcT(R:Double):Double;
var x,y:Double;
begin
x := A / (B*2); // Zwischenvariable
y := (R-R0) / (R0*B); // Zwischenvariable
result := -x - Sqrt(Sqr(x) + y); // Temperatur berechnen
end;
//------------------------------------------------------------------------------
// berechnet den Widerstand bei der übergebenen Temperatur
Function CalcR(t:Double):Double;
Begin
if t >= 0 then // für positive Temperaturn
result:= R0 *(1 + A*t + B*t*t)
else // negative Temperaturn
result:= R0 *(1 + A*t + B*t*t + C*(t-100)*t*t*t); // diese Formel möchte ich umgestellt haben nach "t"
end;