Witam wszystkich. Otóż mam problem z aplikacją którą muszę napisać w języku Python z użyciem PyQt. Program ma wyszukiwać miejsca zerowe wielomianu podanego stopnia na odpowiednim podanym zakresie i wypisywać je w wierszu poleceń IDLEX oraz rysować ten wielomian jednakże zinterpolowany. Ale reszta z tym aktualnie jestem na etapie początkowym i stworzyłem właśnie zdarzenie dla przycisku oraz metodę bisekcji (musi być użyta ta metoda oraz siecznych ale nie w tym rzecz). Otóż po kliknięciu przycisku Metoda bisekcji program się wysypuje i nic z tego nie ma. Fajnie gdyby ktoś wytłumaczył co jest nie tak i pomógł w możliwy sposób. Po prostu pytam bo nie wiem co jest nie tak dla jasności :) Mam tak od początku i nie wiem co z tym zrobić oto kod programu:
```import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QWidget, QPushButton,
QLabel, QGridLayout,
QLineEdit, QApplication)
from matplotlib.pyplot import plot, show
from scipy import interpolate
from numpy import arange, exp
class Program(QWidget):
def __init__(self):
super().__init__()
self.lbl1 = QLabel('Podaj stopień wielomianu')
self.lbl2 = QLabel('Podaj zakres szukania')
self.btn1 = QPushButton('Metoda bisekcji')
self.btn2 = QPushButton('Metoda siecznych')
self.text1 = QLineEdit()
self.text2 = QLineEdit()
siatka = QGridLayout()
siatka.setSpacing(10)
siatka.addWidget(self.lbl1, 1, 0)
siatka.addWidget(self.text1, 1, 1)
siatka.addWidget(self.lbl2, 2, 0)
siatka.addWidget(self.text2, 2, 1)
siatka.addWidget(self.btn1, 3, 0)
siatka.addWidget(self.btn2, 3, 1)
self.btn1.clicked.connect(self.bisectionClicked)
self.setLayout(siatka)
self.setGeometry(300, 300, 450, 150)
self.setWindowTitle('Wyszukiwanie miejsc zerowych')
self.show()
def bisectionClicked(self):
nText=self.text1.text()
n=int(nText)
zakresText=self.text2.text()
zakresSplit=zakresText.split(',');
xp=float(zakresSplit[0])
xk=float(zakresSplit[1])
self.bisekcja(xp,xk,0.01,n);
def wielomian(n,x):
return 5*x**n-7*x**2+3*x+random()
def bisekcja(self,xp,xk,dokladnosc,n):
while np.absolute(xp-xk)>dokladnosc:
punktSrodkowy=(xp+xk)*0.5
if wielomian(n,punktSrodkowy)*wielomian(n,xp)<0:
xk=punktSrodkowy
punktSrodkowy=(xp+xk)*0.5
if wielomian(npunktSrodkowy)*wielomian(n,xk)<0:
xp=punktSrodkowy
miejsceZero=xk-(xk-xp)*wielomian(n,xk)/(wielomian(n,xk)-wielomian(n,xp))
if miejsceZero is None:
print('Brak znalezionego miejsca zerowego')
else: print(miejsceZero)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Program()
sys.exit(app.exec_())