Курсовая работа (т): Разработка программного обеспечения для построения статистической модели методом наименьших квадратов

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

.

Для оценки адекватности модели, на практике могут быть использованы следующие оценки: корреляционное отношение η и средняя относительная ошибка ε:

, (10)

где  - среднее значение выходного параметра.

 (11)

В настоящее время существует ряд нелинейных зависимостей, которые могут быть приведены к линейному виду yi=a·xi+b. Операция приведения нелинейной зависимости к линейному виду называется линеаризацией.

Вариант 10. Определить начальную скорость счета I0 и период полураспада T1/2 радиоактивного элемента по зависимости скорости счета от времени:

,  (12)

Приведем нелинейное уравнение (12) к линейному виду. Прологарифмируем обе части уравнения:


,

в результате получим уравнение yi=b+a·xi или yi=a·xi+b.

Таким образом, для того, чтобы найти предэкспоненциальный множитель - начальную скорость счета I0 и период полураспада T1/2 радиоактивного элемента, необходимо проделать следующие действия:

1. yi=ln(Ii), xi=τi;

. ,  (13)

Кроме этого, следует вычислить среднеквадратические ошибки a и b.

Находим дисперсию:

 (14)

Далее находим дисперсию параметра a:

 (15)

После этого находим дисперсию параметра b:

 (16)

Согласно ГОСТ Р 8.736 доверительная вероятность P=0,95. При такой вероятности P и количестве измерений n=7 количество степеней свободы f=6, значит коэффициент Стьюдента (таблица) равен t=2,44691184879, тогда домножив дисперсии параметров a и b на коэффициент Стьюдента найдем абсолютные ошибки для a и b.

a=a±σa·t=b±σb·t

. I0=eb, T1/2=0,693/а (17)

4. .

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

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

.1 Блок-схема программного комплекса

Для программы Microsoft Visual Studio:


Рис. 2.1

Для программы Microsoft Excel:

Рис. 2.2

2.2 Инструкция пользователя программного комплекса

Для программы Microsoft Visual Studio:

Вводим количество экспериментальных данных n.

Вводим экспериментальные данные τ и I.

Нажимаем кнопку построить график.

Получаем таблицу расчетных данных, искомые a, b, и , а также построенные графики функций I(τ) и Iрi(τ).

Для программы Microsoft Excel:

Записываем экспериментальные τ и I данные в таблицу

Строим график функции I(τ) и линию тренда

Рис. 2.3

Создаем расчетные ячейки относительно экспериментальных данных, а именно, присваиваем xi=τi, yi=Ln(Ii)

Делаем вспомогательные расчеты: xi· xi; xi·yi и yi· yi

Вычисляем суммы всех расчетных данных:

, , , ,

Получаем следующую таблицу:

τ, ч

I, имп./мин.

х, ч

y

х*х

х*y

y*y

1

5

2370

5

7,77

25

38,85

60,38

2

10

1810

10

7,50

100

75,01

56,27

3

15

1390

7,24

225

108,56

52,38

4

20

1060

20

6,97

400

139,32

48,53

5

25

809

25

6,70

625

167,39

44,83

6

35

475

35

6,16

1225

215,72

37,99

7

45

276

45

5,62

2025

252,92

31,59

сумма



155

47,95

4625

997,77

331,96


Находим по формулам (13) a и b

Находим дисперсии σ2, ,  по формулам (14), (15),(16)

Находим абсолютные ошибки для a и b

Находим значение коэффициентов регрессии и  по формулам (17)

Строим график функции Iрi(τ)

Рис. 2.4

2.3 Скриншоты рабочей программы

Скриншоты из программы Microsoft Visual Studio

Рис. 2.5

Рис. 2.6

Рис. 2.7

Рис. 2.8

Скриншоты из программы Microsoft Excel

Рис. 2.9

Рис. 2.10

Рис. 2.11

Рис. 2.12

2.4 Программный код

Class Form1

'n = CSng(InputBox("Введите число n = "))= CSng(TextBox6.Text)x(n)I(n)Y(n).Col = 1 'первый столбец.Row = 0 'шапка

AxMSFlexGrid1.Text = "час" 'заголовок в табл

'ввод τj As Integer = 1 To n(j) = CSng(InputBox("Введите число t(" & j & ")"))

''''''''''''''''' TextBox1.Text = TextBox1.Text + CStr(x(j)) + vbCrLf.Col = 1.Row = j ' - 1.Text = CStr(x(j))

'номера строк-----------------------.Row = j.Col = 0.Text = CStr(j).Col = 2 '2й столбец.Row = 0 ' шапка.Text = "имп./мин" 'заголовок табл

'ввод Ij As Integer = 1 To n(j) = CSng(InputBox("Введите число I(" & j & ")"))

'''''''''''''''''''''''''' TextBox2.Text = TextBox2.Text + CStr(I(j)) + vbCrLf

'AxMSFlexGrid1.Col = 2.Row = j ' - 1.Text = CStr(I(j))(j) = Math.Log(I(j))()SubSub myFunction()= 0= 0= 0= 0= 0.Row = 0.Col = 3.Text = "x" 'S1.Col = 4.Text = "y" 'S2.Col = 5.Text = "x*y" 'S3.Col = 6.Text = "x^2" 'S4.Col = 7.Text = "y^2" 'S5j As Integer = 1 To n.Row = j.Col = 3= x(j) + S1.Text = CStr(Math.Round(x(j), 2)).Col = 4= S2 + Y(j).Text = CStr(Math.Round(Y(j), 2)).Col = 5= S3 + x(j) * Y(j).Text = CStr(Math.Round(x(j) * Y(j), 2)).Col = 6= S4 + x(j) ^ 2.Text = CStr(Math.Round(x(j) ^ 2, 2)).Col = 7= S5 + Y(j) ^ 2.Text = CStr(Math.Round(Y(j) ^ 2, 2)).Row = n + 1.Col = 0.Text = "сумма".Col = 3.Text = CStr(Math.Round((S1), 2)) 'округляем до второго числа.Col = 4.Text = CStr(Math.Round((S2), 2)).Col = 5.Text = CStr(Math.Round((S3), 2)).Col = 6.Text = CStr(Math.Round((S4), 2)).Col = 7.Text = CStr(Math.Round((S5), 2))

'-----------------------формулы----------------------= 0= 0= (n * S3 - S1 * S2) / (n * S4 - S1 ^ 2)= (S4 * S2 - S1 * S3) / (n * S4 - S1 ^ 2)

' --------------------------------------------------.Text = CStr(a) ' вывод a.Text = CStr(b) 'вывод bf(n).Text = "" 'ОЧИСТИТЬj As Integer = 1 To n(j) = a * x(j) + b.Text = TextBox3.Text + CStr(f(j)) + vbCrLf

'расчет дисперсии= (1 / (n * (n - 2))) * (n * S5 - S2 ^ 2 - ((n * S3 - S1 * S2) ^ 2) / (n * S4 - S1 ^ 2)) ' Math.Sqrt корень

'вывод сигма ^2.Text = CStr(sigma)

'---------------------------дисперсия параметра a и b-----------------

sigmaA = (n * sigma) / (n * S4 - S1 ^ 2)= ((1 / n) * S4 * sigmaA).Text = CStr(sigmaA).Text = CStr(sigmaB)

'---------------------------------------------------------= Math.Sqrt(sigmaA) * CSng(TextBox11.Text)= Math.Sqrt(sigmaB) * CSng(TextBox11.Text).Text = CStr(a) + " +/- " + CStr(absalutA).Text = CStr(b) + " +/- " + CStr(absalutB)= Math.Exp(b)_2 = 0.693 / a.Text = CStr(I0).Text = CStr(T1_2)SubSub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChangedTextBox6.Text <> "" Then.Rows = CInt(TextBox6.Text) + 2 '+1тк верхняя строка серая +1 для суммIfSubSub AxMSFlexGrid1_DblClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AxMSFlexGrid1.DblClickSubSub TextBox7_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox7.TextChangedSubSub AxMSFlexGrid1_ClickEvent(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AxMSFlexGrid1.ClickEvent

TextBox7.Text = AxMSFlexGrid1.Text 'окно для редактирования данных табл= AxMSFlexGrid1.Row 'номер строки= AxMSFlexGrid1.Col ' номер столбцаTextBox7.Text <> "" And (ColI = 1 Or ColI = 2) Then 'если первый или 2й столбец то окошко редактирования и кнопка активны

TextBox7.Enabled = True.Enabled = True: TextBox7.Enabled = False.Enabled = FalseIf

' строка состояния.Text = "строка=" + CStr(RowI) + " " + "столбец=" + CStr(ColI)SubSub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

'редактирование таблицыTextBox7.Text <> "" And (ColI = 1 Or ColI = 2) Then.Row = RowI.Col = ColIColI = 1 Then '1й столбец x(RowI) = CSng(TextBox7.Text).Text = TextBox7.TextIfColI = 2 Then ' второй столбец I(RowI) = CSng(TextBox7.Text).Text = TextBox7.TextIf() 'процедура расчета: TextBox7.Text = ""IfSubSub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

'--------------------------------------------------------.Series.Clear().Series.Add("(Ipi;τ)").Series.Add("Ipi(τ)").ChartAreas("ChartArea1").AxisX.Title = "τ, ч.".ChartAreas("ChartArea1").AxisY.Title = "Ipi, имп./мин.".Series("Ipi(τ)").ChartType = DataVisualization.Charting.SeriesChartType.Spline.Series("(Ipi;τ)").ChartType = DataVisualization.Charting.SeriesChartType.FastPoint.Series("(Ipi;τ)").Color = Color.Red.Series("Ipi(τ)").Color = Color.Blue.Series("(Ipi;τ)").BorderWidth = 3.Series("Ipi(τ)").BorderWidth = 2j As Integer = 1 To n.Series("(Ipi;τ)").Points.AddXY(x(j), Y(j)).Series("Ipi(τ)").Points.AddXY(x(j), f(j))

Next

'----------------------------------------------------------------

'---------------------ЭКСПЕРЕМЕНТАЛЬНЫЕ ДАННЫЕ.Series.Clear()

Chart2.Series.Add("(I;τ)")

'Chart2.Series.Add("f(x)").ChartAreas("ChartArea1").AxisX.Title = "τ, ч.".ChartAreas("ChartArea1").AxisY.Title = "I, имп./мин." ', f(x)"

'Chart2.Series("f(x)").ChartType = DataVisualization.Charting.SeriesChartType.Spline.Series("(I;τ)").ChartType = DataVisualization.Charting.SeriesChartType.FastPoint.Series("(I;τ)").Color = Color.Red

'Chart2.Series("f(x)").Color = Color.Blue.Series("(I;τ)").BorderWidth = 3

' Chart2.Series("f(x)").BorderWidth = 2j As Integer = 1 To n.Series("(I;τ)").Points.AddXY(x(j), I(j))

' Chart2.Series("f(x)").Points.AddXY(x(j), f(j))SubClass

ВЫВОДЫ

В процессе работы над курсовой работой проведен анализ методов статистической обработки экспериментальных данных. Разработано программное обеспечение для построения статистической модели методом наименьших квадратов в программах Microsoft Visual Studio и Microsoft Excel. Совпадение результатов двух программ доказывает правильность написания программного обеспечения.

ЛИТЕРАТУРА

1. ГОСТ Р 8.736-2011 «Государственная система обеспечения единства измерений. Измерения прямые многократные. Методы обработки результатов измерений. Основные положения».

. Агапьев Б.Д., Белов В.Н., Кесаманлы Ф.П., Козловский В.В., Марков С.И. Обработка экспериментальных данных. Учеб. пособие. - СПб.: АОЗТ «Констрой». - 84 с.

3. Симонович, С.В. Информатика. Базовый курс: Учебник для вузов / С.В. Симонович.- СПб.: Питер, 2011. - 640 с. <http://ibooks.ru/reading.php?productid=23132>

. Информатика: учебник под редакцией В.В. Трофимова. Электронные текстовые данные. - М: Юрайт, 2012. - 911 с. (ЭБ)

. Шапорев, С.Д. Информатика. Теоретический курс и практические занятия / С.Д. Шапорев. - СПб.: БХВ, 2008. - 469 с. <http://ibooks.ru/reading.php?productid=18483>

Источник: https://www.bibliofond.ru/detail.aspx?id=784540