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

Автор работы: Пользователь скрыл имя, 20 Ноября 2012 в 23:07, курсовая работа

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

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

Содержание работы

Введение. 3
Задача 1. Расчет трансформатора питания 4
Задача2.Расчет и построение амплитудно-частотной характеристики колебательного контура 8
Задача 3. Численное интегрирование аналитически заданной функции 12
Задача 4. Численное решение нелинейных уравнений с заданной точностью. 16
Задача 5. Численное решение дифференциальных уравнений первого порядка 21
Заключение. 25
Используемая литература: 26

Содержимое работы - 1 файл

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

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

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

«Уральский федеральный Университет  – УрФУ»

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

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

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

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

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

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

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

вариант № 7

Выполнил

Студент:Меркулов И.А.

Группа:М – 110501

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

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

2012

 

Оглавление

 

Введение.

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

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

 

Цель  работы:

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

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

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

 

Задачи:

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

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

 

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

 

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

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

Исходные  данные

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

(мм).

 

Алгоритм решения

  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*

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=',Ko))

    Do=sqrt(P/(2*U))

    Do='%.3f' % Do

    Do_label.configure(text=('Do=',Do))

    Pk=38*Ui[x]*1.05/S

    Pk='%.3f' % Pk

    Ki_label.configure(text=('Ki=',Pk))

    Pd=sqrt(Ii[x-1]/2)

    Pd='%.3f' % Pd

    Di_label.configure(text=('Di=',Pd))

       

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()

 

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

 

Вывод

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

 

Задача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шаг

4,5

5,5

11

0,1

0,6

0,25


 

Алгоритм 

  1. Подключение библиотек.
  2. Создание главного окна.
  3. Создание графика относительно исходных данных.
  4. Создание таблицы значений амплитудно-частотной характеристики A(W) при различных значениях_Z.
  5. Отображение главного окна программы, включающего в себя исходные данные, таблицу значений A(W) и график амплитудно-частотной характеристики, выполненный по точкам, соответствующим табличным значениям.

Код:

# *- 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-W0**2)**2+4*Z**2*WP**2*W0**2))

 

root = Tk()           

root.title("Задача 2")

frame = Frame(root)

frame.pack()

#создание заголовка

t1_label = Label(frame, bg='wheat', text="Расчет амплитудно-частотной  характеристики колебательного контура", font='arial 14')

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-относительный  коэффициент затухания изменяется  от Zнач=0.1 до Zкон=0.6 с шагом 0.25")

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,fill="#2a08e1",smooth=1)

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

canvas1.create_line(18,8,20,3,fill="black",width=1)

canvas1.create_line(20,3,22,8,fill="black",width=1)

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

#создание оси Оx

x_axe=[]

xx=(20,470)

x_axe.append(xx)

xx=(500,470)

x_axe.append(xx)

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

canvas1.create_line(492,468,497,470,fill="black",width=1)

canvas1.create_line(492,472,497,470,fill="black",width=1)

canvas1.create_text(495,478,text="x")

#

canvas1.create_text(15,470,text="0")

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,text="y2=A(W), Z=0.25")

canvas1.create_line(230, 275, 287, 369, fill="black", smooth=1)

canvas1.create_text(230,450,text="y3=A(W), Z=0.6")

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.

Из графика видно, что при увеличении относительного коэффициента затухания амплитуда резонансного контура возрастает при средних значениях текущей частоты.

 

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

Постановка  задачи. По заданному выражению аналитической функции f(x) вычислить приближенно определенный интеграл от этой функции на заданном интервале [a,b]:

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