Главная страница

расчеты и графики Excel. 1. основные правила работы в excel


Скачать 395 Kb.
Название1. основные правила работы в excel
Анкоррасчеты и графики Excel.doc
Дата29.01.2017
Размер395 Kb.
Формат файлаdoc
Имя файларасчеты и графики Excel.doc
ТипДокументы
#1011
страница3 из 4
1   2   3   4


Здесь оператор Dim… явно описывает по типу "целые" (Integer) переменную n – число разбиений на интервалы величиной h промежутка интегрирования от a до b и вспомогательную переменную i, которая является параметром цикла For…Next i и изменяется в этом цикле с шагом 1.

В данной подпрограмме f(x) является подынтегральной функцией, от которой вычисляется определенный интеграл. Эта функция также должна быть задана подпрограммой. Если, например, f(x)=x2, то:

Function f(x)

f = x ^ 2

End Function


После написания этих двух функций в редакторе Visual Basic в Мастере функций, в разделе «определенные пользователем» появятся две соответствующие функции IntTrap и f. Для вычисления интеграла надо выбрать функцию IntTrap и задать параметры a и b – пределы интегрирования. Если нужно вычислить определенный интеграл от другой функции, измените функцию f(x) в редакторе Visual Basic. Функцию IntTrap менять не надо.

Приведем также пример подпрограммы-функции, вычисляющей определенный интеграл методом Симпсона. Этот метод более точный, чем метод трапеций. В методе Симпсона интеграл вычисляется по следующей итоговой формуле:

S=[ y0 + yn + 4*(y1 + y3+ … yn-1)+ 2*(y2 + y4 + … yn-2)] * h / 3

Соответствующая подпрограмма может быть написана так:

Function IntSimp(a, b, Optional n As Integer =128)

Dim i As Integer

h = (b - a) / n

s1 = 0: s2 = 0

For i = 1 To n - 1 Step 2

x=a + i * h

s1 = s1 + f(x)

Next i

For i = 2 To n - 2 Step 2

x=a + i * h

s2 = s2 + f(x)

Next x

IntSimp = (f(a) + f(b) + 4* s1 + 2 * s2) * h / 3

End Function


В этой подпрограмме-функции в число параметров введено число интервалов разбиения промежутка интегрирования, n. Этот параметр описан как целое число (Integer), он является необязательным (Optional) и ему назначено значение =128 по умолчанию. В результате Вы можете изменять точность вычисления интеграла, меняя значение параметра n в Мастере функций, а можете вообще не вводить этот параметр, тогда его значение останется равным 128.

Задание.


Введите в подпрограмме-функции IntTrap n в число необязательных параметров. Создайте подпрограмму-функцию, вычисляющую интеграл методом прямоугольников по формуле , вычислите несколько различных интегралов тремя различными методами, сравните точность вычислений при одинаковых n.
4.4. Решение обыкновенных дифференциальных уравнений. Задача Коши
Задача Коши для ОДУ первого порядка в общем виде формулируется следующим образом: определить значение функции Y(x) в точке x=b, имея ОДУ и начальное условие .

Приведем пример:

при . Определить при . Здесь.

Найдем приближенное численное решение этой задачи, применяя метод Эйлера. Заменив дифференциалы в ОДУ малыми конечными приращениями, вместо дифференциального уравнения получим соотношение: , где h – шаг приращения аргумента, – значения аргумента и функции на i-ом шаге.

Сначала запишем подпрограмму-функцию для f(x,y)

Function fxy(x,y)

fxy = exp(x)*(exp(-y)-1)

End Function

Здесь мы изменили имя функции, чтобы не путать ее с функцией f(x) предыдущего раздела. Далее запишем подпрограмму-функцию, определяющую конечное значение функции у методом Эйлера.

Function DU_Euler(НачХ, НачУ, КонХ, Optional n As Integer =100)

Const d=0.000001

h = (КонХ - НачХ) / n

y = НачУ

For x = НачХ To КонХ – h+d Step h

y = y + h * fxy(x, y)

Next x

DU_Euler = y

End Function

Параметры НачХ и НачУ определяют начальные условия, КонХ – значение аргумента, при котором ищется решения, n – число малых интервалов, на которое разбивается промежуток от НачХ до КонХ. Малая константа d введена, чтобы избежать досрочного прекращения цикла For…Next x из-за ошибок округления.

Общее аналитическое решение рассмотренного выше уравнения дается формулой:. Константа С определяется из начальных условий. В нашем случае это C=(exp(1)-1)*exp(1) и y(x=1)=0,268664. Введите подпрограммы-функции, включите Мастер функций и проверьте Ваше численное решение.

Более точное решение дает метод Рунге-Кутта четвертого порядка. Подпрограмма-функция для него представлена ниже. Убедитесь, что данный метод дает точный результат при значительно меньшем числе шагов разбиения интервала по x, чем в случае метода Эйлера.

Function DU_RunKut(НачХ, НачУ, КонХ, Optional n As Integer =10)

Const d=0.000001

h = (КонХ - НачХ) / n

y = НачУ

For x = НачХ To КонХ – h+d Step h

k1 = fxy(x, y)

k2 = fxy(x + h / 2, y + h * k1 / 2)

k3 = fxy(x + h / 2, y + h * k2 / 2)

k4 = fxy(x + h, y + h * k3)

y = y + (k1 + 2 * k2 + 2 * k3 + k4) * h / 6

Next x

DU_RunKut = y

End Function
1   2   3   4


написать администратору сайта