Logo GenDocs.ru

Поиск по сайту:  


Загрузка...

Линейные и нелинейные уравнения, интерполяция, задача Коши - файл Контрольная работа.doc


Линейные и нелинейные уравнения, интерполяция, задача Коши
скачать (513.6 kb.)

Доступные файлы (32):

Form1.frm
Form1.frx
MSSCCPRJ.SCC
Project1.vbp
Project1.vbw
Form1.frm
Form1.frx
MSSCCPRJ.SCC
Project1.vbp
Project1.vbw
FORM1.FRM
FORM1.FRX
humor_9.jpg34kb.05.11.2005 00:58скачать
MSSCCPRJ.SCC
Project1.vbp
Project1.vbw
Контрольная работа.doc492kb.19.04.2011 18:45скачать
Form1.frm
Form1.frx
MSSCCPRJ.SCC
Project1.vbp
Project1.vbw
Form1.frm
Form1.frx
MSSCCPRJ.SCC
Project1.vbp
Project1.vbw
Form1.frm
Form1.frx
MSSCCPRJ.SCC
Project1.vbp
Project1.vbw

содержание
Загрузка...

Контрольная работа.doc

Реклама MarketGid:
Загрузка...
Контрольная работа по

«Численным методам»
Вариант № 4.
Задание 1. Решение системы линейных уравнений.
1. Решить систему предложенным методом (Гаусса, Жордана, Зейделя). Проверить решение. Точность вычисления в методе Зейделя ε = 10-5


Матрица коэффициентов системы

Столбец свободных членов

0,13

0,22

0,62

0,12

0,22

-0,31

-0,74

0,13

-0,14

0,42

0,85

0,14

0,15

-5,1

-0,96

0,45

1

6,01

0,11

0,16


2. Вид формы до запуска:

3. Таблица свойств объектов формы


Объект

Caption

Name

Enabled

Visible

Form1

Решение системы линейных уравнений

Form1

True

True

Frame1

Матрица коэффициентов системы

Frame1

True

True

OLE1

-

OLE1

True

True

Command1

Выход

cmdExit

True

True

SSTab1

Метод Гаусса

Tab1

True

True

Метод Зейделя

Tab2

Label1

Результат

Label1

True

True

Label2

Проверка

Label2

True

True

Label3

Результат

Label3

True

True

Label4

Проверка

Label4

True

True

List1

-

List1

True

True

List2

-

List2

True

True

List3

-

List3

True

True

List4

-

List4

True

True

Command2

Решить

cmdGaus

True

True

Command3

Решить

cmdZeid

True

True


4. Таблица переменных


Идентификатор

Тип

Переменная

a()

Single

Исходный массив

c(), at(), x(), x1(), d(), cd()

Single

Рабочие массивы

w(), q()

Single

Результирующие массивы

i, j, k, jj, m, elm, l, st

Integer

Переменные циклов

e = 0.00001

Const

Погрешность вычислений


5. Программный код
Option Explicit

Dim a(1 To 4, 1 To 5) As Single, x(1 To 4) As Single, q(1 To 4) As Single

Dim w(1 To 4) As Single, x1(1 To 4) As Single, at(1 To 4, 1 To 4) As Single

Dim c(1 To 4, 1 To 4) As Single, d(1 To 4) As Single

Dim cd(1 To 4, 1 To 5) As Single, m, elm, l, st As Single

Dim i, j, k, jj As Integer

Const e = 0.00001

^ Выход из программы

Private Sub cmdExit_Click()

End

End Sub

Решение методом Гаусса

Private Sub cmdGaus_Click()

Dim d(1 To 4, 1 To 5) As Single, b(1 To 4)

Call massiv

'метод Гаусса

For i = 1 To 4

For k = i + 1 To 4

elm = a(k, i) / a(i, i)

For jj = 1 To 5

a(k, jj) = a(k, jj) / elm

a(k, jj) = a(k, jj) - a(i, jj)

Next jj

Next k

l = a(i, i)

For j = 1 To 5

a(i, j) = a(i, j) / l

Next j

Next i

x(4) = a(4, 5)

For i = 3 To 1 Step -1

x(i) = a(i, 5)

For j = i + 1 To 4

x(i) = x(i) - a(i, j) * x(j)

Next j

Next i

For j = 1 To 4

List1.AddItem "x" & j & " = " & x(j)

Next j

Call massiv

For j = 1 To 4

For i = 1 To 4

q(i) = q(i) + a(i, j) * x(j)

Next i

Next j

For i = 1 To 4

List2.AddItem "b " & i & " = " & q(i)

Next i

End Sub

^ Решение методом Зейделя

Private Sub cmdZeid_Click()

Call massiv

Call regul

'метод зейделя

For i = 1 To 4

x(i) = 1

Next i

Do

For i = 1 To 4

x1(i) = x(i)

Next i

For i = 1 To 4

m = 0

For j = 1 To 4

If i <> j Then

m = m + c(i, j) / c(i, i) * (-1) * x(j)

End If

Next j

m = m + d(i) / c(i, i)

x(i) = m

Next i

st = 0

For i = 1 To 4

If Abs(x(i) - x1(i)) < e Then

st = st + 1

End If

Next i

If st = 4 Then Exit Do

Loop

For i = 1 To 4

List3.AddItem "x" & i & " = " & x(i)

Next i

For j = 1 To 4

For i = 1 To 4

w(i) = w(i) + a(i, j) * x(j)

Next i

Next j

For i = 1 To 4

List4.AddItem "b" & i & " = " & w(i)

Next i

End Sub

^ Регуляризация матрицы

Public Sub regul()

'транспонирование

For i = 1 To 4

For j = 1 To 4

at(i, j) = a(j, i)

Next j

Next i

'умножение at*a(i,i)

For k = 1 To 4

For i = 1 To 4

m = 0

For j = 1 To 4

m = m + at(k, j) * a(j, i)

Next j

c(k, i) = m

Next i

Next k

'умножение at*a(i,5)

For i = 1 To 4

m = 0

For j = 1 To 4

m = m + at(i, j) * a(j, 5)

Next j

d(i) = m

Next i

End Sub

Матрица коэффициентов системы

Public Sub massiv()

a(1, 1) = 0.13

a(1, 2) = 0.22

a(1, 3) = -0.14

a(1, 4) = 0.15

a(1, 5) = 1

a(2, 1) = 0.22

a(2, 2) = -0.31

a(2, 3) = 0.42

a(2, 4) = -5.1

a(2, 5) = 6.01

a(3, 1) = 0.62

a(3, 2) = -0.74

a(3, 3) = 0.85

a(3, 4) = -0.95

a(3, 5) = 0.11

a(4, 1) = 0.12

a(4, 2) = 0.13

a(4, 3) = 0.14

a(4, 4) = 0.45

a(4, 5) = 0.16

End Sub
6. Результаты вычислений


Задание 2. Вычисление определенного интеграла.
1. Вычислить предложенным методом ∫f(x)dx с погрешностью, не превышающей по модулю ε = 10-6, начиная расчеты с разбиением интервала [a,b] на 2 участка.

1 – метод левых прямоугольников, 2 – метод правых прямоугольников, 3 – метод средних прямоугольников, 4 – метод трапеций, 5 – метод Симпсона.
f(x) = sin (x4+x); a = 0,8; b = 1, 2; методы 2 и 5.
2. Вид формы до запуска

3. Таблица свойств объектов


Объект

Caption

Name

Visible

Enabled

Form1

Определенный интеграл

Form1

True

True

Frame1

Определенный интеграл

Frame1

True

True

OLE1

-

OLE1

True

True

Command1

Выход

cmdExit

True

True

SSTab1

Метод Симпсона

Tab1

True

True

Метод правых прямоугольников

Tab2

Label1

Корень:

Label1

True

True

Label2

Количество интервалов:

Label2

True

True

Label3

Корень:

Label3

True

True

Label4

Количество интервалов:

Label4

True

True

Text1

-

Text1

True

True

Text2

-

Text2

True

True

Text3

-

Text3

True

True

Text4

-

Text4

True

True

Command2

Решить

cmdSimp

True

True

Command3

Решить

cmdPrPr

True

True


4. Таблица переменных


Идентификатор

Тип

Переменная

x, y, y1, i

Single

Переменные циклов

h

Single

Шаг

S, S1

Single

Переменные суммы

R, I1

Single

Переменные погрешности

e = 0.000001

Const

Погрешность вычислений

a=0,8

Const

Начало интервала

b=1,2

Const

Конец интервала

n

Single

Число участков разбиения

k

Single

Количество итераций

5. Программный код
Option Explicit

Private Const e = 10 ^ (-6)

Private Const a = 0.8

Private Const b = 1.2

Private h, k As Single, i As Single

Private S, S1 As Single

Private R, I1 As Single

Private y As Single

Private x As Single

Private n As Single

Подынтегральная функция

Private Function f(x As Single)

f = Sin(x ^ 4 + x)

End Function

Решение методом правых прямоугольников

Private Sub cmdPrPr_Click()

h = 0.2 'По формуле h=(b-a)/n при n=2

i = f(0.8) * h

k = 0

Do

I1 = i

i = 0

h = h / 2

For x = а + h To b Step h

i = i + f(x) * h

Next x

k = k + 1

Loop While Abs(i - I1) > 0.0001

Text3.Text = i

Text4.Text = k

End Sub

Выход из приложения

Private Sub cmdExit_Click()

End

End Sub

Решение методом Симпсона

Private Sub cmdSimp_Click()

Dim y1 As Single

n = 2: k = 0

Call Simpson

Do

n = n * 2: y1 = y: y = 0: S = 0

Call Simpson

R = Abs((y - y1) / (2 ^ 4 - 1))

k = k + 1

Loop While R >= e

Text1.Text = Format(y, "0.0000000"):

Text2.Text = k

End Sub
Метод Симпсона

Private Sub Simpson()

h = (b - a) / n

S = 0

For i = 1 To n

S = S + 4 * f(a + i * h - h / 2)

Next i

For i = 1 To n - 1

S = S + 2 * f(a + i * h)

Next i

y = h / 6 * (f(a) + f(b) + S)

End Sub
6. Результаты вычислений


Задание 3. Аппроксимация по методу наименьших квадратов.
1. По заданным экспериментальным точкам построить кривую, выбрать вид зависимости и обосновать его. В случае необходимости использовать метод выравнивания. Вычислить параметры эмпирической зависимости по методу наименьших квадратов.


X =

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1.0

Y =

-1.49

-0.38

0.27

0.73

1.09

1.38

1.63

1.84

2.03

2.2


2. Вид формы до запуска

3. Таблица свойств объектов


Объект

Caption

Name

Visible

Enabled

Form1

Аппроксимация по методу наименьших квадратов

Form1

True

True

Frame1

Координаты

Frame1

True

True

Frame2

Рисунок

Frame2

True

True

MSFlexGrid

-

fgrTable

True

True

Picture1

-

picGr

True

True

Frame3

Функция

Frame3

True

True

Text1

-

txtFormula

True

True

Text2

-

txtOtkl

True

True

Label1

Сумма квадратов отклонений

Label1

True

True

Command1

Решить

btnResh

True

True

Command2

Выход

btnExit

True

True


4. Таблица переменных


Идентификатор

Тип

Переменная

x(1 To 10), y (1 To 10)

Single

Исходные массивы координат

i, j,

Integer

Переменные циклов

yy(1 To 10), kf(1 To 2), a (1 To 2, 1 To 3), Arr ()

Single

Рабочие массивы

m = 10

Const

Количество строк таблицы

x1, y1, h, s

Single

Вспомогательные переменные циклов

r, c

Integer

Вспомогательные переменные циклов – границы массива

imax

Integer

Индекс максимального элемента массива

Мax

Single

Максимальный элемент массива

q

Integer

Вспомогательная переменная

xf, yf

Single

Переменные цикла для построения графика


5. Программный код
Option Explicit

Const m = 10

Dim x(1 To 10) As Single

Dim y(1 To 10) As Single

Dim yy(1 To 10) As Single

Dim kf(1 To 2) As Single

Dim a(1 To 2, 1 To 3) As Single

Dim i As Integer, j As Integer

Массив координат

Public Sub Vvod()

x(1) = 0.1

x(2) = 0.2

x(3) = 0.3

x(4) = 0.4

x(5) = 0.5

x(6) = 0.6

x(7) = 0.7

x(8) = 0.8

x(9) = 0.9

x(10) = 1

y(1) = -1.49

y(2) = -0.38

y(3) = 0.27

y(4) = 0.73

y(5) = 1.09

y(6) = 1.28

y(7) = 1.63

y(8) = 1.84

y(9) = 2.03

y(10) = 2.2

End Sub

Public Sub Matr()

Dim x1 As Single, y1 As Single

For i = 1 To m

x1 = Log(x(i))

y1 = y(i)

a(1, 1) = a(1, 1) + x1 ^ 2

a(1, 2) = a(1, 2) + x1

a(1, 3) = a(1, 3) + x1 * y1

a(2, 3) = a(2, 3) + y1

Next i

a(2, 1) = a(1, 2)

a(2, 2) = m

End Sub

Rem Решение методом Жордана

Private Sub Zhordan(Arr() As Single)

Dim r As Integer, c As Integer

r = UBound(Arr, 1)

c = UBound(Arr, 2)

Dim imax As Integer, Max As Single, q As Integer, h As Single

For q = 1 To r

' Находим максимальный по модулю элемент в столбце

Max = Abs(Arr(q, q))

imax = q

For i = q + 1 To r

If Abs(Arr(i, q)) > Max Then

Max = Abs(Arr(i, q))

imax = i

End If

Next i

' Переставляем строки

For j = 1 To c

h = Arr(imax, j)

Arr(imax, j) = Arr(q, j)

Arr(q, j) = h

Next j

' Делим на максимальный элемент коэффициенты ведущей строки

For j = q + 1 To c

Arr(q, j) = Arr(q, j) / Arr(q, q)

Next j

Arr(q, q) = 1

' Вычисляем коэффициенты элементов строк (сверху и снизу)

For i = 1 To r

If i <> q Then

For j = q + 1 To c

Arr(i, j) = Arr(i, j) - Arr(i, q) * Arr(q, j)

Next j

Arr(i, q) = 0

End If

Next i

Next q

End Sub

^ Подпрограмма решения задачи методом Жордана

Rem Решение

Public Sub Resh()

Call Zhordan(a()) ' Решение методом Жордана

kf(1) = a(1, 3)

kf(2) = a(2, 3)

txtFormula.Text = "F(x) = " & Format(kf(1), "0.0000") & "ln(x) + " & Format(kf(2), "0.0000")

' Заполнение таблицы точек и расчётов суммы квадратов отклонений

fgrTable.Col = 3

Dim s As Single

For i = 1 To m

fgrTable.Row = i

yy(i) = kf(1) * Log(x(i)) + kf(2)

s = s + (y(i) - yy(i)) ^ 2

fgrTable.Text = Format(yy(i), "0.0000")

Next i

txtOtkl.Text = Format(s, "0.000000")

' Вывод графика

Dim xf As Single, yf As Single

For xf = x(1) To x(m) Step 0.01

yf = kf(1) * Log(xf) + kf(2)

If xf = 0.1 Then

picGr.PSet (xf, yf), RGB(200, 0, 0)

Else

picGr.Line -(xf, yf), RGB(200, 0, 0)

End If

Next xf

End Sub

^ Выход из приложения

Private Sub btnExit_Click()

End

End Sub

Решение задачи

Private Sub btnResh_Click()

Call Matr

Call Resh

End Sub

Формирование вида формы при запуске программы

Private Sub Form_Activate()

Call Vvod

fgrTable.Rows = m + 1

fgrTable.Row = 0

fgrTable.Col = 1: fgrTable.Text = "x"

fgrTable.Col = 2: fgrTable.Text = "y"

fgrTable.Col = 3: fgrTable.Text = "yy"

fgrTable.ColWidth(0) = 400

fgrTable.ColWidth(1) = 500

fgrTable.ColWidth(2) = 600

fgrTable.ColWidth(3) = 800

For i = 1 To m

fgrTable.TextMatrix(i, 0) = Str(i)

fgrTable.TextMatrix(i, 1) = Format(x(i), "0.0")

fgrTable.TextMatrix(i, 2) = Format(y(i), "0.00")

Next i

picGr.Scale (-0.15, 20)-(1, -20)

picGr.Line (-0.15, 0)-(3, 0)

picGr.Line (0, -30)-(0, 30)

picGr.PSet (x(1), y(1)), RGB(0, 100, 0)

For i = 2 To m

picGr.Line -(x(i), y(i)), RGB(0, 100, 0)

Next i

End Sub
6. Результаты вычислений

Задание 4. Решение задачи Коши.
1. Решить на интервале [0,2] задачу Коши y’=f(x,y) при y(x0)=0, x0=0 методами Эйлера и Рунге-Кутта заданного порядка с шагом h = 0,1. Сравнить результаты. Построить графики функций для каждого метода. Параметр m – порядок метода.
f(x)= 1+0,4ysinx – 1,5y2, m = 4
2. Вид формы до запуска

3. Таблица свойств объектов


Объект

Caption

Name

Visible

Enabled

Form1

Решение задачи Коши

Form1

True

True

Frame1

Задание

Frame1

True

True

OLE1

-

OLE1

True

True

Command1

Выход

cmdExit

True

True

Label1

Отрезок интегрирования [0,2] шаг: 0,1

Label1

True

True

Frame2

Метод Эйлера

Frame2

True

True

Frame3

Метод Рунге-Кутта

Frame3

True

True

Picture1

-

Picture1

True

True

Picture2

-

Picture2

True

True

Command2

Решить

cmdEl

True

True

Command3

Решить

cmdRG

True

True


4. Таблица переменных


Идентификатор

Тип

Переменная

u1(1 To 20), u(1 To 20)

Single

Рабочие массивы

i, j

Integer

Переменные цикла

h=0.1

Const

Шаг

t1, t, r1, y, y1, t2, r2, t3, r3, t4, r4


Single

Переменные для определения функций и их производных


5. Программные коды
Option Explicit

Private u1(0 To 20) As Single, u(0 To 20) As Single

Private i As Integer, j As Integer

Private t1, t As Single, r1 As Single, y As Single, y1 As Single, t2 As Single, r2 As Single, t3 As Single, r3 As Single, t4 As Single, r4 As Single

Const h = 0.1

^ Выход из приложения

Private Sub cmdExit_Click()

End

End Sub

Создание внешнего вида формы при запуске

Private Sub Form_Activate()

u(0) = 0

u1(0) = 0

ReDim Picture(1 To 2)

Set Picture(1) = Picture1

Set Picture(2) = Picture2

For i = 1 To 2

Picture(i).Scale (-1, 6)-(3, -4)

Picture(i).Line (-1, 0)-(6, 0)

Picture(i).Line (0, -4)-(0, 6)

For j = 1 To 3

Picture(i).CurrentY = -0.1

Picture(i).CurrentX = j

Picture(i).Print Str(j)

Next j

For j = -10 To 10 Step 2

Picture(i).CurrentY = j

Picture(i).CurrentX = -0.2

Picture(i).Print Str(j)

Next j

Next i

End Sub

Исходная функция

Private Function u2(u, u1) As Single

u2 = 1 - 0.4 * u1 * Sin(u) - 1.5 * u1 ^ 2

End Function

Решение методом Эйлера

Private Sub cmdEl_Click()

t = 0

For i = 0 To 19

y = u(i) + h * u1(i)

y1 = u1(i) + h * u2(u(i), u1(i))

u(i + 1) = u(i) + h * (u1(i) + y1) / 2

u1(i + 1) = u1(i) + h * (u2(u(i), u1(i)) + u2(y, y1)) / 2

t = t + h

Picture1.ForeColor = &H80&

Picture1.CurrentY = u(i)

Picture1.CurrentX = t - h

Picture1.Line -(t, u(i + 1))

Picture1.ForeColor = &H800000

Picture1.CurrentY = u1(i)

Picture1.CurrentX = t - h

Picture1.Line -(t, u1(i + 1))

Next i

End Sub

Решение методом Рунге-Кутта 4-го порядка

Private Sub cmdRG_Click()

t = 0

For i = 0 To 19

t1 = h * u1(i)

r1 = h * u2(u(i), u1(i)) 'для производной

t2 = h * (u1(i) + r1 / 2)

r2 = h * u2(u(i) + t1 / 2, u1(i) + r1 / 2)

t3 = h * (u1(i) + r2 / 2)

r3 = h * u2(u(i) + t2 / 2, u1(i) + r2 / 2)

t4 = h * (u1(i) + r3)

r4 = h * u2(u(i) + t3, u1(i) + r3)

u(i + 1) = u(i) + (t1 + 2 * t2 + 2 * t3 + t4) / 6

u1(i + 1) = u1(i) + (r1 + 2 * r2 + 2 * r3 + r4) / 6

t = t + h

Picture2.ForeColor = &H80&

Picture2.CurrentY = u(i)

Picture2.CurrentX = t - h

Picture2.Line -(t, u(i + 1))

Picture2.ForeColor = &H800000

Picture2.CurrentY = u1(i)

Picture2.CurrentX = t - h

Picture2.Line -(t, u1(i + 1))

Next i

End Sub
6. Результаты вычислений



Скачать файл (513.6 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru