Автор работы: Пользователь скрыл имя, 20 Ноября 2012 в 23:07, курсовая работа
Цель работы:
1. Дальнейшее развитие и закрепление знаний основ информатики.
2. Умение решать с помощью персонального компьютера задач программными методами с возможным использованием одного из алгоритмических языков программирования.
Введение. 3
Задача 1. Расчет трансформатора питания 4
Задача2.Расчет и построение амплитудно-частотной характеристики колебательного контура 8
Задача 3. Численное интегрирование аналитически заданной функции 12
Задача 4. Численное решение нелинейных уравнений с заданной точностью. 16
Задача 5. Численное решение дифференциальных уравнений первого порядка 21
Заключение. 25
Используемая литература: 26
Министерство образования и науки Российской Федерации
«Уральский федеральный
Кафедра «Информационных технологий
и автоматизации
Оценка за курсовую работу
Члены комиссии
КУРСОВАЯ РАБОТА
по дисциплине «Информатика»
РЕШЕНИЕ ИНЖЕНЕРНО-ТЕХНИЧЕСКИХ ЗАДАЧ
С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ
вариант № 7
Выполнил
Студент:Меркулов И.А.
Группа:М – 110501
Принял:Рыжкова Н. Г.
Екатеринбург
2012
Оглавление
Целью настоящей курсовой работы является реализация поставленных инженерно-технических задач на персональном компьютере с помощью средств визуального программирования, а именно средствами языка программирования Python .
Автоматизации процесса вычислений, компьютерная обработка данных позволяет сократить сроки выполнения инженерно-технических построений увеличить точность получаемых результатов.
Цель работы:
1. Дальнейшее развитие и закрепление знаний основ информатики.
2. Умение решать с помощью персонального компьютера задач программными методами с возможным использованием одного из алгоритмических языков программирования.
3. Реализация поставленных инженерно-технических задач на персональном компьютере с помощью средств визуального Python .программирования, а именно средствами языка программирования
Задачи:
Необходимо написать программы для решения пяти задач:
Программы должны позволять вводить исходные данные, выводить необходимые расчетные параметры.
Постановка задачи. По заданным значениям напряжения сети, площади сечения выбранного сердечника, требуемому количеству вторичных обмоток, величинам их напряжения и тока рассчитать количество витков и диаметр провода в каждой обмотке.
Исходные данные
U, В |
S, кв.см |
n |
m |
U1, В |
I1, А |
U2, В |
I2, А |
220 |
8 |
0,87 |
2 |
12 |
4 |
6 |
6,0 |
Для расчетов используются следующие приближенные зависимости:
Габаритная мощность (P) трансформатора вычисляется по формуле
где m – количество вторичных обмоток, n – коэффициент полезного действия; U(i) – напряжение на i-ой вторичной обмотке (вольт); I(i) – величина тока в i-ой вторичной обмотке (ампер).
Количество витков первичной обмотки трансформатора определяется зависимостью:
где U – напряжение сети (вольт); S – площадь сечения сердечника (кв. см).
Диаметр провода первичной обмотки определяется по формуле:
Количество витков i-ой вторичной обмотки – по выражению:
Диаметр провода i – ой вторичной обмотки – по формуле:
Алгоритм решения
Код:
# -*- coding: utf-8 -*-
#########Поменять переменный
from math import*
from Tkinter import*
S=8
n=0.87
Ui=[]
Ii=[]
def calc ():
P=0
x=int(x_entry.get())
x=x
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/(2*U))
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-1]/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=0, 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 - коэффициент полезного действия=0.87;")
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 - площадь сечения сердечника=8;")
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 до 2)")
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=25)
U_label = Label(frame, text="Введите U")
U_label.grid(row=7, column=2, padx=5)
U_entry = Entry(frame, width=10)
U_entry.grid(row=7, column=3,sticky=W, pady=5, padx=75)
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='white', text="Di=?")
Di_label.grid(row=15, column=1,pady=5,sticky=W)
eval_button = Button(frame, bg='#00FF00' , 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()
Результаты решения
Вывод
По заданным значениям напряжения сети, площади сечения выбранного сердечника, требуемому количеству вторичных обмоток, величинам их напряжения и тока было рассчитано количество витков и диаметр провода в каждой обмотке.
Постановка задачи. По заданному выражению для амплитудно-частотной характеристики резонансного контура
,
где 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шаг |
4,5 |
5,5 |
11 |
0,1 |
0,6 |
0,25 |
Алгоритм
Код:
# *- coding: utf-8 -*-
from Tkinter import *
import math
K=4.5
WP=5.5
W0=0
Wkon=11
Znac=0.1
Zkon=0.6
Zsha=0.25
DW=0.1*Wkon
def ampl(K, WP, W0, Z):
return ((K*WP**2)/math.sqrt((WP**2-
root = Tk()
root.title("Задача 2")
frame = Frame(root)
frame.pack()
#создание заголовка
t1_label = Label(frame, bg='wheat', text="Расчет амплитудно-
t1_label.grid(row=0, column=0, columnspan=80, sticky=W+E, padx=25, pady=15)
#
t3_label = Label(frame, text="К-коэффициент усиления = 4.5")
t3_label.grid(row=1, column=0, columnspan=50, sticky=W, padx=2)
t4_label = Label(frame, text="WP-резонансная частота = 5.5")
t4_label.grid(row=2, column=0, columnspan=50, sticky=W, padx=2)
t5_label = Label(frame, text=" W-текущая частота изменяется от 0 до Wкон=11 шагом 0.25 ")
t5_label.grid(row=3, column=0, columnspan=50, sticky=W, padx=2)
t6_label = Label(frame, text="Z-относительный
коэффициент затухания
t6_label.grid(row=4, column=0, columnspan=50, sticky=W, padx=2)
#
a=Label(frame, fg="#2a08e1", text="%18s" % "W/Z")
a.grid(row=5, column=0, pady=5, padx=5)
b=Label(frame, fg="yellow", text="%20.2f" % 0.1)
b.grid(row=5, column=1, pady=5, padx=5)
c=Label(frame, fg="green", text="%20.2f" % 0.25)
c.grid(row=5, column=2, pady=5, padx=5)
d=Label(frame, fg="#f02ede", text="%20.2f" % 0.6)
d.grid(row=5, column=3, pady=5, padx=5)
#создание окна для построения графика
canvas1=Canvas(frame, width = 500, height = 500)
canvas1.grid(row=5, column=4, rowspan=12, columnspan=10, padx=10, pady=10)
#
M1=[]
M2=[]
M3=[]
M=[M1, M2, M3]
i=0
n=0
points=[]
#
while Znac<=Zkon:
while W0<=Wkon:
A=ampl(K, WP, W0, Znac)
M[i].append (A)
Label(frame, fg="#2a08e1", text="%20.1f" % W0).grid(row=6+n, column=0, padx=5, pady=5)
pp=(20+W0*60)
points.append(pp)
pp=(500-((M[i][n])*20))
points.append(pp)
W0+=DW
Label(frame, text="%20.2f" % M[i][n]).grid(row=6+n, column=1+i, pady=5, padx=5)
n+=1
canvas1.create_line(points,
points=[]
W0=0
n=0
i+=1
Znac+=Zsha
#создание клавиши выход
exit_button = Button(frame, text="Выход", width=10, bg='red', fg='#2a08e1', font='arial 14', command=root.destroy)
exit_button.grid(row=17, column=1, pady=5)
# создание оси Оy
y_axe=[]
yy=(20,0)
y_axe.append(yy)
yy=(20,500)
y_axe.append(yy)
canvas1.create_line(y_axe,
canvas1.create_line(18,8,20,3,
canvas1.create_line(20,3,22,8,
canvas1.create_text(14,5,text=
#создание оси Оx
x_axe=[]
xx=(20,470)
x_axe.append(xx)
xx=(500,470)
x_axe.append(xx)
canvas1.create_line(x_axe,
canvas1.create_line(492,468,
canvas1.create_line(492,472,
canvas1.create_text(495,478,
#
canvas1.create_text(15,470,
canvas1.create_text(230,150, text="y1=A(W), Z=0.1")
canvas1.create_line(230, 160, 287, 250, fill="black", smooth=1)
canvas1.create_text(230,265,
canvas1.create_line(230, 275, 287, 369, fill="black", smooth=1)
canvas1.create_text(230,450,
canvas1.create_line(270, 450, 340, 424, fill="black", smooth=1)
root.mainloop()
Результат решения
Вывод:
Рассчитана таблица значений A(W) при изменении частоты W от 0 до Wкон, при различных значениях относительного коэффициента затухания Z, изменяющегося от Zнач до Zкон. По данным таблицы построены на осях координат A(W), W графики изменения амплитуды A(W) от частоты W для различных значений Z.
Из графика видно, что при увеличении относительного коэффициента затухания амплитуда резонансного контура возрастает при средних значениях текущей частоты.
Постановка задачи. По заданному выражению аналитической функции f(x) вычислить приближенно определенный интеграл от этой функции на заданном интервале [a,b]: