Обработка экспериментальных данных средствами Excel, MathCad и Visual Basic

Автор работы: Пользователь скрыл имя, 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

Содержимое работы - 1 файл

13.doc

— 362.50 Кб (Скачать файл)

           N i=1               i=13

 

    Метод Крамера:

   Применяется для нахождения корней системы n уравнений с n неизвестными. По методу Крамера находится определитель квадратной матрицы ∆, а затем каждый столбец по очереди заменяется на столбец свободных членов, и вычисляются определители ∆1, ∆2, ………∆n. Получив все определители, применяем формулу Крамера для каждого из ∆1, ∆2, ………∆n для нахождения корней системы:

            ∆1          ∆1           ∆n

   X1=  ∆  ,   x2= ∆  ,  xn =   ∆.

   Метод основан на неравенстве определителей  нулю на каждом этапе.

VISUAL BASIC

 

 

Программа

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

 

EXCEL

 

 
 
 
 
 
 
 
 

 

 

 

 

 

 

 
 
 
 
 
 
 

 

MATHCAD

 
 

 

 

Выводы:

 

При выполнении расчётов в трёх программах мы получили приблизительно одинаковые значения

-  а0, а1, а2;

- yрасч для заданных x1и х2;

- относительной  погрешности;

- минимальной  и максимальной погрешностей.

С моей точки зрения более рациональной и наименее трудоёмкой является разработка программного продукта в среде MathCad. Полученные данные представлены наиболее наглядно, и, следовательно, удобны для изучения.

 

Список литературы:

 

1.   Воднев В.Т. Математический словарь высшей школы\ М. 1988

2. Дьяконов  В.П. Справочник по алгоритмам  и программам на языке бейсик  для персональных ЭВМ\М. 1989

3.   Ракитин В.И., В.Е. Первушин. Практическое руководство по методам вычислений с приложением программ для персональных компьютеров\М. 1998

Информация о работе Обработка экспериментальных данных средствами Excel, MathCad и Visual Basic