Автор работы: Пользователь скрыл имя, 13 Сентября 2011 в 22:23, курсовая работа
Цель моей работы: обработать экспериментальные данные в приложениях Excel, MathCad, Visual Basic
Мои задачи: описать метод выполнения расчётов, выполнить расчёты в Excel, MathCad, Visual Basic, построить графики, сравнить результаты, полученные в трёх приложениях, выяснить, какое из трёх приложений наиболее удобно для решения данной задачи.
I.Введение 3
II.Теоретическая часть
1.ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ № 13 4
2.Описание метода 6
III. Практическая часть
1.VISUAL BASIC 10
2.EXCEL 14
3.MATHCAD 18
IV. Выводы: 20
V. Список литературы: 21
N i=1 i=13
Метод Крамера:
Применяется для нахождения корней системы n уравнений с n неизвестными. По методу Крамера находится определитель квадратной матрицы ∆, а затем каждый столбец по очереди заменяется на столбец свободных членов, и вычисляются определители ∆1, ∆2, ………∆n. Получив все определители, применяем формулу Крамера для каждого из ∆1, ∆2, ………∆n для нахождения корней системы:
∆1 ∆1 ∆n
X1= ∆ , x2= ∆ , xn = ∆.
Метод основан на неравенстве определителей нулю на каждом этапе.
Dim Y() As Single, X1() As Single, X2() As Single, YP() As Single, n As Integer
Private Sub Command1_Click()
Dim F As String, i As Integer
With CD1
.Action = 1
F = .FileName
End With
Open F For Input As #1
Input #1, n
ReDim X1(1 To n) As Single, X2(1 To n) As Single, Y(1 To n) As Single, YP(1 To n) As Single
With Grid1
.Rows = n + 1
For i = 1 To n
Input #1, X1(i), X2(i), Y(i)
.Row = i
.Col = 0
.Text = CStr(X1(i))
.Col = 1
.Text = CStr(X2(i))
.Col = 2
.Text = CStr(Y(i))
Next i
End With
Close #1
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Command3_Click()
Const k = 3
Dim a0 As Single, a1 As Single, a2 As Single, i As Integer, j As Single
Dim matr(1 To 3, 1 To 3) As Single, stolb(1 To 3) As Single, PRO(1 To 3) As Single
Dim GLOPR As Single, KOEF(1 To 3) As Single, dup() As Single
ReDim dup(1 To n) As Single
For i = 1 To n
matr(1, 2) = matr(1, 2) + X1(i)
matr(1, 3) = matr(1, 3) + X2(i)
matr(2, 2) = matr(2, 2) + X1(i) * X1(i)
matr(3, 2) = matr(3, 2) + X1(i) * X2(i)
matr(3, 3) = matr(3, 3) + X2(i) * X2(i)
stolb(1) = stolb(1) + Log(Y(i))
stolb(2) = stolb(2) + X1(i) * Log(Y(i))
stolb(3) = stolb(3) + X2(i) * Log(Y(i))
Next i
matr(1, 1) = n: matr(2, 1) = matr(1, 2)
matr(3, 1) = matr(1, 3): matr(2, 3) = matr(3, 2)
GLOPR = Opred(k, matr())
For j = 1 To k
For i = 1 To k
PRO(i) = matr(i, j)
matr(i, j) = stolb(i)
Next i
KOEF(j) = Opred(k, matr()) / GLOPR
For i = 1 To k
matr(i, j) = PRO(i)
Next i
Next j
a0 = Exp(KOEF(1))
a1 = Exp(KOEF(2))
a2 = Exp(KOEF(3))
Text1.Text = CStr(a0)
Text2.Text = CStr(a1)
Text3.Text = CStr(a2)
With Grid1
For i = 1 To n
.Row = i
YP(i) = a0 * a1 ^ X1(i) * a2 ^ X2(i)
.Col = 3
.Text = CStr(YP(i))
dup(i) = Abs(YP(i) - Y(i)) / Abs(Y(i))
.Col = 4
.Text = CStr(dup(i))
Next i
End With
Text4.Text = CStr(Min(n, dup()))
Text5.Text = CStr(Max(n, dup()))
End Sub
Private Function Opred(no1 As Integer, xo1() As Single) As Single
Dim io As Integer, jo As Integer, do1 As Single
Dim eo As Single, ko As Integer, bo1 As Integer, co As Integer
Dim ao As Single, so As Single, go As Single, zo As Integer
ReDim xo(1 To no1, 1 To no1) As Single
zo = 1
do1 = 1
For io = 1 To no1
For jo = 1 To no1
xo(io, jo) = xo1(io, jo)
Next jo
Next io
For ko = 1 To no1 - 1
eo = 0
For io = ko To no1
For jo = ko To no1
If Abs(eo) >= Abs(xo(io, jo)) Then GoTo m90
eo = xo(io, jo): bo1 = io: co = jo
m90:
Next jo
Next io
If ko = bo1 Then GoTo m120
For jo = ko To no1
so = xo(ko, jo)
xo(ko, jo) = xo(bo1, jo)
xo(bo1, jo) = so
Next jo
zo = -zo
m120:
If ko = co Then GoTo m150
For io = ko To no1
so = xo(io, ko)
xo(io, ko) = xo(io, co)
xo(io, co) = so
Next io
zo = -zo
m150:
For io = ko + 1 To no1
go = xo(io, ko) / xo(ko, ko)
For jo = ko To no1
xo(io, jo) = xo(io, jo) - go * xo(ko, jo)
Next jo
Next io
Next ko
For io = 1 To no1
do1 = do1 * xo(io, io)
Next io
do1 = do1 * zo
Opred = do1
End Function
Private Function Min(n As Integer, z() As Single) As Single
Dim i As Integer
Min = z(1)
For i = 2 To n
If Min > z(i) Then Min = z(i)
Next i
End Function
Private Function Max(n As Integer, z() As Single) As Single
Dim i As Integer
Max = z(1)
For i = 2 To n
If Max < z(i) Then Max = z(i)
Next i
End Function
Private Sub Form_Load()
With Grid1
.Row = 0
.Col = 0
.Text = "X1"
.Col = 1
.Text = "X2"
.Col = 2
.Text = "Y"
.Col = 3
.Text = "YP"
.Col = 4
.Text = "DeltaY"
End With
End Sub
При выполнении расчётов в трёх программах мы получили приблизительно одинаковые значения
- а0, а1, а2;
- yрасч для заданных x1и х2;
- относительной погрешности;
- минимальной и максимальной погрешностей.
С моей точки зрения более рациональной и наименее трудоёмкой является разработка программного продукта в среде MathCad. Полученные данные представлены наиболее наглядно, и, следовательно, удобны для изучения.
1. Воднев В.Т. Математический словарь высшей школы\ М. 1988
2. Дьяконов В.П. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ\М. 1989
3. Ракитин В.И., В.Е. Первушин. Практическое руководство по методам вычислений с приложением программ для персональных компьютеров\М. 1998
Информация о работе Обработка экспериментальных данных средствами Excel, MathCad и Visual Basic