Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы по ИТ.doc
Скачиваний:
2
Добавлен:
25.09.2019
Размер:
433.66 Кб
Скачать
  1. Вычисление суммы. Рекуррентные формулы.

Условие задачи: Для 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

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

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

  1. Нахождение «сигнальной» матрицы В = 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

  1. Решение уравнений вида 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

  1. Решение уравнений вида 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

  1. Решение уравнений вида 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