Решение инженерно-технологических задач с использованием средств визуального программирования

Автор работы: Пользователь скрыл имя, 09 Декабря 2012 в 21:50, курсовая работа

Краткое описание

Целью данной работы является наглядно показать решение инженерно-технических задач с помощью одного языка программирования Python. Автоматизации процесса вычислений, компьютерная обработка данных позволяет сократить сроки выполнения инженерно-технических построений увеличить точность получаемых результатов.

Вложенные файлы: 1 файл

Министерство образования и науки Российской Федерации.docx

— 328.50 Кб (Скачать файл)

            x2+=h

            y2=y1+f(x1,y1)

            M1.append(x1)

            M2.append(y1)

            n+=1

        n=0

        points=[]

        while n<7:

            Label(frame, text="%20.1f" % M[0][n]).grid(row=6+n, column=0, sticky=W+E, padx=1, pady=0.5)

            pp=(150+(M[0][n])*30)

            points.append(pp)

            Label(frame, text="%24.4f" % M[1][n]).grid(row=6+n, column=1, sticky=W+E, pady=0.5, padx=1)

            pp=(180-(M[1][n])*60)

            points.append(pp)

            n+=1

        canvas1.create_line(points,fill="blue",smooth=1)

 

# метод Рунге-Кутта четвертого  порядка, описывается, как система  из 5 соотношений

        x1=float(a_entry.get())

        y2=float(b_entry.get())

        L1=[]

        L2=[]

        L=[L1, L2]

        n=0

        while n<7:

            y1=y2

            L1.append(x1)

            x1+=h

            k1=h*f(x1,y1)

            k2=h*f(x1+h/2, y1+k1/2)

            k3=h*f(x1+h/2, y1+k2/2)

            k4=h*f(x1+h, y1+k3)

            y2=y1+(k1+2*k2+2*k3+k4)/6

            L2.append(y1)

            n+=1

        x1=float(a_entry.get())

        n=0

        points2=[]

        while n<7:

           Label(frame, text="%20.1f" % L[0][n]).grid(row=6+n, column=3, sticky=W+E, padx=1, pady=0.5)

           pp=(150+(L[0][n])*30)

           points2.append(pp)

           Label(frame, text="%24.4f" % L[1][n]).grid(row=6+n, column=4, sticky=W+E, pady=0.5, padx=1)

           pp=(180-(L[1][n])*60)

           points2.append(pp)

           n+=1

        canvas2.create_line(points2,fill="blue",smooth=1)

#Создание экземляра класса Tk, отвечающего за создание окон

root = Tk()

root.title("Решение дифференциального уравнения")

frame = Frame(root)

frame.pack()

#Создание поля вывода  ответа - "Задача 5. Решение дифференциального  уравнения"

t1_label = Label(frame, text="Задача 5. Решение дифференциального уравнения", font='arial 14')

t1_label.grid(row=0, column=0, columnspan=80, sticky=W+E, padx=25, pady=5)

#Создание поля вывода  ответа - "y'=(y**2-y)/x"

t3_label = Label(frame, text="у'=(у**2-у)/x", font='arial 14')

t3_label.grid(row=1, column=0, columnspan=80, sticky=W+E, padx=2, pady=5)

#Создание окна ввода  значения числа - "х"

c_label = Label(frame, text="Конечное значение х = ")

c_label.grid(row=3, column=0, sticky=W, padx=5)

c_entry = Entry(frame, width=10)

c_entry.grid(row=3, column=1, sticky=W, pady=1, padx=5)

#Создание поля вывода  ответа - "Метод Эйлера"

a10 = Label(frame, text="Метод Эйлера", font='arial 12')

a10.grid(row=4, column=0, columnspan=2, sticky=W, padx=2)

#Создание окна ввода  величины начального значения  числа - "х0"

a_label = Label(frame, text="Начальное значение х0 = ")

a_label.grid(row=2, column=0, sticky=W, padx=5)

a_entry = Entry(frame, width=10)

a_entry.grid(row=2, column=1, sticky=W, pady=1, padx=5)

#Создание окна ввода  величины начального значения  числа - "у0"

b_label = Label(frame, text="Начальное значение у0 = ")

b_label.grid(row=2, column=3, sticky=W, padx=5)

b_entry = Entry(frame, width=10)

b_entry.grid(row=2, column=4, sticky=W, pady=1, padx=5)

#

a11=Label(frame, fg="#FF00FF", text="%17s" % "x", font='arial 12')

a11.grid(row=5, column=0, pady=5, sticky=W+E, padx=5)

a12=Label(frame, fg="#FF00FF", text="%17s" % "f(x)", font='arial 12')

a12.grid(row=5, column=1, pady=5, sticky=W+E, padx=5)

 

canvas=Canvas(frame, width = 1, height = 600, bg="#000000")

canvas.grid(row=3, column=2, rowspan=12, padx=2)

#Создание поля вывода  ответа - "Метод Рунге-Кутта четвертого  порядка" 

a20 = Label(frame, text="Метод Рунге-Кутта четвертого порядка", font='arial 12')

a20.grid(row=4, column=3, columnspan=2, sticky=W, padx=2)

a21=Label(frame, fg="#FF00FF", text="%17s" % "x", font='arial 12')

a21.grid(row=5, column=3, pady=5, sticky=W+E, padx=5)

a22=Label(frame, fg="#FF00FF", text="%17s" % "f(x)", font='arial 12')

a22.grid(row=5, column=4, pady=5, sticky=W+E, padx=5)

 

canvas1=Canvas(frame, width = 270, height = 200)

canvas1.grid(row=13, column=0, columnspan=2, padx=5, pady=1)

canvas2=Canvas(frame, width = 270, height = 200)

canvas2.grid(row=13, column=3, columnspan=2, padx=5, pady=1)

#Создание кнопки вычисления  значения интеграла - "Вычислить"

button = Button(frame, text="Вычислить", width=10, bg='#2F2F4F', fg='#70DB93', font='arial 14', command=vichislit)

button.grid(row=14, column=1, sticky=E, padx=5, pady=1)

#Создание кнопки закрытия  приложения - "Выход"

exit_button = Button(frame, text="Выход", width=10, bg='#2F2F4F', fg='#70DB93', font='arial 14', command=root.destroy)

exit_button.grid(row=14, column=3, sticky=W, pady=1)

# Создание оси координат  - "y"

y_axe=[]

yy=(150,0)

y_axe.append(yy)

yy=(150,200)

y_axe.append(yy)

canvas1.create_line(y_axe,fill="black",width=1)

canvas1.create_line(148,8,150,3,fill="black",width=1)

canvas1.create_line(150,3,152,8,fill="black",width=1)

canvas1.create_text(144,5,text="y")

 

canvas2.create_line(y_axe,fill="black",width=1)

canvas2.create_line(148,8,150,3,fill="black",width=1)

canvas2.create_line(150,3,152,8,fill="black",width=1)

canvas2.create_text(144,5,text="y")

# Создание оси координат  - "x"

x_axe=[]

xx=(0,180)

x_axe.append(xx)

xx=(270,180)

x_axe.append(xx)

canvas1.create_line(x_axe,fill="black",width=1)

canvas1.create_line(262,178,267,180,fill="black",width=1)

canvas1.create_line(262,182,267,180,fill="black",width=1)

canvas1.create_text(265,168,text="x")

 

canvas2.create_line(x_axe,fill="black",width=1)

canvas2.create_line(262,178,267,180,fill="black",width=1)

canvas2.create_line(262,182,267,180,fill="black",width=1)

canvas2.create_text(265,168,text="x")

canvas1.create_text(160,190,text="0")

canvas1.create_text(210,50,text="y=f(x)")

canvas2.create_text(160,190,text="0")

canvas2.create_text(210,50,text="y=f(x)")

# Создание окна

root.mainloop()

 

 

Вывод:

Для решения дифференциального  уравнения первого порядка были использованы выше описанные методы Рунге-Кутта и метод Эйлера. Было установлено, что метод Рунге-Кутта  точнее, чем метод Эйлера в сравнении  с аналитическим методом вычисления, и требует меньшего числа разбиений  участка функции, для выявления  результата.

 

Заключение

 

В процессе решения  задач  с помощью языка программирования Python были запрограммированы и реализованы алгоритмы численных методов решения нелинейных уравнений, дифференциальных уравнений первого порядка, интегрирования аналитически заданных функций, автоматизированы процессы расчетов и вычислений некоторых инженерно-технических задач.

Были применены полученные знания в области визуального  объектно-ориентированного  программирования: создание виджетов, составление вычислительных функций, применение различных электронных библиотек, добавление графических объектов, использование циклов и т.д. Данные программы включали в себя численные методы решения, построение графиков, вывод таблиц. Для решения задач были использованы функции для вычисления требуемых данных и поставленных задач.

 Для упрощения работы  с программами созданы диалоговые  окна с необходимыми командами.  Во всех программах использовались компоненты типов: label (может показывать текст или графическое изображение), button (кнопка, служащая для выполнения команд и других действий), text (прямоугольный виджет позволяющий редактировать и форматировать текст с использованием различных стилей, внедрять в текст рисунки и др.), entry (горизонтальное поле, в которое можно ввести строку текста), frame (виджет, который содержит в себе другие визуальные компоненты). В некоторых из них так же использовались canvas для создания графических объектов, и scrollbar для создания элементы с текстовыми значениями.  Для сокращения программы использовались циклы, типа for, while. Так же использовался менеджер grid. Для математических вычислений был задействован математический модуль math, а для визуального программирования  модуль tkinter.

 

 

Список используемой литературы

 

  1. Чаплыгин А. Н. «Учимся программировать вместе с Питоном»; 2004
  2. Россум Г., Дрейк Ф.Л. Дж.,Откидач Д.С. «Язык программирования Python»
  3. Лутц М. «Изучаем Python»: Символ плюс; 2011
  4. Бизли Д. «Python. Подробный справочник»: Символ плюс; 2010
  5. Сузи Р.А. «Язык программирования Python»: ИНТУИТ; 2005
  6. Саммерфилд М. «Программирование на Python»: Санкт-Петербург; 2009

Информация о работе Решение инженерно-технологических задач с использованием средств визуального программирования