Каталог :: Кибернетика

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

          Санкт-Петербургский государственный технологический институт          
                           ( Технический университет)                           
Кафедра Математического моделирования и оптимизации химико-технологических
процессов
                                                                     Факультет 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)

18.81220
27.40200
36.10180
44.89160
53.88140
63.02120
72.30100
Найти значения коэффициента 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) расчетные лучше согласуются с данными опыта. Проект. Рабочая форма Visual Basic: Программный код в среде Visual Basic: Option Explicit Dim I As Integer Dim a(7) As Single ‘ВВОД ЭЛЕМЕНТОВ МАССИВОВ Private Sub Комманда1_Click() Dim V(7) As Single, 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 As Single 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 If MSFlexGrid1.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 If MSFlexGrid1.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) As Single, 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 Sub Command7_Click() Dim V(7) As Single, 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 As Single 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 If MSFlexGrid1.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 If MSFlexGrid1.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) As Single, 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) As Single, 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 'Windows Default Begin VB.ListBox Список2 Height = 1425 ItemData = "КУРСОВАЯ РАБОТА.frx":0000 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.MSFlexGrid MSFlexGrid1 Height = 2055 Left = 0 TabIndex = 0 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 = " Max V(I), %" Height = 255 Left = 5040 TabIndex = 21 Top = 2640 Width = 1095 End Begin VB.Label Метка 5 Caption = " Min V(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, а закон наиболее точно дающий схожие результаты с данными опыта является закон Стефана.