Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения
 

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

Работа из раздела: «Кибернетика»


        Санкт-Петербургский государственный технологический институт
                         ( Технический университет)


 Кафедра Математического моделирования и оптимизации химико-технологических
                                  процессов



                                                                 Факультет 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) расч.   | [pic]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); относительную погрешность.

[pic]     (2)
Для вычисления коэффициента A необходимо решить систему уравнений:

[pic]        (3)

Для этого следует решить уравнения:

[pic] (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



                          Рабочая форма с данными:

                                    [pic]



                      Решение задачи с помощью MathCad.

                 [pic]                                Вычисление суммы
элементов массивов:
         [pic]             [pic]           [pic]              [pic]

                         Относительная погрешность:
             [pic]                 [pic]     [pic]


[pic]       [pic]             [pic]               [pic]          [pic]


            Расчет скорости охлаждения по закону Стефана: V=kT^4

[pic]     [pic]  Постоянная Стефана-Больцмана:

                                  [pic]



             [pic]           [pic]
      [pic]                [pic]



График №1 построен по данным, а №2- по расчетам.



                           Решение задачи в Excel

|           |           |  V(I) расч  |    V(I), %  |
|V(I)       |Q(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      |


                            Графики зависимостей:

                                    [pic]


                                    [pic]



                                 Заключение:

На основании полученных в программах данных:
расчетов и графиков, можно сделать вывод, что наиболее прие-млемым языком
программирования является Visual Basic, а закон наиболее точно дающий
схожие результаты с данными опыта является закон Стефана.




ref.by 2006—2022
contextus@mail.ru