|
|
Категории: АстрономияБиология География Другие языки Интернет Информатика История Культура Литература Логика Математика Медицина Механика Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Транспорт Физика Философия Финансы Химия Экология Экономика Электроника |
Вычисление суммы. Рекуррентные формулы.Условие задачи: Для 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 |