Skip to content
Snippets Groups Projects
Commit 2b7eca30 authored by Steinmann's avatar Steinmann
Browse files

Ziele für die Woche aufgeschrieben

parent 17ef29b6
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
Pumpenkennlinien importieren und auf Pumpengleichung Fitten
aus Webplotdigitizer .csv datei eines Plots extrahieren
mit pandas read_csv importieren
-> rechenspaß
->Profit!!!
Q^2 -> Q_sq quit
Multiple Linear Regression with Intercept
Q^3, Q^2
pandas -> read_csv
%% Cell type:code id: tags:
``` python
%pip install pandas
%pip install numpy
%pip install matplotlib
%pip install scikit-learn
```
%% Cell type:markdown id: tags:
Zusammenhänge der Pumpe:
$\Delta p=\alpha_1\cdot Q^2+\alpha_2\cdot Q\cdot n_{est}+\alpha_3\cdot n_{est}^2$
$l_{est}=\frac{\Delta p}{Q^2}$
Leistungsgleichung:
$P_{est}=\beta_1\cdot Q^3+\beta_2 Q^2\cdot n_{est}+\beta_3\cdot Qn_{est}^2+\beta_4n^3+\beta_5$
%% Cell type:code id: tags:
``` python
#Implementierung des .csv zu DataFrame converters
import pandas as pd
def csv_einlesen(y_Achse,drehzahl):
with open('{0}-Q_kennlinie_n_{1}.csv'.format(y_Achse,drehzahl)) as kennlinie:
dataframe = pd.read_csv(kennlinie, delimiter=';')
dataframe.loc[-1] = dataframe.columns
dataframe.index = dataframe.index +1
dataframe= dataframe.sort_index()
sorted_set = dataframe.set_axis(['Q','H'],axis='columns')
#im Datensatz alle ',' durch '.' ersetzen und die String werte als Float Werte casten
for x in sorted_set.index:
for y in sorted_set.columns:
sorted_set.loc[x,[y]] = sorted_set.loc[x,[y]].str.replace(',','.')
sorted_set.loc[x,[y]] = sorted_set.loc[x,[y]].astype(float)
#berechnen der Spalte Q^2, Q^3 n_relativ, n^2, n^3, Q*n, Q^2*n,Q*n^2
sorted_set['Q^2'] = sorted_set['Q'] **2
sorted_set['Q^3'] = sorted_set['Q'] **3
sorted_set['n_rel'] = drehzahl/3600
sorted_set['n^2'] = (sorted_set['n_rel']*3600)**2
sorted_set['n^3'] = (sorted_set['n_rel']*3600)**3
sorted_set['Qn'] = (sorted_set['n_rel']*3600)*sorted_set['Q']
sorted_set['Q^2n'] = sorted_set['Q^2']*3600*sorted_set['n_rel']
sorted_set['Qn^2'] = sorted_set['Q']*sorted_set['n^2']
return sorted_set
```
%% Cell type:code id: tags:
``` python
def combine_csvs():
for i in os.listdir(:*.csv):
pd.read_csv(i)
```
%% Cell type:code id: tags:
``` python
print(csv_einlesen('h',750))
```
%% Output
Q h Q^2 Q^3 n_rel n^2 n^3 Qn \
0 0.0 0.363392 0.0 0.0 0.208333 562500.0 421875000.0 0.0
1 0.5 0.398001 0.25 0.125 0.208333 562500.0 421875000.0 375.0
2 1.0 0.397639 1.0 1.0 0.208333 562500.0 421875000.0 750.0
3 1.5 0.328851 2.25 3.375 0.208333 562500.0 421875000.0 1125.0
4 2.0 0.27687 4.0 8.0 0.208333 562500.0 421875000.0 1500.0
5 2.5 0.207313 6.25 15.625 0.208333 562500.0 421875000.0 1875.0
Q^2n Qn^2
0 0.0 0.0
1 187.5 281250.0
2 750.0 562500.0
3 1687.5 843750.0
4 3000.0 1125000.0
5 4687.5 1406250.0
%% Cell type:markdown id: tags:
Fitting aus den Kurven mit sklearn
%% Cell type:code id: tags:
``` python
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
results = pd.DataFrame()
drehz = [750,1150,1500,1850,2200,2550,2900,3250,3600]
results['n'] = drehz
fig, (ax1,ax2) = plt.subplots(2,1,sharex=True,gridspec_kw={'hspace':0})
ax1.set_xticks(np.linspace(0,10,11))
ax1.set_xticks(np.linspace(0,10,21),minor=True)
for x,x2 in zip(ax1.get_xgridlines() , ax2.get_xgridlines()):
x.set_visible(True)
x2.set_visible(True)
for y,y2 in zip(ax1.get_ygridlines(),ax2.get_ygridlines()):
y.set_visible(True)
y2.set_visible(True)
ax1.set_title('Förderhöhe Kennlinie',loc='center')
ax1.set_ylabel('$H$ in m')
ax2.set_title('Leistungskennlinien',loc='center',y=-0.25)
ax2.set_ylabel('$P$ in kW')
for n in results.index:
df = csv_einlesen('h',drehz[n])
X = df.loc[:,['Q^2','Qn','n^2']].to_numpy(float)
y = df['h'].to_numpy(float)
results['Q-h_fit'] = LinearRegression(fit_intercept=False).fit(X,y)
#plotten der Punkte und des Graphen
ax1.plot(df['Q'].to_numpy(),results['Q-h_fit'].get(n).predict(X))
ax1.errorbar(df['Q'].to_numpy(),results['Q-h_fit'].get(n).predict(X),fmt='b+')
#regression aus den Werten für Q und P
df2 = csv_einlesen('P',drehz[n])
X2 = df2.loc[:,['Q^3','Q^2n','Qn^2','n^3']].to_numpy(float)
y2= df2['h'].to_numpy(float)
results['Q-P_fit'] = LinearRegression().fit(X2,y2)
#plotten der Punkte und der gefundnen Funktion mit
ax2.errorbar(df2['Q'].to_numpy(),results['Q-P_fit'].get(n).predict(X2),fmt='b+')
ax2.plot(df2['Q'].to_numpy(),results['Q-P_fit'].get(n).predict(X2))
print(results['Q-h_fit'].get(n).coef_)
print(f'R^2: {results['Q-h_fit'].get(n).score(X,y)}')
#print(results['Q-P_fit'].get(n).coef_)
```
%% Output
[-4.32633175e-02 5.19623567e-05 6.74554837e-07]
R^2: 0.9993376472269206
[-4.42742552e-02 6.27325491e-05 6.53871635e-07]
R^2: 0.9996437866771651
[-4.55181410e-02 7.07998272e-05 6.44464225e-07]
R^2: 0.9996824413373676
[-4.33713318e-02 6.34156384e-05 6.49436305e-07]
R^2: 0.999760791662233
[-4.48621316e-02 6.80680926e-05 6.46997640e-07]
R^2: 0.9995310406285615
[-4.56090785e-02 7.25278520e-05 6.45662549e-07]
R^2: 0.999203487869221
[-5.30102486e-02 8.44703682e-05 6.42551789e-07]
R^2: 0.989680503933434
[-8.31083199e-02 9.65000207e-05 6.45338184e-07]
R^2: 0.9616275516077175
[7.00655817e-09 5.04472189e-05 6.48443112e-07]
R^2: 1.0
%% Cell type:markdown id: tags:
df =
Q | n | P | H
-------- | -------- | -------- | --
0 | 0.35 | 10 | 2
0.5 | 0.35 | 15 | 1.8
1 | 0.35 |20| 1.5
0 | 0.5 | 15 | 2
0.5 | 0.5 | 20 | 1.8
1 | 0.5 | 25 | 1.5
```python
X = numpy.array([df.loc[:,'Q']**3, df.loc[:,'Q']**2 * df.loc[:,'n']...)
```
anmelden Thesis
Ziel einen Fit mit n als zweite Variable
multiple linear REgression
Ziel2 den FST custom stil zum plotten des Kennfelds einbinden
Ziel3 eine Präsi erstellen anhand des Leitfadens im studierende Starterpaket
schritt 4 Profit
%% Cell type:code id: tags:
``` python
results['Q-h_fit']
```
%% Output
0 LinearRegression(fit_intercept=False)
1 LinearRegression(fit_intercept=False)
2 LinearRegression(fit_intercept=False)
3 LinearRegression(fit_intercept=False)
4 LinearRegression(fit_intercept=False)
5 LinearRegression(fit_intercept=False)
6 LinearRegression(fit_intercept=False)
7 LinearRegression(fit_intercept=False)
8 LinearRegression(fit_intercept=False)
Name: Q-h_fit, dtype: object
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment