Funktion mit Daten zeichnen
Verfasst: Freitag 29. Januar 2016, 22:37
Hallihallo!
Ich habe nicht sonderlich viel Ahnung vom Programmieren, aber ich gebe mein Bestes.
Ich möchte die Funktion CHI(x) plotten. Sie besteht aus mehreren termen, die teilweise die Summen (über i) von Messreihen N_i und t_i enthalten. Das x steht manchmal in der Summe mit drin, manchmal aber auch noch davor. Jedenfalls kann man es nicht mathematisch umformen, sodass es einfach aussieht. Dabei sind N_i und t_i jeweils Spalten mit Messwerten, die habe ich in zwei .dat Dateien geschrieben und in meinem Code als np.arrays (?) N und t importiert. dt t_1 und t_k sind einfach nur Zahlenwerte. Das soll also eine Funktion von x werden. Später muss ich noch das Minimum bestimmen, da weiß ich auch noch nicht, wie das geht, aber zunächst der Plot: Hier ist mein Code bis jetzt:
Ich bekomme die Fehlermeldung für Zeile 8 und 40 "only length-1 arrays can be converted into python scalars" Damit kann ich leider nix anfangen, denn weder Nnull, noch chi sind ja arrays (dachte ich jedenfalls) 
Ich hoffe ihr könnt mir helfen!
Liebe Grüße
Ich habe nicht sonderlich viel Ahnung vom Programmieren, aber ich gebe mein Bestes.
Ich möchte die Funktion CHI(x) plotten. Sie besteht aus mehreren termen, die teilweise die Summen (über i) von Messreihen N_i und t_i enthalten. Das x steht manchmal in der Summe mit drin, manchmal aber auch noch davor. Jedenfalls kann man es nicht mathematisch umformen, sodass es einfach aussieht. Dabei sind N_i und t_i jeweils Spalten mit Messwerten, die habe ich in zwei .dat Dateien geschrieben und in meinem Code als np.arrays (?) N und t importiert. dt t_1 und t_k sind einfach nur Zahlenwerte. Das soll also eine Funktion von x werden. Später muss ich noch das Minimum bestimmen, da weiß ich auch noch nicht, wie das geht, aber zunächst der Plot: Hier ist mein Code bis jetzt:
Code: Alles auswählen
##!/usr/bin/python
# -*- coding: utf-8 -*-
import numpy as np
import math as m
from matplotlib import pyplot as plt
def Nnullfkt(Nges,x,t1,tk,dt):
Nnull=Nges/(m.exp(-t1/x)-m.exp(-(tk-dt)/x))
return(Nnull)
def sum1(x,dt):
global s1
s1=0
for i in range(len(t)):
s1=s1 + m.exp(-(t[i]+0.5*dt)/x)
sum1=s1
return(sum1)
def sum2(x,dt):
global s2
s2=0
for i in range(len(t)):
s2=s2 + (1/N[i])*(m.exp(-(2*t[i]+dt)/x))
sum2=s2
return(sum2)
if __name__=="__main__":
N=np.loadtxt("Ni.dat")
t=np.loadtxt("ti.dat")
t1=t[0]
tk=t[len(t)-1]
dt=t[1]-t[0]
Nges=np.sum(N)
x=np.linspace(1,3,2000)
chi=np.empty_like(x)
chi=np.sum(N)-2*Nnullfkt(Nges,x,t1,tk,dt)*dt*(1/x)*sum1(x,dt)
+(((Nnullfkt(Nges,x,t1,tk,dt)*dt)/x)**2)*sum2(x,dt)
plt.plot(x,chi)
plt.grid(True)
plt.xlim(1.5,3.5)
plt.ylim(0,50000)
plt.show()

Ich hoffe ihr könnt mir helfen!
Liebe Grüße
