Читайте также:
|
|
Решение нелинейного уравнения методом Ньютона.
Sub Newton(x0 As Double, x As Double, count (заголовок) As Integer)
count=0
start:
x=x0-f(x0)/f1(x0) ‘Расчётная формула метода Ньютона
count=count+1
Debug.Print count; x; x0 ‘Отладочная печать
If x=x0 Then Exit Sub ‘Выход из процедуры
x0=x:GoTo start
End Sub
Чтобы написать уравнение, нужно написать уравнение касательной к графику функции f(x) в точке x0, а затем искать точку пересечения с осью 0x.
Sub knopka()
Dim a As Double, b As Double, x As Double, i As Integer
a=0:b=1,5: i=1
For x=a to b step(b-a)/20 ‘Вычисление таблицы
i=i+1 со
cells(i,1)=x:cells(i,2)=f(x) значениями
next x
Call Newton (b,x,i) ‘вызов процедуры
Cells(2,3)=x:cells(2,4)=f(x):cells(2,5)=i
End Sub
При вызове функции происходит подстановка фактических параметров вместо формальных, указанных в заголовке процедуры (вместо x0). Сопоставление междуфактическими и формальными параметрами происходит не по именам (названиям) переменных, а по их порядковым номерам в списке параметров)
Переменная из Call сопоставляется с первой из названия Sub Newton т.е.
b-x0
x-x
i-count
Function f(x As Double) As Double
f=Cos(x)-x ‘Функция
End Function
Function f1(x As Double) As Double
f1=-Sin(x)-1 ‘Производная
End Function
9. Приближенное решение задачи Коши.. о движении камня, брошенного под углом к горизонту с учетом силы трения.
Sub Кнопка()
Dim v As Double, alpha As Double, m As Double
Dim a As Double, b As Double, c As Double, dt As Double
Dim t As Double, x As Double, y As Double
Dim vx As Double, vy As Double, ax As Double, ay As Double
Dim ftr As Double, s_alpha(для Sin) As Double, c_alpha(для Cos) As Double
Dim count As Integer
const g=9,81
const Pi=3,14159265358979
Range (“A4:H1000”).Clear Contents
v=cells(2,1)
alpha=cells(2,2)*Pi/180
a=cells(2,4):b=cells(2,5):c=cells(2,6)
m=cells(2,3)
dt=cells(2,7)
s+alpha=sin(alpha):c_alpha=cos(alpha)
t=0:count=0:x=0:y=0
vx=v*c_alpha:vy=v*s_alpha
povtor:
ftr=a*v^2+b*v+c ‘модуль силы сопротивления
ax=-sgn(vx)*ftr*c_alpha/m ‘Ускорение по Ox и Oy;
ay=-g-sgn(vy)*ftr*s_alpha/m sgn-знак
cells(4+count,1)=t
cells(4+count,2)=x
cells(4+count,3)=y
cells(4+count,4)=vx
cells(4+count,5)=vy
cells(4+count,6)=ax
cells(4+count,7)=ay
cells(4+count,8)=ftr
count=count+1
t=t+dt
cells(2,8)=t
vx=vx+ax*dt
vy=vy+ay*dt
v=sqr(vx^2+vy^2)
s_alpha=vy/v
c_alpha=vx/v
x=x+vx*dt
y=y+vy*dt
If y>0 then GoTo povtor
End Sub
10. Программирование вложенных циклов.
Вложенные циклы. Тело любого оператора цикла может содержать дру-
гие циклы. Такие конструкции называют вложенными циклами. Вложенные
циклы (цикл в цикле) применяют обычно в задачах, когда требуется связать или
сравнить каждый элемент одного множества с каждым элементом другого
множества.
Правила записи вложенных циклов:
1.при записи вложенных циклов используется правило матрешки, т.е. сначала закрывается цикл, который открылся последним, затем закрывается цикл, который открылся предпоследним и т.д.
2.для каждого значения параметра внешнего цикла, параметр внутреннего цикла изменяется от начального значения до конечного с заданным шагом.
3.в качестве параметра цикла для вложенных циклов нельзя использовать одну и ту же переменую,т.к.к изменение переменной внешнего цикла нарушится изменениями переменной внутреннего цикла.
4.Если циклы FOR/NEXT вложены в друг друга,то в качестве последнего оператора можно использовать один оператор NEXT.(если циклы заканчиваются одновременно).
Пример программы с вложенными циклами в VBA:
For i = 1 To 7
For j = 1 To 5
If i <= j Then
Cells(i, j) = 1
End If
Next j
Next i
Н-р,
Дата добавления: 2015-11-13; просмотров: 46 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Назначение и способы реализации на VBA циклов со счетчиком. Синтаксис оператора for.. | | | Простейшие методы сортировки: пузырьковая, поиском максимального элемента. |