Untitled

 avatar
unknown
python
2 years ago
1.2 kB
2
Indexable
import numpy as np
import matplotlib.pyplot as plt

# Inicjalizacja pustych list na dane eksperymentalne
x_values = []
y_values = []

# Pobieranie danych z klawiatury w pętli nieskończonej
while True:
    x = float(input('Podaj wartość x lub 999, aby zakończyć: '))
    y = float(input('Podaj wartość y lub 999, aby zakończyć: '))
    
    if x == 999 and y == 999:
        break
        
    x_values.append(x)
    y_values.append(y)
        
# Konwersja danych na tablicę NumPy
x_array = np.array(x_values)
y_array = np.array(y_values)

# Stopień pierwszy, funkcja liniowa dla uzyskania prostej
degree = 1

# Aproksymacja średniokwadratowa
wsp = np.polyfit(x_array, y_array, degree) #Współczynniki

# Funkcja aproksymacyjna
f = np.poly1d(wsp)
a1,a0 = wsp

# Pozyskanie punktów
x_range = np.linspace(min(x_array), max(x_array), 100)
y_aprox = f(x_range)

# Wykresy
plt.scatter(x_array, y_array, color='red', label='Dane eksperymentalne') # Wykres punktowy
plt.plot(x_range, y_aprox, color='blue', label='Aproksymacja') # Wykres liniowy
plt.xlabel('x')
plt.ylabel('y')
plt.title(f'Równanie prostej: y = {a1:+5.4f}x {a0:+5.4f}')
plt.legend()
plt.grid(True)

plt.savefig('Wynik_aproksymacji.png')# Zapis do pliku
plt.show()


Editor is loading...