Скриншоты из программы Microsoft Excel
1.4. ПРОГРАММНЫЙ КОД К ВАРИАНТУ № 10
Public Class Form1
Dim x() As Single
Dim I() As Double
Dim Y() As Double
Dim n As Integer
Dim f() As Double
Dim j As Integer
Dim S1 As Double
Dim S2 As Double
Dim S3 As Double
Dim S4 As Double
Dim S5 As Double
Dim a As Double
Dim b As Double
Dim RowI As Integer
Dim ColI As Integer
Dim sigma As Double
Dim sigmaA As Double
Dim sigmaB As Double
Dim absalutA As Double
Dim absalutB As Double
Dim I0 As Double
Dim T1_2 As Double
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'n = CSng(InputBox("Введите число n = "))
n = CSng(TextBox6.Text)
ReDim x(n)
ReDim I(n)
ReDim Y(n)
AxMSFlexGrid1.Col = 1 'первый столбец
AxMSFlexGrid1.Row = 0 'шапка
AxMSFlexGrid1.Text = "час" 'заголовок в табл
'ввод τ
For j As Integer = 1 To n
x(j) = CSng(InputBox("Введите число t(" & j & ")"))
''''''''''''''''' TextBox1.Text = TextBox1.Text + CStr(x(j)) + vbCrLf
AxMSFlexGrid1.Col = 1
AxMSFlexGrid1.Row = j ' - 1
AxMSFlexGrid1.Text = CStr(x(j))
'номера строк-----------------------
AxMSFlexGrid1.Row = j
AxMSFlexGrid1.Col = 0
AxMSFlexGrid1.Text = CStr(j)
Next
AxMSFlexGrid1.Col = 2 '2й столбец
AxMSFlexGrid1.Row = 0 ' шапка
AxMSFlexGrid1.Text = "имп./мин" 'заголовок табл
'ввод I
For j As Integer = 1 To n
I(j) = CSng(InputBox("Введите число I(" & j & ")"))
'''''''''''''''''''''''''' TextBox2.Text = TextBox2.Text + CStr(I(j)) + vbCrLf
'AxMSFlexGrid1.Col = 2
AxMSFlexGrid1.Row = j ' - 1
AxMSFlexGrid1.Text = CStr(I(j))
Y(j) = Math.Log(I(j))
Next
myFunction()
End Sub
Private Sub myFunction()
S1 = 0
S2 = 0
S3 = 0
S4 = 0
S5 = 0
AxMSFlexGrid1.Row = 0
AxMSFlexGrid1.Col = 3
AxMSFlexGrid1.Text = "x" 'S1
AxMSFlexGrid1.Col = 4
AxMSFlexGrid1.Text = "y" 'S2
AxMSFlexGrid1.Col = 5
AxMSFlexGrid1.Text = "x*y" 'S3
AxMSFlexGrid1.Col = 6
AxMSFlexGrid1.Text = "x^2" 'S4
AxMSFlexGrid1.Col = 7
AxMSFlexGrid1.Text = "y^2" 'S5
For j As Integer = 1 To n
AxMSFlexGrid1.Row = j
AxMSFlexGrid1.Col = 3
S1 = x(j) + S1
AxMSFlexGrid1.Text = CStr(Math.Round(x(j), 2))
AxMSFlexGrid1.Col = 4
S2 = S2 + Y(j)
AxMSFlexGrid1.Text = CStr(Math.Round(Y(j), 2))
AxMSFlexGrid1.Col = 5
S3 = S3 + x(j) * Y(j)
AxMSFlexGrid1.Text = CStr(Math.Round(x(j) * Y(j), 2))
AxMSFlexGrid1.Col = 6
S4 = S4 + x(j) ^ 2
AxMSFlexGrid1.Text = CStr(Math.Round(x(j) ^ 2, 2))
AxMSFlexGrid1.Col = 7
S5 = S5 + Y(j) ^ 2
AxMSFlexGrid1.Text = CStr(Math.Round(Y(j) ^ 2, 2))
Next
AxMSFlexGrid1.Row = n + 1
AxMSFlexGrid1.Col = 0
AxMSFlexGrid1.Text = "сумма"
AxMSFlexGrid1.Col = 3
AxMSFlexGrid1.Text = CStr(Math.Round((S1), 2)) 'округляем до второго числа
AxMSFlexGrid1.Col = 4
AxMSFlexGrid1.Text = CStr(Math.Round((S2), 2))
AxMSFlexGrid1.Col = 5
AxMSFlexGrid1.Text = CStr(Math.Round((S3), 2))
AxMSFlexGrid1.Col = 6
AxMSFlexGrid1.Text = CStr(Math.Round((S4), 2))
AxMSFlexGrid1.Col = 7
AxMSFlexGrid1.Text = CStr(Math.Round((S5), 2))
'-----------------------формулы----------------------
a = 0
b = 0
a = (n * S3 - S1 * S2) / (n * S4 - S1 ^ 2)
b = (S4 * S2 - S1 * S3) / (n * S4 - S1 ^ 2)
' --------------------------------------------------
TextBox4.Text = CStr(a) ' вывод a
TextBox5.Text = CStr(b) 'вывод b
ReDim f(n)
TextBox3.Text = "" 'ОЧИСТИТЬ
For j As Integer = 1 To n
f(j) = a * x(j) + b
TextBox3.Text = TextBox3.Text + CStr(f(j)) + vbCrLf
Next
'расчет дисперсии
sigma = (1 / (n * (n - 2))) * (n * S5 - S2 ^ 2 - ((n * S3 - S1 * S2) ^ 2) / (n * S4 - S1 ^ 2)) ' Math.Sqrt корень
'вывод сигма ^2
TextBox8.Text = CStr(sigma)
'---------------------------дисперсия параметра a и b-----------------
sigmaA = (n * sigma) / (n * S4 - S1 ^ 2)
sigmaB = ((1 / n) * S4 * sigmaA)
TextBox9.Text = CStr(sigmaA)
TextBox10.Text = CStr(sigmaB)
'---------------------------------------------------------
absalutA = Math.Sqrt(sigmaA) * CSng(TextBox11.Text)
absalutB = Math.Sqrt(sigmaB) * CSng(TextBox11.Text)
Label11.Text = CStr(a) + " +/- " + CStr(absalutA)
Label12.Text = CStr(b) + " +/- " + CStr(absalutB)
I0 = Math.Exp(b)
T1_2 = 0.693 / a
TextBox12.Text = CStr(I0)
TextBox13.Text = CStr(T1_2)
End Sub
Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged
If TextBox6.Text <> "" Then
AxMSFlexGrid1.Rows = CInt(TextBox6.Text) + 2 '+1тк верхняя строка серая +1 для сумм
End If
End Sub
Private Sub AxMSFlexGrid1_DblClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AxMSFlexGrid1.DblClick
End Sub
Private Sub TextBox7_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox7.TextChanged
End Sub
Private Sub AxMSFlexGrid1_ClickEvent(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AxMSFlexGrid1.ClickEvent
TextBox7.Text = AxMSFlexGrid1.Text 'окно для редактирования данных табл
RowI = AxMSFlexGrid1.Row 'номер строки
ColI = AxMSFlexGrid1.Col ' номер столбца
If TextBox7.Text <> "" And (ColI = 1 Or ColI = 2) Then 'если первый или 2й столбец то окошко редактирования и кнопка активны
TextBox7.Enabled = True
Button4.Enabled = True
Else : TextBox7.Enabled = False
Button4.Enabled = False
End If
' строка состояния
ToolStripStatusLabel1.Text = "строка=" + CStr(RowI) + " " + "столбец=" + CStr(ColI)
End Sub
Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'редактирование таблицы
If TextBox7.Text <> "" And (ColI = 1 Or ColI = 2) Then
AxMSFlexGrid1.Row = RowI
AxMSFlexGrid1.Col = ColI
If ColI = 1 Then '1й столбец x
x(RowI) = CSng(TextBox7.Text)
AxMSFlexGrid1.Text = TextBox7.Text
End If
If ColI = 2 Then ' второй столбец I
I(RowI) = CSng(TextBox7.Text)
AxMSFlexGrid1.Text = TextBox7.Text
End If
myFunction() 'процедура расчета
Else : TextBox7.Text = ""
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'--------------------------------------------------------
Chart1.Series.Clear()
Chart1.Series.Add("(Ipi;τ)")
Chart1.Series.Add("Ipi(τ)")
Chart1.ChartAreas("ChartArea1").AxisX.Title = "τ, ч."
Chart1.ChartAreas("ChartArea1").AxisY.Title = "Ipi, имп./мин."
Chart1.Series("Ipi(τ)").ChartType = DataVisualization.Charting.SeriesChartType.Spline
Chart1.Series("(Ipi;τ)").ChartType = DataVisualization.Charting.SeriesChartType.FastPoint
Chart1.Series("(Ipi;τ)").Color = Color.Red
Chart1.Series("Ipi(τ)").Color = Color.Blue
Chart1.Series("(Ipi;τ)").BorderWidth = 3
Chart1.Series("Ipi(τ)").BorderWidth = 2
For j As Integer = 1 To n
Chart1.Series("(Ipi;τ)").Points.AddXY(x(j), Y(j))
Chart1.Series("Ipi(τ)").Points.AddXY(x(j), f(j))
Next
'----------------------------------------------------------------
'---------------------ЭКСПЕРЕМЕНТАЛЬНЫЕ ДАННЫЕ
Chart2.Series.Clear()
Chart2.Series.Add("(I;τ)")
'Chart2.Series.Add("f(x)")
Chart2.ChartAreas("ChartArea1").AxisX.Title = "τ, ч."
Chart2.ChartAreas("ChartArea1").AxisY.Title = "I, имп./мин." ', f(x)"
'Chart2.Series("f(x)").ChartType = DataVisualization.Charting.SeriesChartType.Spline
Chart2.Series("(I;τ)").ChartType = DataVisualization.Charting.SeriesChartType.FastPoint
Chart2.Series("(I;τ)").Color = Color.Red
'Chart2.Series("f(x)").Color = Color.Blue
Chart2.Series("(I;τ)").BorderWidth = 3
' Chart2.Series("f(x)").BorderWidth = 2
For j As Integer = 1 To n
Chart2.Series("(I;τ)").Points.AddXY(x(j), I(j))
' Chart2.Series("f(x)").Points.AddXY(x(j), f(j))
Next
End Sub
End Class
ВЫВОДЫ
В процессе работы над курсовой работой проведен анализ методов статистической обработки экспериментальных данных. Разработано программное обеспечение для построения статистической модели методом наименьших квадратов в программах Microsoft Visual Studio и Microsoft Excel. Совпадение результатов двух программ доказывает правильность написания программного обеспечения.
ЛИТЕРАТУРА
1. ГОСТ Р 8.736-2011 «Государственная система обеспечения единства измерений. Измерения прямые многократные. Методы обработки результатов измерений. Основные положения».
2 Агапьев Б.Д., Белов В.Н., Кесаманлы Ф.П., Козловский В.В., Марков С.И. Обработка экспериментальных данных. Учеб. пособие. – СПб.:АОЗТ «Констрой». – 84 с.
3 Симонович, С.В. Информатика. Базовый курс: Учебник для вузов / С.В. Симонович.- СПб.: Питер, 2011. - 640 с.
4 Информатика: учебник под редакцией В.В. Трофимова. Электронные текстовые данные. – М: Юрайт, 2012. – 911 с. (ЭБ)
5 Шапорев, С.Д. Информатика. Теоретический курс и практические занятия / С.Д. Шапорев. - СПб.: БХВ, 2008. - 469 с.