Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Рыбакова. Основы программирования. учебное посо....doc
Скачиваний:
3
Добавлен:
14.04.2019
Размер:
7.44 Mб
Скачать

2.11 Табулирование функции

2.11.1 Табулирование функции одной переменной

Постановка задачи. На отрезке [a,b] с шагом h протабулировать функцию f(x)=x2+Ln|x| и вывести на печать значения этой функции.

Технология выполнения задания:

Для решения задачи в области определения функции вводится сетка – совокупность точек {x0,x1,x2, …, xi}, где x0 = а, x1= x0+h, …, xi = xi-1+h, xn = b.

Тогда задача сводится к вычислению функции f в точках xi, то есть нужно вычислить f(x0), f(x1), …, f(xi), f(xn).

I вариант

1. Введем обозначения:

хn, xk – границы отрезка;

h – шаг;

х – точка;

f – значение функции в точке.

2. Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл For:

Sub primer()

Dim x As Single

Dim xn As Single

Dim xk As Single

Dim h As Single

Dim f As Single

xn = InputBox("xn=", xn)

xk = InputBox("xk=", xk)

h = InputBox("h=", h)

For x = xn To xk Step h

f = x ^ 2 + Log(Abs(x))

f = Format(f, "##.####")

x = Format(x, "##.##")

Debug.Print " x= " & x & " f= " & f

Next x

End Sub

II вариант

1. Введем обозначения:

хn, xk – границы отрезка;

h – шаг;

х – точка;

f – значение функции в точке .

2. Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя итерационный цикл:

Sub primer ()

Dim x As Single

Dim xn As Single

Dim xk As Single

Dim f As Single

Dim h As Single

xn = InputBox("xn=", xn)

xk = InputBox("xk=", xk)

h = InputBox("h=", h)

x = xn

Do

f = x^2+log(ABS(x))

Debug.Print "x= " & x & " f= " & f

x = x + h

Loop While x <= xk

End Sub

2.11.2 Табулирование функции двух переменных (вложенные циклы)

Постановка задачи. На интервале xn≤x≤xk с шагом Δх, для каждого у из интервала уn≤y≤yk с шагом Δу вычислить значение функции z=x2+ln|y|.

Технология выполнения задания:

Для решения задачи в области определения функции вводится разностная сетка {хi, yi}, где x0 = xn, x1 = x0+hx, …, xi = xi-1+hx, …, xn=xk; y0 = yn, y1 = y0+hy, …, yj = yj-1+hy, …, ym=yk.

- количество узлов сетки по оси х,

- количество узлов сетки по оси y.

Тогда задача сводится к вычислению функции z в точках xi и yj, то есть z(xi,yj), то есть z(xi,yj)=x2+ln|y|, где i=1,2,… n, j=1,2, … m.

I вариант:

1. Введем обозначения:

х,y – координаты узла сетки;

f – значение функции в нем;

хn, xk,yn,yk – границы отрезка;

hх,hy – шаги сетки.

2. Набрать пользовательскую процедуру, используя цикл For:

Sub primer()

Dim x As Single

Dim xn As Single

Dim xk As Single

Dim yn As Single

Dim yk As Single

Dim f As Single

Dim hx As Single

Dim hy As Single

xn = InputBox("xn=", xn)

xk = InputBox("xk=", xk)

yn = InputBox("yn=", yn)

yk = InputBox("yk=", yk)

hx = InputBox("hx=", hx)

hy = InputBox("hy=", hy)

For y = yn To yk Step hy

For x = xn To xk Step hx

f = x^2+log(ABS(у))

Debug.Print "x= " & x & " y= " & y & " f= " & f

Next x

Next y

End Sub

II вариант

1. Введем обозначения:

х,y – координаты узла сетки;

f – значение функции в нем;

хn, xk,yn,yk – границы отрезка;

hх,hy – шаги сетки.

2. Набрать процедуру, используя итерационный цикл:

Sub primer ()

Dim x As Single

Dim xn As Single

Dim xk As Single

Dim yn As Single

Dim yk As Single

Dim f As Single

Dim hx As Single

Dim hy As Single

xn = InputBox("xn=", xn)

xk = InputBox("xk=", xk)

yn = InputBox("yn=", yn)

yk = InputBox("yk=", yk)

hx = InputBox("hx=", hx)

hy = InputBox("hy=", hy)

y = yn

Do

x = xn

Do While x <= xk

f = x^2+log(ABS(x))

Debug.Print "x= " & x & " y= " & y & " f= " & f

x = x + hx

Loop

y = y + hy

Loop Until y > yk

End Sub

Лабораторная работа № 5