Я довольно новичок в python, и я должен завершить задачу написания кода, который dr aws является полиномом.
Код работает, но это dr aws полином немного неправильно: он немного растягивает его по оси х
Кто-нибудь может знать, как это можно исправить? Моя ошибка, вероятно, заключается в функции drawPolynomial()
.
import tkinter as tk
# Initialisation and canvas creation
window = tk.Tk()
cnvs = tk.Canvas(window, width=500, height=500)
cnvs.grid(row=6, columnspan=1500)
# Empty row for aesthetics
emptyrow1 = tk.Label(window)
emptyrow1.grid(row=5)
# Create the inputs and text for the polynomyal:
# □x^6+□x^5+□x^4+□x^3+□x^2+□x+□
entry1 = tk.Entry(window, width=3)
entry1.grid(row=0, column=0)
entry2 = tk.Entry(window, width=3)
entry2.grid(row=0, column=2)
entry3 = tk.Entry(window, width=3)
entry3.grid(row=0, column=4)
entry4 = tk.Entry(window, width=3)
entry4.grid(row=0, column=6)
entry5 = tk.Entry(window, width=3)
entry5.grid(row=0, column=8)
entry6 = tk.Entry(window, width=3)
entry6.grid(row=0, column=10)
entry7 = tk.Entry(window, width=3)
entry7.grid(row=0, column=12)
txt1 = tk.Label(window, text="x^6 +")
txt1.grid(row=0, column=1)
txt2 = tk.Label(window, text="x^5 +")
txt2.grid(row=0, column=3)
txt3 = tk.Label(window, text="x^4 +")
txt3.grid(row=0, column=5)
txt4 = tk.Label(window, text="x^3 +")
txt4.grid(row=0, column=7)
txt5 = tk.Label(window, text="x^2 +")
txt5.grid(row=0, column=9)
txt6 = tk.Label(window, text="x +")
txt6.grid(row=0, column=11)
# Empty row for aesthetics
emptyrow2 = tk.Label(window)
emptyrow2.grid(row=1)
# Create inputs and text for definition range:
# □<x<□
entry8 = tk.Entry(window, width=3)
entry8.grid(row=2, column=4)
txt8 = tk.Label(window, text="< x <")
txt8.grid(row=2, column=5)
entry9 = tk.Entry(window, width=3)
entry9.grid(row=2, column=6)
# Empty row for aesthetics
emptyrow3 = tk.Label(window)
emptyrow3.grid(row=3)
def coordsys(): # Draw the coordinate system background
cnvs.create_rectangle(0, 0, 500, 500, fill="light grey")
cnvs.create_line(50, 240, 50, 260, fill="grey")
cnvs.create_line(100, 240, 100, 260, fill="grey")
cnvs.create_line(150, 240, 150, 260, fill="grey")
cnvs.create_line(200, 240, 200, 260, fill="grey")
cnvs.create_line(300, 240, 300, 260, fill="grey")
cnvs.create_line(350, 240, 350, 260, fill="grey")
cnvs.create_line(400, 240, 400, 260, fill="grey")
cnvs.create_line(450, 240, 450, 260, fill="grey")
cnvs.create_line(240, 50, 260, 50, fill="grey")
cnvs.create_line(240, 100, 260, 100, fill="grey")
cnvs.create_line(240, 150, 260, 150, fill="grey")
cnvs.create_line(240, 200, 260, 200, fill="grey")
cnvs.create_line(240, 300, 260, 300, fill="grey")
cnvs.create_line(240, 350, 260, 350, fill="grey")
cnvs.create_line(240, 400, 260, 400, fill="grey")
cnvs.create_line(240, 450, 260, 450, fill="grey")
cnvs.create_line(0, 250, 500, 250, fill="grey")
cnvs.create_line(250, 0, 250, 500, fill="grey")
coordsys()
def drawPolynomial(): # Draw the polynomial
coordsys() # Reset the coordinate system
a, b, c, d, e, f, g, xz, xk = getEntries() # Get all the entries' values // xz = start, xk = end
x = xz
y = 0
x0 = x
y0 = y
while xz < xk:
x = xz
y = -(a * x ** 6 + b * x ** 5 + c * x ** 4 + d * x ** 3 + e * x ** 2 + f * x + g)
cnvs.create_line(100 * x0 + 250, 100 * y0 + 250, 100 * x + 250, 100 * y + 250)
x0 = x
y0 = y
xz += 0.01
def getEntries(): # Get all the entries' values function
# If blank -> 0, else get the value from the entry
if entry1.get() == "":
a = 0
else:
a = eval(entry1.get())
if entry2.get() == "":
b = 0
else:
b = eval(entry2.get())
if entry3.get() == "":
c = 0
else:
c = eval(entry3.get())
if entry4.get() == "":
d = 0
else:
d = eval(entry4.get())
if entry5.get() == "":
e = 0
else:
e = eval(entry5.get())
if entry6.get() == "":
f = 0
else:
f = eval(entry6.get())
if entry7.get() == "":
g = 0
else:
g = eval(entry7.get()) * 0.5
if entry8.get() == "": # If blank -> -5, else get the value from the entry
xz = -5
else:
xz = int(entry8.get())
if entry9.get() == "": # If blank -> 5, else get the value from the entry
xk = 5
else:
xk = int(entry9.get())
return a, b, c, d, e, f, g, xz, xk
bttn = tk.Button(window, text="Draw", command=drawPolynomial)
bttn.grid(row=4, column=5)
window.minsize(500, 500)
window.maxsize(700, 700)
tk.mainloop()