Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

Вычисление суммы. Рекуррентные формулы.

Условие задачи: Для x, изменяющегося в интервале от x0 до xk с шагом h, вычислить значения бесконечной суммы y(x) с точностью e=0.00001.

e = 0.000001: n = 1

For x = xh To xk Step dx

y = 0: i = 0: u = 1

 

While Abs(u) > e : y = y + u : u = (x) ^ 2 / (i + 1) * u : i = i + 1

Wend : n = n + 1

Next x

 

Вычисление чисел Фибоначчи.

Sub Fib1()

ActiveCell.FormulaR1C1 = "1"

Range("A2").Select

ActiveCell.FormulaR1C1 = "2"

Range("A3").Select

ActiveCell.FormulaR1C1 = "=R[-2]C+R[-1]C"

Range("A3").Select

Selection.AutoFill Destination:=Range("A3:A20"), Type:=xlFillDefault: Range("A3:A20").Select

 

18. Нахождение «сигнальной» матрицы В = sign(A).

Sub matAB()

Dim a(3, 3) As Integer : Dim b(3, 3) As Integer

Dim i, j As Integer : Dim s1, s2 As String

For i = 1 To 3 : For j = 1 To 3

If a(i, j) > 0 Then: b(i, j) = 1: Else

If a(i, j) = 0 Then: b(i, j) = 0: Else: b(i, j) = -1: End If

End If: Range(s1).Cells = b(i, j): Next: Next: End Sub

 

19. Решение уравнений вида f(x) = 0. Метод Ньютона.

При x=а f’(x)*f ’’(x)<0 – функция убывающая и f’(x)*f ’’(x)>0-функция возрастающая.

Расчетная формула Ньютона имеет вид:

Вычисления ведутся до тех пор, пока |xn-xn-1|<E

While Abs(f(x)) > 0.01

i = i + 1

x = x - f(x) / f1(x)

Wend

End Sub

 

20. Решение уравнений вида f(x) = 0. Метод деления отрезка пополам.

Алгоритм:

1. Ввести данные (а, b, е)

2. Если нужная точность достигнута (|b-a|<2е), переходим у пункту6

3. Взять середину очередного отрезка c=(a+b)/2

4. Если значение функции в точках а и с одного знака (f(а)*f (с)>0), то в качестве следующего отрезка взять другую половину а=с, иначе b=c.

5. Перейти к пункту 2

6. Напечатать ответ (a+b)/2

x = Del(a, b, eps)

Function Del(a As Double, b As Double, e As Double) As Double

Dim x As Double, n As Integer

If fun(a) * fun(b) <= 0 Then

n = 0: While (b - a) > e: n = n + 1 : x = (a + b) / 2

If fun(a) * fun(x) <= 0 Then

b = x: Else: a = x: End If

Range("B5").Cells = n : Del = (a + b) * 0.5

Wend: Else: MsgBox ("a,b=?")

Exit Function : End If : End Function

 

21. Решение уравнений вида f(x) = 0. Метод хорд.

Xn+1= Xn-(f(Xn)(b- Xn))/(f(b)-f(Xn))

Xn+1= Xn-(f(Xn)(Xn-а))/(f(Xn)-f(a))

| Xn+1- Xn|<

x = Hor(a0, b0, eps)

Function Hor(a As Double, b As Double, e As Double) As Double: Dim x As Double, x0 As Double, n As Integer: If fun(a) * fun(b) <= 0 Then

n = 0: x0 = a: x = b: While Abs(x0 - x) > e

n = n + 1: x0 = x: x = b - fun(b) * (b - a) / (fun(b) - fun(a)): If fun(a) * fun(x) <= 0 Then: b = x : Else : a = x: End If : Hor = x: Wend : Else MsgBox ("a,b=?"): Exit Function : End If : End Function

 

22. Решение систем линейных уравнений итерационнымиметодами. Метод простой итерации.

Нормой вектора B и матрицы А называют соответственно следующие числа: ;

количество итераций m: m

|x(m)- x(m-1)|

Xn+1= Xn-(f(Xn)(b- Xn))/(f(b)-f(Xn))

Xn+1= Xn-(f(Xn)(Xn-а))/(f(Xn)-f(a))

|Xn+1-Xn|<Е

Алгоритм:

1) Преобразуем исходную систему к виду x=x+.

2) Находим норму матрицы.

3) Если || < 1, то переходим к пункту 4.

4) Задается начальное приближение и

5) Рассчитывается количество итераций i.

6) Вычисляется очередная итерация xi+1=n(xi)

7) Если |x(m)- x(m-1)| , то процесс закончен, иначе переход к пункту 6.

x = Hor(a0, b0, eps)

Call Iter(eps, x, n)

For i = 1 To 4

x(i) = 0: Next i: n = 0

Do : n = n + 1: l = False

For i = 1 To 4 : x0(i) = x(i) : Next i

For i = 1 To 4 : x(i) = b(i) / a(i, i)

For j = 1 To i – 1 : x(i) = x(i) - a(i, j) / a(i, i) * x0(j) : Next j

For j = i + 1 To 4 : x(i) = x(i) - a(i, j) / a(i, i) * x0(j) : Next j

If Abs(x(i) - x0(i)) > e Then : l = True

End If : Next i : Loop Until Not l : End Sub