import matplotlib.pyplot as plt
x=[] # Hier konnen wir ein nummer geben Iteraionschritten
y=[] #f(c) Das ist Funktion werte und Losung
counter=0
while counter <=10: #Bei der While-Schleife in Python handelt es sich um eine Kontrollstruktur und counter ist fur listen zu finden.
counter +=1
temp_y = counter **2 #(Hier geben wir die funktionswerte)
x.append(counter) # Hier nehmen wir werte von x liste an
y.append(temp_y) # Hier nehmen wir werte von y liste an
plt.plot(x, y) # Plot erstellt Graph
plt.show() # Plot show zeigt das Graph an
def bisection(f): # Hier habe ich den Funkion bisektion definiert
flag = 1 #
while flag:
r = float(input('Bitte geben sie wert r in dem Intervall ein [r,s]:'))
s = float(input('Bitte geben sie wert s in dem Intervall ein [r,s]:'))
if f(r) * f(s) <= 0: # fr mit fs multiplizieren und das soll kleiner als null sein
flag = 0 # Hier prufen wir die Intervall
e = float(input('Bitte geben sie absoluten Fehler ein, Epsilon:')) # Epsilon ist ein absoluten fehler
step = 0
c = 0
if f(r) * f(s) == 0: # Hier erhalten wir die Losung
if not f(r):
c = r
else:
c = s
else:
c = (r + s) / 2
step += 1
print(f'step={step:3d} \t c ={c:0.7f}\t f(c)={f(c):0.7f} ')
while (abs(f(c)) > e): # Der Mittelpunkt C ist noch nicht kleiner als epsilon
step += 1
if f(c) * f(r) < 0: # Das bedeutet das zeigt jetzt die losung zwischen r und c
s = c # s ist gleich c
else: # im anderen fall
r = c # das bedeutet das zeigt die losung zwischen c und r
c = (r + s) / 2 # Hier haben wir den Mittelpunkt c
print(f'step={step:3d} \t c ={c:0.9f}\t f(c)={f(c):0.9f} ') # Hier haben wir das ausgabe von mittelpunkt c
return c, step
if __name__ == "__main__" :
f = eval(input('Bitte die lambda Funktion eingeben : z.b., lambda x: x+5 \n')) # Hier wir geben die lambda funktion um die ergebnisse zu aufrufen.
c, s = bisection(f) # Hier habe ich wieder den funktion bisection
print() # hier drucke ich einfach leere Zeile
print(f'Totalsteps={s}\tc ={c:0.9f}\tf(c)={f(c):0.9f}') # Ausgabe von ergebniss
from math import sinh, cosh
f = lambda a: a*cosh(50/a)-a-10 # putting x=50 in y(x)=a*cosh((x-x0)/a)-a+y0
a,_ = bisection(f) # using epsilon:=1e-8 and [r,s]=[125,127]
w=100
l=2*a*sinh(w/(2*a))
print("The length of rope:", f"{l:0.10f}")
Bisektion python
Die while-counter-Schleife ist eigentlich eine for-Schleife, bzw. ein einfache Listcomprehension:
Der Code gehört aber scheinbar zu einem anderen Programm und gehört hier weg.
Für Flags gibt es True und False, statt 1 oder 0. Flags braucht man hier aber eigentlich gar nicht, weil man auch einfach eine while-True-Schleife per break verlassen könnte.
Benutze keine Einbuchstabigen Variablennamen, also left_border statt `r`, `right_border` statt `s`, `epsilon` statt `e`.
Die letzten Handvoll Zeilen sind falsch eingerückt. Die Zeilen unter `if-__name__` sollte aber eh in eine Funktion wandern, die üblicherweise `main` genannt wird.
Importe gehören an den Anfang der Datei.
Code: Alles auswählen
x = range(1,12)
y = [i ** 2 for i in x]
Für Flags gibt es True und False, statt 1 oder 0. Flags braucht man hier aber eigentlich gar nicht, weil man auch einfach eine while-True-Schleife per break verlassen könnte.
Benutze keine Einbuchstabigen Variablennamen, also left_border statt `r`, `right_border` statt `s`, `epsilon` statt `e`.
Die letzten Handvoll Zeilen sind falsch eingerückt. Die Zeilen unter `if-__name__` sollte aber eh in eine Funktion wandern, die üblicherweise `main` genannt wird.
Importe gehören an den Anfang der Datei.