Реферат: Создание программных продуктов для решения задач
Санкт-Петербургский государственный технологическийинститут
( Технический университет)
Кафедра Математического моделирования и оптимизациихимико-технологических процессов
Факультет 5
Курс I
Группа 517
Дисциплина: информатика.
КУРСОВАЯ РАБОТА
Тема: Создание программных продуктов для решениязадач.
Студент: Хохленко СергейДмитриевич
Научный руководитель:
Гайков Андрей Владимирович
Санкт-Петербург
2002
Содержание
Введение…………………………………………………………………………3
Задание на работу……………………………………………………………….4
Описаниеметода………………………………………………………………...5
Алгоритм построения решениязадачи……………………………………...…6
Глава I…………………………………………………………………………….7
Проект. Рабочая форма Visual Basic…………………………………………8
Программный код……………………………………………………………..9
Свойстваобъектов……………………………………………………………10
Рабочая форма сданными……………………………………………………11
Глава II……………………………………………………………………….......12
Решение в MathCad’е…………………………………………………………13
Графики №1 и№2.............................................................................................14
Глава III..................................................................................................................15
Решение задачи в Excei’е.................................................................................16
Графикизависимостей......................................................................................17
Заключение.............................................................................................................18
Аннотация..............................................................................................................19
Аннотация
Вданной курсовой работе рассмотрен Метод наименьших квадратов, позволяющий вестирасчеты в различных физико-химических задачах.
Главными законами,необходимыми для решения поставленной задачи, являются: Закон Ньютона и ЗаконСтефана-Больцмана.
Работа выполнена в трехпрограммных средах: Visual Basic, Excelи Math-Cad. Программныйкод, написанный на языке программирования Visual Basic,читается с легкостью и прост в понимании. Построенные графики позволяют выбратьнаиболее подходящий закон для расчета скорости охлаждения.
Введение
Современноепрограммирование развивается и широко используется для решения таких задач, какпрограммирование баз данных, реализация обмена между приложениями,использование сетевых технологий и т.д.; современ-ные системы программированияобеспечивают генерацию кода.
Большинствокомпьютеров в рамках всего мира работают под управлением операционной системы Windows корпорации Microsoft. Каждый пользователь хотя бы раз в жизни работал с приложениями Word,Excel или Access.Практические задачи иногда требуют обмена данными между прило-жениями; пусть,например, имеется база данных, нужно сделать запрос к ней, а затем –математическую обработку результатов запроса, которую, можно выполнить только сиспользованием Excel; здесь следует передать резуль-таты запроса вприложение Excel и для этого нужно использовать языкпро-граммирования.
Базовымязыком программирования корпорации Microsoft является Visual Basic. Современные его версии позволяют, и реализовать впрограмме SQL-запрос к базе данных и выполнить вышеупомянутую передачуданных. Особенность языка Visual Basic заключается в репликации исинхронизации баз данных.
Курсоваяработа включает в себя три различных варианта ввода данных значений: автоматический(наиболее простой) и два ручных: открытие файла и самостоятельный ввод каждого отдельногочисла (значения). Кроме этого, работа включает в себя универсальный инженерныйкалькулятор, необходи-мый для каких либо вычислений. Построенные графикизависимостей в про-граммах позволяют выбрать наиболее приемлемый закон, а такжесам язык программирования.
Задание №7
Закон Ньютона имеет вид: V=AQ(1)
где V- скорость охлаждения, а Q- избытоктемпературы.
По данным наблюдений, представляемым в таблице:
№ Опыта V(I) Q(I) V(I) расч./>V(I)
1 8.81 220 2 7.40 200 3 6.10 180 4 4.89 160 5 3.88 140 6 3.02 120 7 2.30 100Найти значения коэффициента A;скорость охлаждения, вычисляемую по формуле (1); относительную погрешность.
/> (2)
Для вычисления коэффициента Aнеобходимо решить систему уравнений:
/> (3)
Для этого следует решитьуравнения:
/> (4)
Если максимальная относительная погрешность (2)окажется больше 5%,
проверить, согласуется ли сданными опыта закон Стефана: V=k((Q+273)^4-273^4) (5).
Обозначив Z=k((Q+273)^4-273^4),где k=5,67*10^(-9), подобрать коэффи-циент A,скорость охлаждения, относительную погрешность, решить сле-дующую системууравнений:
V=AZ (6)
План решения задачи
1. Составить алгоритм и программувычисления коэффициента А,
V(I) расчетногои относительную погрешность.
2. Вычисление А оформить в видеподпрограммы общего вида.
3. Напечатать таблицы.
4. Построить графики зависимостей V(I)расчетного и V(I) от Q(I).
5. Выбрать закон, по которомурасчетные значения V(I) расчетные лучше согласуются с данными опыта.
Проект. Рабочая форма VisualBasic:
/>
Программный код в среде VisualBasic:
Option Explicit
Dim I As Integer
Dim a(7) As Single
‘ВВОД ЭЛЕМЕНТОВ МАССИВОВ
Private Sub Комманда1_Click()
Dim V(7) AsSingle, Q(7) As Single
MSFlexGrid1.TextMatrix(0,0) = “№ Опыта”
MSFlexGrid1.TextMatrix(0,1) = “ V(I) “
MSFlexGrid1.TextMatrix(0,2) = “ Q(I) “
MSFlexGrid1.TextMatrix(0,3) = “ V(I)расч.”
MSFlexGrid1.TextMatrix(0,4) = “V(I), %”
For I = 1 To 7
MSFlexGrid1.TextMatrix(I,0) = I
Next I
'АВТОМАТИЧЕСКИЙ ВВОД
If Проверка1.Value = 1 Then
Open “A:\Данные.txt” For Input As #1
For I = 1 To 7
Input #1, V(I),Q(I)
MSFlexGrid1.TextMatrix(I, 1) = V(I)
MSFlexGrid1.TextMatrix(I, 2) = Q(I)
Next I
Close #1
End If
‘ВВОД ЭЛЕМЕНТОВ МАССИВОВ ВРУЧНУЮ
If Проверка1.Value= 0 Then
For I = 1 To 7
MSFlexGrid1.TextMatrix(I, 1) = InputBox(“ВВЕДИТЕ ЭЛЕМЕНТ МАССИВА V(I)”)
Next I
For I = 1 To 7
MSFlexGrid1.TextMatrix(I, 2) = InputBox(“ВВЕДИТЕ ЭЛЕМЕНТ МАССИВА Q(I)”)
Next I
End If
End Sub
'РЕШЕНИЕ A=V/Q, НАХОЖДЕНИЕMIN (MAX), СУММЫ ЭЛЕМЕНТОВ МАССИВОВ
Private Sub Комманда2_Click()
Список1.Clear
For I = 1 To 7
Список1.AddItem (CCur(MSFlexGrid1.TextMatrix(I,1) / MSFlexGrid1.TextMatrix(I, 2)))
Next I
Dim Summ As Single
Summ = 0
For I = 1 To 7
Summ = Summ +MSFlexGrid1.TextMatrix(I, 1)
Next I
Текст1.Text = CSng(Summ)
Dim Summa AsSingle
For I = 1 To 7
Summa = Summa +MSFlexGrid1.TextMatrix(I, 2)
Next I
Текст2.Text = CSng(Summa)
‘РАСЧЕТ КОЭФФИЦИЕНТА “А”
Dim a As Single
a = Текст1.Text/ Текст2.Text
Текст3.Text = CSng(a)
End Sub
‘V(I)РАСЧЕТНАЯ
Private Sub Комманда3_Click()
For I = 1 To 7
MSFlexGrid1.TextMatrix(I,3) = Текст3.Text * MSFlexGrid1.TextMatrix(I, 2)
Next I
End Sub
‘ПОГРЕШНОСТЬ
Private Sub Комманда4_Click()
For I = 1 To 7
MSFlexGrid1.TextMatrix(I,4) = Ccur(Sqr((((MSFlexGrid1.TextMatrix(I, 3) – MSFlexGrid1.TextMatrix(I, 1)) /MSFlexGrid1.TextMatrix(I, 1)) * 100) ^ 2))
Next I
‘СОРТИРОВКА
Dim min As Single
Dim max As Single
min = MSFlexGrid1.TextMatrix(7,4)
‘НАХОЖДЕНИЕ MIN
For I = 1 To 7
IfMSFlexGrid1.TextMatrix(I, 4) < min Then min = MSFlexGrid1.TextMatrix(I, 4)
Next I
Текст4.Text = CSng(min)
max =MSFlexGrid1.TextMatrix(1, 4)
‘НАХОЖДЕНИЕ MAX
For I = 1 To 7
IfMSFlexGrid1.TextMatrix(I, 4) > max Then max = MSFlexGrid1.TextMatrix(I, 4)
Next I
Текст6.Text = CSng(max)
End Sub
Private Sub Комманда5_Click()
'ЗАКОН СТЕФАНА-БОЛЬЦМАНА
'V=k*Q^4, где k-постояннаяСтефана-Больцмана: k = 5.67 * 10 ^ -8
Dim z(7) AsSingle, V(7) As Single
For I = 1 To 7
z(I) =0.0000000567 * ((MSFlexGrid1.TextMatrix(I, 2) + 273) ^ 4 – 273 ^ 4)
‘V=AZ
V(I) = 0.1 * Текст3.Text* z(I)
'ВЫВОД СКОРОСТИ ОХЛАЖДЕНИЯ
Список2.AddItem(Ccur(V(I)))
Next I
End Sub
Private Sub Комманда6_Click()
End
End Sub
Private SubCommand7_Click()
Dim V(7) AsSingle, Q(7) As Single
MSFlexGrid1.TextMatrix(0,0) = “№ Опыта”
MSFlexGrid1.TextMatrix(0,1) = “ V(I) “
MSFlexGrid1.TextMatrix(0,2) = “ Q(I) “
MSFlexGrid1.TextMatrix(0,3) = “ V(I)расч.”
MSFlexGrid1.TextMatrix(0,4) = “V(I), %”
For I = 1 To 7
MSFlexGrid1.TextMatrix(I,0) = I
Next I
'АВТОМАТИЧЕСКИЙ ВВОД
If Проверка1.Value = 1 Then
Open “A:\Данные.txt” For Input As #1
For I = 1 To 7
Input #1, V(I),Q(I)
MSFlexGrid1.TextMatrix(I, 1) = V(I)
MSFlexGrid1.TextMatrix(I, 2) = Q(I)
Next I
Close #1
End If
‘ВВОД ЭЛЕМЕНТОВ МАССИВОВ ВРУЧНУЮ
If Проверка1.Value= 0 Then
For I = 1 To 7
MSFlexGrid1.TextMatrix(I, 1) = InputBox(“ВВЕДИТЕ ЭЛЕМЕНТ МАССИВА V(I)”)
Next I
For I = 1 To 7
MSFlexGrid1.TextMatrix(I, 2) = InputBox(“ВВЕДИТЕ ЭЛЕМЕНТ МАССИВА Q(I)”)
Next I
End If
Список1.Clear
For I = 1 To 7
Список1.AddItem (Ccur(MSFlexGrid1.TextMatrix(I,1) / MSFlexGrid1.TextMatrix(I, 2)))
Next I
Dim Summ As Single
Summ = 0
For I = 1 To 7
Summ = Summ +MSFlexGrid1.TextMatrix(I, 1)
Next I
Текст1.Text = CSng(Summ)
Dim Summa AsSingle
For I = 1 To 7
Summa = Summa +MSFlexGrid1.TextMatrix(I, 2)
Next I
Текст2.Text = CSng(Summa)
‘РАСЧЕТ КОЭФФИЦИЕНТА “А”
Dim a As Single
a = Текст1.Text/ Текст2.Text
Текст3.Text = CSng(a)
For I = 1 To 7
MSFlexGrid1.TextMatrix(I,3) = Текст3.Text * MSFlexGrid1.TextMatrix(I, 2)
Next I
For I = 1 To 7
MSFlexGrid1.TextMatrix(I,4) = Ccur(Sqr((((MSFlexGrid1.TextMatrix(I, 3) – MSFlexGrid1.TextMatrix(I, 1)) /MSFlexGrid1.TextMatrix(I, 1)) * 100) ^ 2))
Next I
‘СОРТИРОВКА
Dim min As Single
Dim max As Single
min =MSFlexGrid1.TextMatrix(7, 4)
‘НАХОЖДЕНИЕ MIN
For I = 1 To 7
IfMSFlexGrid1.TextMatrix(I, 4) < min Then min = MSFlexGrid1.TextMatrix(I, 4)
Next I
Текст4.Text = CSng(min)
max =MSFlexGrid1.TextMatrix(1, 4)
‘НАХОЖДЕНИЕ MAX
For I = 1 To 7
IfMSFlexGrid1.TextMatrix(I, 4) > max Then max = MSFlexGrid1.TextMatrix(I, 4)
Next I
Текст6.Text = CSng(max)
'ЗАКОН СТЕФАНА-БОЛЬЦМАНА
'V=k*Q^4, где k-постояннаяСтефана-Больцмана: k = 5.67 * 10 ^ -8
Dim z(7) AsSingle, W(7) As Single
For I = 1 To 7
z(I) =0.0000000567 * ((MSFlexGrid1.TextMatrix(I, 2) + 273) ^ 4 – 273 ^ 4)
‘V=AZ
W(I) = 0.1 * Текст3.Text* z(I)
'ВЫВОД СКОРОСТИ ОХЛАЖДЕНИЯ
Список2.AddItem(Ccur(W(I)))
Next I
End Sub
Private Sub mnuВключить_Click()
'ВКЛЮЧЕНИЕ КАЛЬКУЛЯТОРА
‘OLE1.SourceDoc = “C:\WINDOWS\CALC.EXE”
OLE1.Action = 7
End Sub
Private Sub mnuВыход_Click()
End
End Sub
Private Sub mnuОткрыть_Click()
Dim V(7) AsSingle, Q(7) As Single
MSFlexGrid1.TextMatrix(0,0) = “№ Опыта”
MSFlexGrid1.TextMatrix(0,1) = “ V(I) “
MSFlexGrid1.TextMatrix(0,2) = « Q(I) «
MSFlexGrid1.TextMatrix(0,3) = “ V(I)расч.”
MSFlexGrid1.TextMatrix(0,4) = «V(I), %»
For I = 1 To 7
MSFlexGrid1.TextMatrix(I,0) = I
Next I
‘АВТОМАТИЧЕСКИЙ ВВОД
Open “A:\Данные.txt”For Input As #1
For I = 1 To 7
Input #1, V(I),Q(I)
MSFlexGrid1.TextMatrix(I,1) = V(I)
MSFlexGrid1.TextMatrix(I,2) = Q(I)
Next I
Close #1
End Sub
Private Sub mnuСкрыть_Click()
‘СКРЫТЬ ВРЕМЯ
Часы1.Enabled = False
Текст5.Text = “”
End Sub
Private Sub mnuПоказать_Click()
‘ПОКАЗАТЬ ВРЕМЯ
Часы1.Enabled = True
Часы1.Interval = 250
End Sub
Private Sub Часы1_Timer()
'ВЫВОД ВРЕМЕНИ
Текст5.Text = CStr(Time)
End Sub
Значения свойств объектов:
VERSION 5.00
Object ="{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0";«MSFLXGRD.OCX»
Begin VB.Form Форма1
Caption = «КУРСОВАЯРАБОТА»
ClientHeight = 4905
ClientLeft = 165
ClientTop = 735
ClientWidth = 6660
LinkTopic = «Form1»
ScaleHeight = 4905
ScaleWidth = 6660
StartUpPosition = 3 'WindowsDefault
Begin VB.ListBox Список2
Height = 1425
ItemData = «КУРСОВАЯРАБОТА.frx»:0000
<p/>Left = 3600
List = «КУРСОВАЯРАБОТА.frx»:0002
TabIndex = 16
Top = 3240
Width = 1095
End
Begin VB.ListBox Список1
Height = 1425
ItemData = «КУРСОВАЯРАБОТА.frx»:0004
Left = 2400
List = «КУРСОВАЯРАБОТА.frx»:0006
TabIndex = 15
Top = 3240
Width = 1095
End
Begin VB.TextBox Текст6
Height = 285
Left = 5040
TabIndex = 14
Top = 3480
Width = 1095
End
Begin VB.TextBox Текст5
Height = 285
Left = 5280
TabIndex = 13
Top = 360
Width = 855
End
Begin VB.TextBox Текст 4
Height = 285
Left = 5040
TabIndex = 12
Top = 2880
Width = 1095
End
Begin VB.TextBox Текст 3
Height = 285
Left = 5040
TabIndex = 11
Top = 2280
Width = 1095
End
Begin VB.TextBox Текст 2
Height = 285
Left = 5040
TabIndex = 10
Top = 1680
Width = 1095
End
Begin VB.TextBox Текст 1
Height = 285
Left = 5040
TabIndex = 9
Top = 1080
Width = 1095
End
Begin VB.Timer Часы1
Interval = 250
Left = 4800
Top = 3840
End
Begin VB.CommandButton Комманда6
Caption = «ВЫХОД»
Height = 195
Left = 240
TabIndex = 7
Top = 4440
Width = 1575
End
Begin VB.CommandButton Комманда 5
Caption = «ПРОВЕРКА»
Height = 195
Left = 240
TabIndex = 6
Top = 4200
Width = 1575
End
Begin VB.CommandButton Комманда 4
Caption = «ПОГРЕШНОСТЬ»
Height = 195
Left = 240
TabIndex = 5
Top = 3960
Width = 1575
End
Begin VB.CommandButton Комманда 3
Caption = «Vрасч.=AQ»
Height = 195
Left = 240
TabIndex = 4
Top = 3720
Width = 1575
End
Begin VB.CommandButton Комманда 2
Caption = «РЕШЕНИЕ»
Height = 195
Left = 240
TabIndex = 3
Top = 3480
Width = 1575
End
Begin VB.CommandButton Комманда 1
Caption = «ВВЕСТИ»
Height = 195
Left = 240
TabIndex = 2
Top = 3240
Width = 1575
End
Begin VB.CheckBox Проверка1
Caption = "АВТОМАТИЧЕСКИЙ ВВОД"
Height = 375
Left = 120
TabIndex = 1
Top = 240
Width = 2775
End
Begin MSFlexGridLib.MSFlexGridMSFlexGrid1
Height = 2055
Left = 0
TabIndex = 0
<p/>Top = 840
Width = 4935
_ExtentX = 8705
_ExtentY = 3625
_Version = 393216
Rows = 8
Cols = 5
End
Begin VB.OLE OLE1
Class = «Package»
Height = 495
Left = 5280
OleObjectBlob = «КУРСОВАЯРАБОТА.frx»:0008
SourceDoc = «C:\WINDOWS\CALC.EXE»
TabIndex = 24
Top = 3840
Width = 855
End
Begin VB.Label Метка8
Caption = " ПРОВЕРКА"
Height = 255
Left = 3600
TabIndex = 23
Top = 3000
Width = 1095
End
Begin VB.Label Метка 7
Caption = " A=V/Q"
Height = 255
Left = 2280
TabIndex = 22
Top = 3000
Width = 1095
End
Begin VB.Label Метка 6
Caption = " MaxV(I), %"
Height = 255
Left = 5040
TabIndex = 21
Top = 2640
Width = 1095
End
Begin VB.Label Метка 5
Caption = " MinV(I), %"
Height = 255
Left = 5040
TabIndex = 20
Top = 3240
Width = 1095
End
Begin VB.Label Метка 4
Caption = " Коэфф-нт А"
Height = 255
Left = 5040
TabIndex = 19
Top = 2040
Width = 1095
End
Begin VB.Label Метка 3
Caption = " Сумма Q(I)"
Height = 255
Left = 5040
TabIndex = 18
Top = 1440
Width = 1095
End
Begin VB.Label Метка 2
Caption = " Сумма V(I)"
Height = 255
Left = 5040
TabIndex = 17
Top = 840
Width = 1095
End
Begin VB.Label Метка 1
Caption = «ТЕКУЩЕЕВРЕМЯ»
Height = 255
Left = 3720
TabIndex = 8
Top = 360
Width = 1575
End
Begin VB.Menu mnuФайл
Caption = «Файл»
Begin VB.Menu mnuОткрыть
Caption = «Открыть»
End
Begin VB.Menu mnuВыход
Caption = «Выход»
End
End
Begin VB.Menu mnuВремя
Caption = «Время»
Begin VB.Menu mnuПоказать
Caption = «Показать»
End
Begin VB.Menu mnuСкрыть
Caption = «Скрыть»
End
End
Begin VB.Menu mnuКалькулятор
Caption = «Калькулятор»
Begin VB.Menu mnuВключить
Caption = «Включить»
End
End
End
Attribute VB_Name = «Форма1»
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Рабочая форма с данными:
/>
Решение задачи с помощью MathCad.
/> Вычислениесуммы элементов массивов:
/> /> /> />
Относительная погрешность:
/> /> />
/> /> /> /> />
Расчетскорости охлаждения по закону Стефана: V=kT^4
/> /> Постоянная Стефана-Больцмана:
/>
/> />
/> />
График №1 построен по данным,а №2- по расчетам.
Решение задачи в Excel
V(I) Q(I) V(I) расч V(I), % 8,81 220 7,15 18,84222 7,4 200 6,5 12,16216 6,1 180 5,85 4,098361 4,89 160 5,2 6,339468 3,88 140 4,55 17,26804 3,02 120 3,9 29,13907 2,3 100 3,25 41,30435 36,4 1120 A=V/Q КОЭФ. А Z СТЕФАНА 0,040045 0,0325 303,4484467 9,862075 0,037 252,3155307 8,200255 0,033889 207,2734376 6,736387 0,030563 167,8181271 5,454089 0,027714 133,4673316 4,337688 0,025167 103,7605564 3,372218 0,023 78,25907956 2,54342Графики зависимостей:
/>
/>
Заключение:
На основании полученных впрограммах данных:
расчетов и графиков, можносделать вывод, что наиболее прие-млемым языком программирования является Visual Basic, а закон наиболее точно дающий схожие результаты сданными опыта является закон Стефана.