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

Автор работы: Пользователь скрыл имя, 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

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

отчёт по курсовой работе.doc

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

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

ФГАОУ ВПО «Уральский федеральный  университет

им. первого Президента России Б.Н. Ельцина»

 

Кафедра «Информационных технологий и автоматизации проектирования»

 

 

Оценка за курсовую работу

 

Члены комиссии

 

 

 

 

 

 

 

 

 

К У Р С  О В А Я    Р А Б  О Т А

 

по дисциплине «Информатика»

 

РЕШЕНИЕ ИНЖЕНЕРНО-ТЕХНИЧЕСКИХ ЗАДАЧ 

С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ ВИЗУАЛЬНОГО  ПРОГРАММИРОВАНИЯ

 

вариант № 3

 

 

 

 

 

 

 

 

 

 

Выполнил

Студент: Брякунов С.В.

Группа: ММ-110501

 

 

Принял: Рыжкова Н. Г.

 

 

 

 

 

 

Екатеринбург

2012

 

Оглавление

Введение …………………………………………………………………………………………

3

1. Задача 1. Расчет трансформатора питания…………………………………………………….

4

2. Задача 2. Расчет и построение амплитудно-частотной характеристики колебательного контура. ……………………………………………………………………………………………

8

3. Задача 3. Численное интегрирование аналитически заданной функции …………………

11

4. Задача 4. Численное решение нелинейных уравнений с заданной точностью …………….

15

5.Задача 5. Численное решение дифференциальных уравнений первого порядка. …………

18

Заключение………………………………………………………………………………………...

19


 

 

Введение.

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

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

 

Задачи:

С использованием средств визуального программирования необходимо написать программы для решения пяти задач:

  1. Расчет трансформатора питания.
  2. Расчет и построение амплитудно-частотной характеристики колебательного контура .
  3. Численное интегрирование аналитически заданной функции.
  4. Численное решение нелинейных уравнений с заданной точностью.
  5. Численное решение дифференциальных уравнений первого порядка.

 

Программы должны позволять  вводить исходные данные, выводить необходимые   расчетные параметры.

В ходе написания курсовой работы необходимо ознакомиться с некоторыми темами из такого предмета, как «Высшая математика».

 

Цель  работы:

1.Дальнейшее развитие  и закрепление знаний основ  информатики.

2. Умение решать с  помощью персонального компьютера  задач программными методами  с возможным использованием одного из алгоритмических языков программирования.

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

                        Задача 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 – ой вторичной обмотки – по формуле:

(мм).

Алгоритм

 

  1. Подключаем библиотеки.
  2. Вводим исходные данные.
  3. Написание функции calc для вычисления K(i), D(i), Ko и Do в зависимости от введенного пользователем U, Ui, Ii, i
  4. Осуществление вывода на экран окна программы и с последующим выводом результатов вычисления.
  5. Описание в окне буквенных обозначений.
  6. Создание поля для введения пользователем U, Ui, Ii, i.
  7. Создание  в окне ячеек для выведения конечного результата.
  8. Создание в окне кнопок.

 

Код программы:

 

# *- 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)/(U*S))

    return v

def D_0(U0,I0,U,x):

    n=round((sqrt((U0*I0)/x/(U*2))),4)

    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


 

Алгоритм 

  1. Подключение библиотек.
  2. Создание главного окна.
  3. Создание графика относительно исходных данных.
  4. Создание таблицы значений.
  5. Отображение главного окна.

 

Код программы:

 

Результат решения:

# *- 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)-(w0**2))**2) +  4*(zn**2)*(wp**2)*(w0**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='lightyellow', width =200, height=220)

canvas2.grid(row=1, column=4,rowspan=10,columnspan=10,padx=10,pady=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,fill="blue",smooth=1)

    canvas2.create_text(40,75,text="при z=0.1")

 

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,fill="red",smooth=1)

    canvas2.create_text(40,175,text="при  z=0.35")

 

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,fill="black",smooth=1)

    canvas2.create_text(105,209,text="при  z=0.6")

 

 

y_axe=[]

yy=(10,0)

y_axe.append(yy)

yy=(10,220)

y_axe.append(yy)

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

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

canvas2.create_line(10,3,12,8,fill="black",width=1)

canvas2.create_text(25,15,text="A(W)")

 

x_axe=[]

xx=(0,200)

x_axe.append(xx)

xx=(299,200)

x_axe.append(xx)

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

canvas2.create_line(192,198,197,200,fill="black",width=1)

canvas2.create_line(192,202,197,200,fill="black",width=1)

canvas2.create_text(190,213,text="W")

 

 

 

 

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.yview)

text1.configure(yscrollcommand=scr1.set)

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]:

,

используя одну из трех квадратурных формул:

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