Seite 1 von 1

Dekadischer Logarithmus

Verfasst: Mittwoch 2. Dezember 2020, 14:58
von kaktuspfluecker
hey alle zusammen,
ich bin relativ neu in Python und habe ein Problem mit dem dekadischen Logarithmus in kombintation mit dem package uncertainties. Und zwar habe ich die Gleichung
from numpy import *
from uncertainties import *
from matplotlib.pyplot import *
from numpy import *
from math import *

def Geradengleichung(m,y,c):
x=m/(log10(y)-c)
return x
geschrieben jedoch gibt er mit folgenden Fehler aus :

T_c=Geradengleichung(Steigung,p_c,Achsenabschnitt)
in Geradengleichung
x=m/(log10(y)-c)
python3.8/site-packages/uncertainties/core.py", line 2667, in raise_error
raise TypeError("can't convert an affine function (%s)"
TypeError: can't convert an affine function (<class 'uncertainties.core.Variable'>) to float; use x.nominal_value
[Finished in 0.5s with exit code 1]

kann mir jemand helfen ? Ich finde nichts dazu online...
Danke an alle

Re: Dekadischer Logarithmus

Verfasst: Mittwoch 2. Dezember 2020, 19:21
von narpfel
Moin,

da müsste man erstmal auseinanderpflücken, von wo `log10` kommt. Kannst du es auf einen Blick sehen? Ich nicht. Das ist genau der Grund, warum man keine Sternchenimporte benutzt.

Wenn du das repariert hast und dann noch verrätst, mit was für Typen du `Geradengleichung` aufrufst, kann man eher helfen.

Weiterhin: In Python werden Funktionen `klein_mit_unterstrichen` geschrieben; `PascalCase` ist Klassen vorbehalten (siehe PEP 8). Und der Name `geradengleichung` passt doch auch irgendwie nicht? Du berechnest da ja keine Geradengleichung?

Re: Dekadischer Logarithmus

Verfasst: Donnerstag 3. Dezember 2020, 17:04
von DeaD_EyE
Stern-Importe macht man nicht.

Code: Alles auswählen

from numpy import *
from uncertainties import *
from matplotlib.pyplot import *
from numpy import *
from math import *
Der letzte gewinnt immer. Namen werden einfach neuen Objekten zugewiesen und am Ende hat man auf einmal den sin von math anstatt numpy.
Wenn du math zuerst importierst dann überschreibt numpy den sin von math. Viele andere namen werden auch überschieben. Da blickt niemand durch.

Diesne TypeError mal am besten in der Doku des Pakets nachsehen. Die Lösung steht übrigens da schon.

Code: Alles auswählen

TypeError: can't convert an affine function (<class 'uncertainties.core.Variable'>) to float; use x.nominal_value

Code: Alles auswählen

use x.nominal_value
.