Автор работы: Пользователь скрыл имя, 09 Декабря 2012 в 21:50, курсовая работа
Целью данной работы является наглядно показать решение инженерно-технических задач с помощью одного языка программирования Python. Автоматизации процесса вычислений, компьютерная обработка данных позволяет сократить сроки выполнения инженерно-технических построений увеличить точность получаемых результатов.
Министерство образования и науки Российской Федерации
ФГАОУ ВПО «Уральский федеральный университет
им. первого Президента России Б.Н. Ельцина»
Кафедра «Информационных
технологий и автоматизации
Оценка за курсовую работу
Члены комиссии
К У Р С О В А Я Р А Б О Т А
по дисциплине «Информатика»
РЕШЕНИЕ ИНЖЕНЕРНО-ТЕХНИЧЕСКИХ ЗАДАЧ
С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ
вариант №4
Выполнил
Студент: Проничев И.М.
Группа: ММ-110503
Принял(а): Рыжкова Н.Г.
Екатеринбург
2012
Введение
Целью данной работы является наглядно показать решение инженерно-технических задач с помощью одного языка программирования Python.
Автоматизации процесса вычислений, компьютерная обработка данных позволяет сократить сроки выполнения инженерно-технических построений увеличить точность получаемых результатов.
Содержание курсовой работы отражает характер поставленных задач, в процессе решения которых использовались инструменты анализа, алгоритмизации и программирования.
Задача 1. Расчет трансформатора питания
Постановка задачи. По заданным значениям напряжения сети, площади сечения выбранного сердечника, требуемому количеству вторичных обмоток, величинам их напряжения и тока рассчитать количество витков и диаметр провода в каждой обмотке.
Исходные данные приведены в таблицу 1:
Таблица 1
U, В |
S, кв.см |
n |
m |
U1, В |
I1, А |
U2,В |
I2,А |
220 |
0,84 |
5 |
2 |
9 |
2,5 |
6 |
6 |
Для расчетов используются следующие приближенные зависимости:
Габаритная мощность (P) трансформатора вычисляется по формуле
где m – количество вторичных обмоток, n – коэффициент полезного действия; U(i) – напряжение на i-ой вторичной обмотке (вольт); I(i) – величина тока в i-ой вторичной обмотке (ампер).
Количество витков первичной обмотки трансформатора определяется зависимостью:
где U – напряжение сети (вольт); S – площадь сечения сердечника (кв. см).
Диаметр провода первичной обмотки определяется по формуле:
Количество витков i-ой вторичной обмотки – по выражению:
Диаметр провода i – ой вторичной обмотки – по формуле:
Структура программы:
1. Подключение библиотек
2. Ввод исходные данные
3. Написание функции calc для вычисления K(i), D(i), Ko и Do в зависимости от введенного пользователем U, Ui, Ii, i
4. Создание экземпляра класса Tk, отвечающего за создание окон
5. Создание заголовка
6. Описание в окне буквенных обозначений
7. Создание виджетов
a. Создание полей для введения пользователем U, Ui, Ii, i
b. Создание в окне ячеек для выведения конечного результата
c. Создание в окне кнопок
d. Отображение главного окна
Код программы:
# -*- coding: utf-8 -*-
#
from Tkinter import *
from math import *
#
S=5
n=0.84
Ui=[]
Ii=[]
# написание функции для вычисления K(i) , D(i) , Ko и Do в зависимости от введенного пользователем U, Ui, Ii, i
def calc ():
P=0
x=int(x_entry.get())
x=x-1
U=int(U_entry.get())
Ui.append(float(U1_entry.get()
Ui.append(float(U1_entry.get()
Ui.append(float(U2_entry.get()
Ii.append(float(I1_entry.get()
Ii.append(float(I2_entry.get()
Ii.append(float(I2_entry.get()
for i in range(x):
P+=Ui[i]*Ii[i]
P=P/n
Ko=(1.83)*(10**6)*(0.95)/(U*S)
Ko='%.3f' % Ko
Ko_label.configure(text=('Ko='
Do=sqrt(P/(U*2))
Do='%.3f' % Do
Do_label.configure(text=('Do='
Pk=38*Ui[x]*1.05/S
Pk='%.3f' % Pk
Ki_label.configure(text=('Ki='
Pd=sqrt(Ii[x]/2)
Pd='%.3f' % Pd
Di_label.configure(text=('Di='
#
root = Tk()
#
root.title("ЗАДАЧА 1")
frame = Frame(root)
frame.pack()
# Создарние заголовка
t1_label = Label(frame, bg='wheat', text="Вычисление количества витков и диаметра провода i-ой вторичной обмотки трансформатора", font='arial 14')
t1_label.grid(row=0, column=1, columnspan=4, padx=25,pady=15)
#
t3_label = Label(frame, text="P - габаритная мощность трансформатора не более 100 ватт;")
t3_label.grid(row=1, column=0, columnspan=4, sticky=W, padx=5)
t4_label = Label(frame, text="m - количество вторичных обмоток;")
t4_label.grid(row=2, column=0, columnspan=4, sticky=W, padx=5)
t5_label = Label(frame, text="n - коэффициент полезного действия;")
t5_label.grid(row=3, column=0, columnspan=4, sticky=W, padx=5)
t6_label = Label(frame, text="U(i) - напряжение на i-ой вторичной обмотке;")
t6_label.grid(row=4, column=0, columnspan=4, sticky=W, padx=5)
t7_label = Label(frame, text="I(i) - величина тока в i-ой вторичной обмотке;")
t7_label.grid(row=5, column=0, columnspan=4, sticky=W, padx=5)
t8_label = Label(frame, text="Ko - количество витков первичной обмотки трансформатора.")
t8_label.grid(row=6, column=0, columnspan=4, sticky=W, padx=5)
t9_label = Label(frame, text="U - напряжение сети;")
t9_label.grid(row=1, column=3, columnspan=4, sticky=W, padx=5)
t10_label = Label(frame, text="S - площадь сечения сердечника;")
t10_label.grid(row=2, column=3, columnspan=4, sticky=W, padx=5)
t11_label = Label(frame, text="Do - диаметр провода первичной обмотки трансформатора;")
t11_label.grid(row=3, column=3, columnspan=4, sticky=W, padx=5)
t12_label = Label(frame, text="K(i) - количество витков i-ой вторичной обмотки трансформатора;")
t12_label.grid(row=4, column=3, columnspan=4, sticky=W, padx=5)
t13_label = Label(frame, text="D(i) - диаметр провода i-ой вторичной обмотки трансформатора;")
t13_label.grid(row=5, column=3, columnspan=4, sticky=W, padx=5)
#
x_label = Label(frame, text="Задайте параметр i (от 1 до 3)")
x_label.grid(row=7, column=0, padx=5)
x_entry = Entry(frame, width=10)
x_entry.grid(row=7, column=1,sticky=W, pady=5, padx=15)
U_label = Label(frame, text="Введите U")
U_label.grid(row=7, column=2, )
U_entry = Entry(frame, width=10)
U_entry.grid(row=7, column=3,sticky=W, pady=5, padx=25)
U1_label = Label(frame, text="Введите U1")
U1_label.grid(row=11, column=0, padx=5)
U1_entry = Entry(frame, width=10)
U1_entry.grid(row=11, column=1,sticky=W, pady=5, padx=25)
U2_label = Label(frame, text="Введите U2")
U2_label.grid(row=12, column=0, padx=5)
U2_entry = Entry(frame, width=10)
U2_entry.grid(row=12, column=1,sticky=W, pady=5, padx=25)
I1_label = Label(frame, text="Введите I1")
I1_label.grid(row=11, column=2, padx=5)
I1_entry = Entry(frame, width=10)
I1_entry.grid(row=11, column=3,sticky=W, pady=5, padx=75)
I2_label = Label(frame, text="Введите I2")
I2_label.grid(row=12, column=2, padx=5)
I2_entry = Entry(frame, width=10)
I2_entry.grid(row=12, column=3,sticky=W, pady=5, padx=75)
#
Ko_label = Label(frame, bg='white', text=("Ko=?"))
Ko_label.grid(row=14, column=3, sticky=W, padx=2)
Ki_label = Label(frame, width=10, bg='white', text="Ki=?")
Ki_label.grid(row=14, column=1,pady=5,sticky=W)
Do_label = Label(frame, bg='white', text=("Do=?"))
Do_label.grid(row=15, column=3, sticky=W, padx=2)
Di_label = Label(frame, bg='wheat', text="Di=?")
Di_label.grid(row=15, column=1,pady=5,sticky=W)
#
eval_button = Button(frame, bg='#DBDB70' , text="Вычислить", command=calc)
eval_button.grid(row=16, column=1, sticky=W, pady=10)
exit_button = Button(frame, bg='red' , text="Выйти", command=root.destroy)
exit_button.grid(row=16, column=3, padx=10,pady=10)
#
root.mainloop()
Результат выполнения программы:
Вывод:
По заданным значениям напряжения сети, площади сечения выбранного сердечника, требуемому количеству вторичных обмоток, величинам их напряжения и тока было рассчитано количество витков и диаметр провода в каждой обмотке.
Задача 2. Расчет и
построение амплитудно-частотной
Постановка задачи:
По заданному выражению
для амплитудно-частотной
Где K – коэффициент усиления, WP – резонансная частота, W – текущая частота,
Z – относительный коэффициент затухания, рассчитать таблицу значений A(W) при изменении частоты W от 0 до Wкон с шагом DW=0,1*Wкон при различных значениях относительного коэффициента затухания Z, изменяющегося от Zнач до Zкон с шагом Zшаг.
По данным таблицы построить на осях координат A(W), W графики изменения амплитуды A(W) от частоты W для различных значений Z.
Исходные данные приведены в таблицу 2:
Таблица 2
K |
WP |
Wкон |
Zнач |
Zкон |
Zшаг |
3,0 |
4,0 |
8,0 |
0,1 |
0,7 |
0,3 |
Структура программы:
Код программы:
# *- coding: utf-8 -*-
#
from Tkinter import *
import math
# описание функции
def amplituda(K, WP, W0, Z):
return ((K*WP**2)/math.sqrt((WP**2-
#
root = Tk()
#
root.title("Расчет амплитудно-частотной характеристики колебательного контура")
frame = Frame(root)
frame.pack()
#
t1_label = Label(frame, text="Задача 2. Расчет и построение амплитудно-частотной характеристики колебательного контура", font='Arial 14')
t1_label.grid(row=0, column=0, columnspan=80, sticky=W, padx=25, pady=15)
#
t3_label = Label(frame, text="Коэффициент усиления К = 3")
t3_label.grid(row=1, column=0, columnspan=50, sticky=W, padx=2)
t4_label = Label(frame, text="Резонансная частота WP = 4")
t4_label.grid(row=2, column=0, columnspan=50, sticky=W, padx=2)
t5_label = Label(frame, text="Текущая частота W изменяется от 0 до Wкон=8 с шагом 0.8")
t5_label.grid(row=3, column=0, columnspan=50, sticky=W, padx=2)
t6_label = Label(frame, text="Относительный коэффициент затухания Z изменяется от Zнач=0.1 до Zкон=0.7 с шагом 0.3")
t6_label.grid(row=4, column=0, columnspan=50, sticky=W, padx=2)
#
a11=Label(frame, fg="#FF00FF", text="%18s" % "W/Z")
a11.grid(row=5, column=0, pady=5, padx=5)
a12=Label(frame, fg="#FF00FF", text="%20.2f" % 0.1)
a12.grid(row=5, column=1, pady=5, padx=5)
a13=Label(frame, fg="#FF00FF", text="%20.2f" % 0.4)
a13.grid(row=5, column=2, pady=5, padx=5)
a14=Label(frame, fg="#FF00FF", text="%20.2f" % 0.7)
a14.grid(row=5, column=3, pady=5, padx=5)
canvas1=Canvas(frame, width = 500, height = 395)
canvas1.grid(row=5, column=4, rowspan=12, columnspan=10, padx=10, pady=10)
#
K=3
WP=4
W0=0