Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Топ:
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2019-05-27 | 130 |
5.00
из
|
Заказать работу |
|
|
В общем виде метод наименьших квадратов можно сформулировать так: имеются две переменные x и y, связанные некоторой функциональной зависимостью f, вид которой нам известен. В эту зависимость входят некоторые постоянные a и b, значения которых нам неизвестны, т.е. имеем зависимость y=f(x,a,b)
Для того, чтобы найти эти наиболее вероятные значения a и b, мы провели серию измерений x и y, т.е. нашли n пар значений xi эксп и yiэксп. Требуется найти такие значения a и b, которые при подстановке в зависимость совместно с xi эксп дали бы значения yi расч, наиболее близкие к yi эксп.
За меру близости yi расч и yi эксп чаще всего берут величину
Тогда задача поиска наиболее вероятных значений a и b сводится к поиску таких этих величин, при которых величина S будет наименьшей (наименьшая сумма квадратов отклонений экспериментальных и расчетных значений).
Известно, что минимум функции находится в точке,где соответствующие производные обратятся в нуль. В нашем случае должно быть(для простоты опустим символ «эксп»):
Тогда наиболее вероятные значения a и b можно найти,решив систему. Проще всего эта система решается, если x и y связаны линейной зависимостью, т.е.
Тогда и система примет вид
или
Если обозначить , , , ,
то система перейдет в систему
aS3+bS1=S4
aS1+bn=S2
Из этой системы находим наиболее вероятные для данного набора xi и yi значения a и b:
В случая же формулы для вычисления коэффициентов следующие:
БЛОК-СХЕМЫ АЛГОРИТМ ОВ
Ниже представлены блок-схемы алгоритмов ввода данных, вычисления коэффициентов уравнения зависимости и сортировки данных по возрастанию аргумента.
|
|
|
|
4 Выполнение задания в Visual Basic
ЭСКИЗ ЭКРАННОЙ ФОРМЫ
Эскизы экранной формы представлены рисунках 4, 5 и 6.
|
|
|
Программный код
Public Class Form1
Dim N As Integer, t() As Single, m() As Single, mr() As Single, mp() As Single
Sub MNK(ByRef N As Integer, ByRef x() As Single, ByRef y() As Single, ByRef A As Single, ByRef B As Single)
Dim i As Integer
Dim s1, s2, s3, s4 As Single
s1 = 0: s2 = 0: s3 = 0: s4 = 0
For i = 0 To N - 1
s1 = s1 + x(i)
s2 = s2 + x(i) * x(i)
s3 = s3 + x(i) * y(i)
s4 = s4 + y(i)
Next i
A = (N * s3 - s1 * s4) / (N * s2 - s1 * s1)
B = (s2 * s4 - s1 * s3) / (N * s2 - s1 * s1)
End Sub
Sub Sortirovka(ByRef N As Integer, ByRef t() As Single, ByRef m() As Single, ByRef mr() As Single, ByRef mp() As Single)
ReDim t(0 To N - 1), m(0 To N - 1), mr(0 To N - 1), mp(0 To N - 1)
Dim i As Integer, k As Integer
Dim x1, x2, x3, x4 As Single
For i = 0 To N - 2
For k = i To 0 Step -1
If t(k) > t(k + 1) Then
x1 = t(k)
t(k) = t(k + 1)
t(k + 1) = x1
x2 = m(k)
m(k) = m(k + 1)
m(k + 1) = x2
x3 = mr(k)
mr(k) = mr(k + 1)
mr(k + 1) = x3
x4 = mp(k)
mp(k) = mp(k + 1)
mp(k + 1) = x4
End If
Next k
Next i
End Sub
Private Sub mnuExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuExit.Click
End
End Sub
Private Sub mnuSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuSaveAs.Click
Dim file1 As Object
Dim i As Integer, filename1 As String, stroka As String
SaveFileDialog1.ShowDialog()
filename1 = SaveFileDialog1.FileName
file1 = New System.IO.StreamWriter(filename1)
stroka = "Количество опытов N=" + CStr(N)
file1.WriteLine(stroka)
stroka = "Коэффициент A=" + TextBox2.Text
file1.WriteLine(stroka)
stroka = "Коэффициент B=" + TextBox1.Text
file1.WriteLine(stroka)
|
stroka = "№ t m mr mp"
file1.WriteLine(stroka)
For i = 0 To N - 1
stroka = CStr(i + 1) + " " + CStr(t(i)) + " " + CStr(m(i)) + " " + CStr(mr(i)) + " " + CStr(mp(i))
file1.WriteLine(stroka)
Next i
file1.Close()
End Sub
Private Sub mnuOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuOpen.Click
Dim i, dlin, j As Integer
Dim dt As New DataTable
Dim stroka, stroka2, simv, filename1 As String
Dim file1 As Object
OpenFileDialog1.ShowDialog()
filename1 = OpenFileDialog1.FileName
file1 = New System.IO.StreamReader(filename1)
stroka = file1.ReadLine()
N = CInt(stroka)
ReDim t(0 To N - 1), m(0 To N - 1)
stroka = file1.ReadLine()
dlin = Len(stroka)
j = 0
stroka2 = ""
For i = 1 To dlin
simv = Mid(stroka, i, 1)
If simv <> " " Then
stroka2 = stroka2 + simv
Else
t(j) = CSng(stroka2)
stroka2 = ""
j = j + 1
End If
Next i
t(j) = CSng(stroka2)
stroka = file1.ReadLine()
dlin = Len(stroka)
j = 0
stroka2 = ""
For i = 1 To dlin
simv = Mid(stroka, i, 1)
If simv <> " " Then
stroka2 = stroka2 + simv
Else
m(j) = CSng(stroka2)
stroka2 = ""
j = j + 1
End If
Next i
m(j) = CSng(stroka2)
DataGridView1.DataSource = dt
dt.Columns.Add(New DataColumn("t", GetType(String)))
dt.Columns.Add(New DataColumn("m", GetType(String)))
For i = 0 To N - 1
dt.Rows.Add(New String() {t(i), m(i)})
Next i
file1.Close()
End Sub
Private Sub mnuComputation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuComputation.Click
Dim i As Integer, A As Single, B As Single, naim As Single, naib As Single
Dim x(), y() As Single
Dim dt As New DataTable
ReDim x(0 To N - 1), y(0 To N - 1), mr(0 To N - 1), mp(0 To N - 1)
For i = 0 To N - 1
x(i) = t(i) + 273
y(i) = Math.Log(m(i))
Next i
Call MNK(N, x, y, A, B)
TextBox1.Text = CStr(B)
TextBox2.Text = CStr(A)
For i = 0 To N - 1
mr(i) = Math.Exp(B) * Math.Exp(A * x(i))
mp(i) = Math.Abs(mr(i) - m(i)) / Math.Abs(m(i))
Next i
Call Sortirovka(N, t, m, mr, mp)
DataGridView2.DataSource = dt
dt.Columns.Add(New DataColumn("t", GetType(String)))
dt.Columns.Add(New DataColumn("m", GetType(String)))
dt.Columns.Add(New DataColumn("mr", GetType(String)))
dt.Columns.Add(New DataColumn("mp", GetType(String)))
For i = 0 To N - 1
dt.Rows.Add(New String() {t(i), m(i), mr(i), mp(i)})
Next i
naim = mp(0)
naib = mp(0)
For i = 1 To N - 1
If mp(i) < naim Then
naim = mp(i)
End If
Next i
For i = 1 To N - 1
If mp(i) > naib Then
naib = mp(i)
End If
Next i
TextBox3.Text = CStr(naim)
TextBox4.Text = CStr(naib)
End Sub
Private Sub mnuGraph_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuGraph.Click
Dim i As Integer
Chart1.Series.Clear()
Chart1.Series.Add("m(t)")
Chart1.Series.Add("mr(t)")
Chart1.ChartAreas("ChartArea1").AxisX.Title = "t"
Chart1.ChartAreas("ChartArea1").AxisY.Title = "m(t), mr(t) "
|
Chart1.Series("mr(t)").ChartType = DataVisualization.Charting.SeriesChartType.Spline
Chart1.Series("m(t)").ChartType = DataVisualization.Charting.SeriesChartType.FastPoint
Chart1.Series("m(t)").Color = Color.Red
Chart1.Series("mr(t)").Color = Color.Blue
Chart1.Series("m(t)").BorderWidth = 3
Chart1.Series("mr(t)").BorderWidth = 2
For i = 0 To N - 1
Chart1.Series("m(t)").Points.AddXY(t(i), m(i))
Chart1.Series("mr(t)").Points.AddXY(t(i), mr(i))
Next i
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Dim dt As New DataTable
N = CInt(InputBox("Введите число опытов N="))
ReDim t(0 To N - 1), m(0 To N - 1)
DataGridView1.DataSource = dt
dt.Columns.Add(New DataColumn("t", GetType(String)))
dt.Columns.Add(New DataColumn("m", GetType(String)))
For i = 0 To N - 1
t(i) = CSng(InputBox("t(" + CStr(i) + ")="))
m(i) = CSng(InputBox("m(" + CStr(i) + ")="))
dt.Rows.Add(New String() {t(i), m(i)})
Next i
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim i As Integer, A As Single, B As Single, naim As Single, naib As Single
Dim x(), y() As Single
Dim dt As New DataTable
ReDim x(0 To N - 1), y(0 To N - 1), mr(0 To N - 1), mp(0 To N - 1)
For i = 0 To N - 1
x(i) = t(i) + 273
y(i) = Math.Log(m(i))
Next i
Call MNK(N, x, y, A, B)
TextBox1.Text = CStr(B)
TextBox2.Text = CStr(A)
For i = 0 To N - 1
mr(i) = Math.Exp(B) * Math.Exp(A * x(i))
mp(i) = Math.Abs(mr(i) - m(i)) / Math.Abs(m(i))
Next i
Call Sortirovka(N, t, m, mr, mp)
DataGridView2.DataSource = dt
dt.Columns.Add(New DataColumn("t", GetType(String)))
dt.Columns.Add(New DataColumn("m", GetType(String)))
dt.Columns.Add(New DataColumn("mr", GetType(String)))
dt.Columns.Add(New DataColumn("mp", GetType(String)))
For i = 0 To N - 1
dt.Rows.Add(New String() {t(i), m(i), mr(i), mp(i)})
Next i
naim = mp(0)
naib = mp(0)
For i = 1 To N - 1
If mp(i) < naim Then
naim = mp(i)
End If
Next i
For i = 1 To N - 1
If mp(i) > naib Then
naib = mp(i)
End If
Next i
TextBox3.Text = CStr(naim)
TextBox4.Text = CStr(naib)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim i As Integer
Chart1.Series.Clear()
Chart1.Series.Add("m(t)")
Chart1.Series.Add("mr(t)")
Chart1.ChartAreas("ChartArea1").AxisX.Title = "t"
Chart1.ChartAreas("ChartArea1").AxisY.Title = "m(t), mr(t) "
Chart1.Series("mr(t)").ChartType = DataVisualization.Charting.SeriesChartType.Spline
Chart1.Series("m(t)").ChartType = DataVisualization.Charting.SeriesChartType.FastPoint
Chart1.Series("m(t)").Color = Color.Red
Chart1.Series("mr(t)").Color = Color.Blue
Chart1.Series("m(t)").BorderWidth = 3
Chart1.Series("mr(t)").BorderWidth = 2
For i = 0 To N - 1
Chart1.Series("m(t)").Points.AddXY(t(i), m(i))
|
Chart1.Series("mr(t)").Points.AddXY(t(i), mr(i))
Next i
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim file1 As Object
Dim i As Integer, filename1 As String, stroka As String
SaveFileDialog1.ShowDialog()
filename1 = SaveFileDialog1.FileName
file1 = New System.IO.StreamWriter(filename1)
stroka = "Количество опытов N=" + CStr(N)
file1.WriteLine(stroka)
stroka = "Коэффициент A=" + TextBox2.Text
file1.WriteLine(stroka)
stroka = "Коэффициент B=" + TextBox1.Text
file1.WriteLine(stroka)
file1.WriteLine(stroka)
stroka = "№ t m mr mp"
file1.WriteLine(stroka)
For i = 0 To N - 1
stroka = CStr(i + 1) + " " + CStr(t(i)) + " " + CStr(m(i)) + " " + CStr(mr(i)) + " " + CStr(mp(i))
file1.WriteLine(stroka)
Next i
file1.Close()
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
End
End Sub
End Class
РЕЗУЛЬТАТ Ы
Результаты работы программы представлены на рисунках 7, 8 и 9.
|
|
|
|
|
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!