Автор работы: Пользователь скрыл имя, 08 Декабря 2013 в 08:24, курсовая работа
Цель работы:
1.Дальнейшее развитие и закрепление знаний основ информатики.
2. Умение решать с помощью персонального компьютера задач программными методами с возможным использованием одного из алгоритмических языков программирования.
3. Реализация поставленных инженерно-технических задач на персональном компьютере с помощью средств визуального Python .программирования, а именно средствами языка программирования
Введение …………………………………………………………………………………………
3
1. Задача 1. Расчет трансформатора питания…………………………………………………….
4
2. Задача 2. Расчет и построение амплитудно-частотной характеристики колебательного контура. ……………………………………………………………………………………………
8
3. Задача 3. Численное интегрирование аналитически заданной функции …………………
11
4. Задача 4. Численное решение нелинейных уравнений с заданной точностью …………….
15
5.Задача 5. Численное решение дифференциальных уравнений первого порядка. …………
18
Заключение………………………………………………………………………………………...
19
Министерство образования и науки Российской Федерации
ФГАОУ ВПО «Уральский федеральный университет
им. первого Президента России Б.Н. Ельцина»
Кафедра «Информационных технологий
и автоматизации
Оценка за курсовую работу
Члены комиссии
К У Р С О В А Я Р А Б О Т А
по дисциплине «Информатика»
РЕШЕНИЕ ИНЖЕНЕРНО-ТЕХНИЧЕСКИХ ЗАДАЧ
С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ
вариант № 3
Выполнил
Студент: Брякунов С.В.
Группа: ММ-110501
Принял: Рыжкова Н. Г.
Екатеринбург
2012
Оглавление
Введение ……………………………………………………… |
3 |
1. Задача 1. Расчет трансформатора питания……………………………………………………. |
4 |
2. Задача 2. Расчет и построение амплитудно-частотной
характеристики колебательного контура.
……………………………………………………………………………… |
8 |
3. Задача 3. Численное интегрирование аналитически заданной функции ………………… |
11 |
4. Задача 4. Численное решение нелинейных уравнений с заданной точностью ……………. |
15 |
5.Задача 5. Численное решение дифференциальных уравнений первого порядка. ………… |
18 |
Заключение…………………………………………………… |
19 |
Введение.
Целью настоящей курсовой работы является реализация поставленных инженерно-технических задач на персональном компьютере с помощью средств визуального программирования, а именно средствами языка программирования Python .
Автоматизации процесса вычислений, компьютерная обработка данных позволяет сократить сроки выполнения инженерно-технических построений увеличить точность получаемых результатов.
Задачи:
С использованием средств визуального программирования необходимо написать программы для решения пяти задач:
Программы должны позволять вводить исходные данные, выводить необходимые расчетные параметры.
В ходе написания курсовой работы необходимо ознакомиться с некоторыми темами из такого предмета, как «Высшая математика».
Цель работы:
1.Дальнейшее развитие и закрепление знаний основ информатики.
2. Умение решать с
помощью персонального
3. Реализация поставленных
инженерно-технических задач
Задача 1. Расчет трансформатора питания
Постановка задачи. По заданным значениям напряжения сети, площади сечения выбранного сердечника, требуемому количеству вторичных обмоток, величинам их напряжения и тока рассчитать количество витков и диаметр провода в каждой обмотке.
U, в |
S, кв.см |
n |
m |
U1, В |
I1, А |
220 |
4 |
0,83 |
1 |
9 |
2 |
Для расчетов используются следующие приближенные зависимости:
Габаритная мощность (P) трансформатора вычисляется по формуле
где m – количество вторичных обмоток, n – коэффициент полезного действия; U(i) – напряжение на i-ой вторичной обмотке (вольт); I(i) – величина тока в i-ой вторичной обмотке (ампер).
Количество витков первичной обмотки трансформатора определяется зависимостью:
где U – напряжение сети (вольт); S – площадь сечения сердечника (кв. см).
Диаметр провода первичной обмотки определяется по формуле:
Количество витков i-ой вторичной обмотки – по выражению:
Диаметр провода i – ой вторичной обмотки – по формуле:
Алгоритм
Код программы:
# *- coding: utf-8 -*-
from math import*
from Tkinter import *
U=220
S=4
x=0.83
mi=1
def K_0(S,U):
v=round((1.83*(10**6)*0.95)/(
return v
def D_0(U0,I0,U,x):
n=round((sqrt((U0*I0)/x/(U*2))
return n
def K_1(U0,S):
k=38.0/S*float(U0)*1.05 #питон округляет число получившееся после диления на S в мееньшую сорону
return k
def D_1(I0):
m=round(sqrt(I0/2.0),4)
return m
def calculate_K1(): # функция, исполняемая при нажатии на кнопку вычисления
I1 = float(a_entry.get())
U1 = float(b_entry.get())
try:
f_x = "%11.4f" % (K_1(U1,S))
except:
f_x = "?"
k_label.configure(text=f_x)
try:
f_x = "%11.4f" % (K_0(S,U))
except:
f_x = "?"
v_label.configure(text=f_x)
try:
f_x = "%11.4f" % (D_1(I1))
except:
f_x = "?"
m_label.configure(text=f_x)
try:
f_x = "%11.4f" % (D_0(U1,I1,U,x))
except:
f_x = "?"
n_label.configure(text=f_x)
root = Tk()
root.title("Задание 1е")
frame = Frame(root)
frame.pack()
# создание виджетов
t1_label = Label(frame, text="РАСЧЕТ ТРАНСФОРМАТОРА ПИТАНИЯ", font='arial 12')
t1_label.grid(row=0, column=0, columnspan=4, padx=5,pady=5)
t3_label = Label(frame, text="U1 - величина напряжения на i-ой вторичной обмотке ")
t3_label.grid(row=9, column=0, columnspan=4, sticky=W, padx=2)
a_label = Label(frame, text="I1=")
a_label.grid(row=5, column=0, padx=10)
a_entry = Entry(frame, width=10)
a_entry.grid(row=5, column=1,sticky=W, pady=5)
t4_label = Label(frame, text="I1 - величина тока в i-ой вторичной обмотке ")
t4_label.grid(row=10, column=0, columnspan=4, sticky=W, padx=2)
b_label = Label(frame, text="U1 =")
b_label.grid(row=6, column=0,padx=2)
b_entry = Entry(frame, width=10)
b_entry.grid(row=6, column=1,sticky=W, pady=5)
eval_button = Button(frame, text="Calculate", width=10,
command=calculate_K1)
eval_button.grid(row=11, column=1,sticky=W, pady=15)
exit_button = Button(frame, text="Exit", width=10,
command=root.destroy)
exit_button.grid(row=11, column=2, padx=5,pady=5)
t5_label = Label(frame, text="K1 - Количество витков i-ой вторичной обмотки ")
t5_label.grid(row=1, column=0, columnspan=4, sticky=W, padx=2)
t6_label = Label(frame, text="D1 - Диаметр провода i–ой вторичной обмотки ")
t6_label.grid(row=2, column=0, columnspan=4, sticky=W, padx=2)
t7_label = Label(frame, text="Do - Диаметр провода первичной обмотки ")
t7_label.grid(row=3, column=0, columnspan=4, sticky=W, padx=2)
t8_label = Label(frame, text="Ko - Количество витков в первчиной обмотке ")
t8_label.grid(row=4, column=0, columnspan=4, sticky=W, padx=2)
k_label = Label(frame, width=10, bg='green', text="?")
k_label.grid(row=7, column=3,padx=5,pady=10)
k1_label = Label(frame, text="K1 =")
k1_label.grid(row=7, column=2,padx=1, pady=10)
m_label = Label(frame, width=10, bg='pink', text="?")
m_label.grid(row=8, column=3,padx=5,pady=10)
m1_label = Label(frame, text="D1 =")
m1_label.grid(row=8, column=2,padx=1, pady=10)
v_label = Label(frame, width=10, bg='yellow', text="?")
v_label.grid(row=5, column=3,padx=5,pady=10)
v1_label = Label(frame, text="Ko =")
v1_label.grid(row=5, column=2,padx=1, pady=10)
n_label = Label(frame, width=10, bg='red', text="?")
n_label.grid(row=6, column=3,padx=5,pady=10)
n1_label = Label(frame, text="Do =")
n1_label.grid(row=6, column=2,padx=1, pady=10)
root.mainloop()
Результат решения:
Вывод:
По заданным значениям напряжения сети, площади сечения выбранного сердечника, требуемому количеству вторичных обмоток, величинам их напряжения и тока я рассчитал количество витков и диаметр провода в каждой обмотке.
2. Задача 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.
K |
WP |
Wкон |
Zнач |
Zкон |
Zшаг |
2,5 |
3,5 |
7 |
0,1 |
0,6 |
0,25 |
Алгоритм
Код программы:
Результат решения:
# *- coding: utf-8 -*-
from Tkinter import *
from math import*
k=2.5
wp=3.5
wk=7
wo=0
dw=0.7
zn=0.1
zk=0.6
dz=0.25
z=zn
m=[]
w0=0
s=[]
while zn <= 0.6:
s=[]
for i in range (0, 7.025):
a1=(k*(wp**2))/(sqrt((((wp**2)
s.append(a1)
w0=w0+dw
zn=zn+dz
m.append(s)
print m
root = Tk() # создание окна
root.title("задание второе ")
frame = Frame(root)
frame.pack()
#
t1_label = Label(frame, text="Построение графиков", font='arial 12')
t1_label.grid(row=0, column=0, columnspan=4, padx=5,pady=5)
canvas2=Canvas(frame,bg='light
canvas2.grid(row=1, column=4,rowspan=10,
point1=m[0]
points1=[]
dx=2
for i in range (0,7):
y=point1[i]
pp=(12*i*dx,200-15*y)
points1.append(pp)
def line1():
canvas2.create_line(points1,
canvas2.create_text(40,75,
point2=m[1]
points2=[]
dx=2
for i in range (0,7):
y=point2[i]
pp=(12*i*dx,200-30*y)
points2.append(pp)
def line2():
canvas2.create_line(points2,
canvas2.create_text(40,175,
point3=m[2]
points3=[]
dx=2
for i in range (0,7):
y=point3[i]
pp=(12*i*dx,200-30*y)
points3.append(pp)
def line3():
canvas2.create_line(points3,
canvas2.create_text(105,209,
y_axe=[]
yy=(10,0)
y_axe.append(yy)
yy=(10,220)
y_axe.append(yy)
canvas2.create_line(y_axe,
canvas2.create_line(8,8,10,3,
canvas2.create_line(10,3,12,8,
canvas2.create_text(25,15,
x_axe=[]
xx=(0,200)
x_axe.append(xx)
xx=(299,200)
x_axe.append(xx)
canvas2.create_line(x_axe,
canvas2.create_line(192,198,
canvas2.create_line(192,202,
canvas2.create_text(190,213,
eval_button = Button(frame, bg='yellow',fg='red',text=" график при Z =0.1", width=19,
command=line1)
eval_button.grid(row=1, column=0, padx=10,pady=10)
eval1_button = Button(frame, bg='yellow',fg='red',text=" график при Z =0.35", width=19,
command=line2)
eval1_button.grid(row=2, column=0, padx=10,pady=10)
eval1_button = Button(frame, bg='yellow',fg='red',text=" график при Z =0.6", width=19,
command=line3)
eval1_button.grid(row=3, column=0, padx=10,pady=10)
exit_button = Button(frame, bg='turquoise', fg='red',text="Exit", width=10,
command=root.destroy)
exit_button.grid(row=4, column=0, padx=10,pady=10)
text1=Text(root,width=40, height=15, font = "14" )
scr1 = Scrollbar(root,command=text1.
text1.configure(
text1.pack(side='left')
text1.insert(END,"W\t Z1 \t Z2 \t Z3\n")
for i in range (7):
text1.insert(END, "%.2f \t %.2f \t %.2f \t %.2f\n" % (i,point1[i],point2[i], point3[i]))
scr1.pack()
root.mainloop()
Вывод:
Я рассчитал таблицу значений A(W) при изменении частоты W от 0 до Wкон, при различных значениях относительного коэффициента затухания Z, изменяющегося от Zнач до Zкон. По данным таблицы построил на осях координат A(W), W графики изменения амплитуды A(W) от частоты W для различных значений Z.
Из графика видно что при
увеличении относительного коэффициента
затухания амплитуда
Задача 3. Численное интегрирование аналитически заданной функции
Постановка задачи. По заданному выражению аналитической функции f(x) вычислить приближенно определенный интеграл от этой функции на заданном интервале [a,b]:
используя одну из трех квадратурных формул: