Προς το περιεχόμενο

makis6060

Members
  • ΜΗΝΥΜΑΤΑ FORUM

    1
  • ΜΕΛΟΣ

  • ΤΕΛ. ΕΠΙΣΚΕΨΗ

Πρόσφατες Επισκέψεις

Η εμφάνιση επισκεπτών είναι απενεργοποιημένη ή δεν έχετε πρόσβαση σε αυτή.

makis6060's Achievements

Enthusiast

Enthusiast (3/15)

  • Πρώτο Μήνυμα
  • Εκκίνηση Συζήτησης
  • 1 Εβδομάδα Μετά
  • Ένα Μήνα Μετά
  • 1 χρόνο Insomniac

Πρόσφατες Διακρίσεις

0

Φήμη

  1. Καλησπέρα. Έχω φτιάξει έναν κώδικα ο οποίος διαβάζει ένα αρχείο κειμένου με δεδομένα, αποθηκεύει σε λίστες αυτά που χρειάζονται και φτιάχνει ένα διάγραμμα με τις κατανομές των σημείων. Αυτό που πρέπει να κάνω είναι να βρω μια συνάρτηση που να είναι η βέλτιστη για fitting. Όπως είναι το πρόγραμμα τώρα, μοντελοποιεί την μέση κατάσταση. Εγώ όμως χρειάζεται να βρω την περιβάλλουσα συνάρτηση, δηλαδή μια συνάρτηση που θα αφήνει τα περισσότερα σημεία από κάτω. Θα εκτιμούσα οποιαδήποτε βοήθεια. Σας ευχαριστώ για το χρόνο σας. "Δημιουργία διαγραμμάτων" import math import statistics from matplotlib import pyplot as plt import scipy import numpy from scipy import optimize from math import e #Συνάρτηση για το 2ο βήμα def data_to_numeric(dlist): list1 = [] list2 = [] list3 = [] list4 = [] list5 = [] list6 = [] list7 = [] for i in dlist: pair = i.split(" ") list1.append(float(pair[3])) list2.append(float(pair[4])) list3.append(float(pair[5])) list4.append(float(pair[6])) list5.append(float(pair[7])) list6.append(float(pair[8])) list7.append(float(pair[9])) return list1, list2, list3, list4, list5, list6, list7 #Συνάρτηση για το fitting def test_func(x, a, b): return a*(x**b) with open ("datafile2.txt", "r") as f: datalist = f.read().splitlines() Zen_Gwn_List, CIE_Dose_List, DNA_Dose_List, Vitamin_D_Dose_List, Plant_Caldwell_Dose_List, Plant_Flint_Dose_List, Ozon_List = data_to_numeric(datalist) SZA = [] Ozon = [] CIE = [] DNA = [] Vitamin_D = [] Plant_Caldwell = [] Plant_Flint = [] for i in range(len(Ozon_List)): if Ozon_List[i]!=999: Ozon.append(Ozon_List[i]) SZA.append(Zen_Gwn_List[i]) CIE.append(CIE_Dose_List[i]) DNA.append(DNA_Dose_List[i]) Vitamin_D.append(Vitamin_D_Dose_List[i]) Plant_Caldwell.append(Plant_Caldwell_Dose_List[i]) Plant_Flint.append(Plant_Flint_Dose_List[i]) SZA1 = [] Ozon1 = [] CIE1 = [] DNA1 = [] Vitamin_D1 = [] Plant_Caldwell1 = [] Plant_Flint1 = [] for i in range(len(SZA)): if SZA[i]<85: Ozon1.append(Ozon[i]) SZA1.append(SZA[i]) CIE1.append(CIE[i]) DNA1.append(DNA[i]) Vitamin_D1.append(Vitamin_D[i]) Plant_Caldwell1.append(Plant_Caldwell[i]) Plant_Flint1.append(Plant_Flint[i]) SEC_SZA = [] for i in range(len(SZA1)): SEC_SZA.append(1/math.cos(math.radians(SZA1[i]))) SCDlist = [] for num1, num2 in zip(SEC_SZA, Ozon1): SCDlist.append(num1*num2) popt1, _ = scipy.optimize.curve_fit(test_func, SCDlist, CIE1) a, b = popt1 print(popt1) x1_line = numpy.arange(min(SCDlist), max(SCDlist), 1) y1_line = test_func(x1_line, a, b) popt2, _ = scipy.optimize.curve_fit(test_func, SCDlist, DNA1) a, b = popt2 print(popt2) x2_line = numpy.arange(min(SCDlist), max(SCDlist), 1) y2_line = test_func(x2_line, a, b) popt3, _ = scipy.optimize.curve_fit(test_func, SCDlist, Vitamin_D1) a, b = popt3 print(popt3) x3_line = numpy.arange(min(SCDlist), max(SCDlist), 1) y3_line = test_func(x3_line, a, b) popt4, _ = scipy.optimize.curve_fit(test_func, SCDlist, Plant_Caldwell1) a, b = popt4 print(popt4) x4_line = numpy.arange(min(SCDlist), max(SCDlist), 1) y4_line = test_func(x4_line, a, b) popt5, _ = scipy.optimize.curve_fit(test_func, SCDlist, Plant_Flint1) a, b = popt5 print(popt5) x5_line = numpy.arange(min(SCDlist), max(SCDlist), 1) y5_line = test_func(x5_line, a, b) plt.scatter(SCDlist, CIE1, s=2, color="red", label="CIE") plt.scatter(SCDlist, DNA1, s=2, color="black", label="DNA") plt.scatter(SCDlist, Vitamin_D1, s=2, color="blue", label="Vitamin_D") plt.scatter(SCDlist, Plant_Caldwell1, s=2, color="green", label="Plant_Caldwell") plt.scatter(SCDlist, Plant_Flint1, s=2, color="purple", label="Plant_Flint") plt.title("Εξάρτηση των δόσεων από τη ζενίθεια γωνία και το ολικό όζον") plt.xlabel("TOC*sec(SZA)") plt.ylabel("Δόσεις ακτινοβολίας") fit1 = "8144/x^2.24".format(a, b) fit2 = "203.74/x^3.05".format(a, b) fit3 = "2074.49/x^2.61".format(a, b) fit4 = "1058.63/x^2.83".format(a, b) fit5 = "430/x^1.57".format(a, b) plt.plot(x1_line, y1_line, "--", color="red", label=fit1) plt.plot(x2_line, y2_line, "--", color="black", label=fit2) plt.plot(x3_line, y3_line, "--", color="brown", label=fit3) plt.plot(x4_line, y4_line, "--", color="magenta", label=fit4) plt.plot(x5_line, y5_line, "--", color="yellow", label=fit5) legend1 = plt.legend(loc="upper right") plt.show()
  • Δημιουργία νέου...