Информатика и компьютеры
1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 (0 Голоса)

Практическая работа по информатике: Программирование в VBA

Тема 1: Вычисление значений таблично заданной функции.

Цель. Рассмотреть алгоритм решения таблично заданной функции и составить программу в VBA.

      Sin(x)+lg(x) x>3.5

Y=                               X 2;5 ΔX=0.25

    Cos2 (x) x<=3.5

Блок-схема

 

 

 

Мы водим в лист MS Excel начальные данные: Xmin, Xmax и h:

 

А

В

1

Xmin=

2

2

Xmax=

5

3

H=

0,25

Создаем макрос:Сервис – Макрос – макросы. Задвем имя(решение). Вводим программу:

Sub решение()

Xmin = Cells(1, 2)

Xmax = Cells(2, 2)

h = Cells(3, 2)

For X = Xmin To Xmax Step h

If 3.5 < X Then

y = Sin(X) + Log(X)

ElseIf X <= 3.5 Then

y = (Cos(X)) ^ 2

End If

Cells(i + 2, 4) = X

Cells(i + 2, 5) = y

i = i + 1

Next X

End Sub

Запускаем программу: кнопка F5.

Сворачиваем программу и на листе MS Excel нам выдает данные:

X

Y

2

0,173178

2,25

0,394602

2,5

0,641831

2,75

0,854335

3

0,980085

3,25

0,988294

3,5

0,876951

3,75

0,750195

4

0,629492

4,25

0,55193

4,5

0,526547

4,75

0,558852

5

0,650514

Это и есть решение нашей функции.

Строим диаграмму:

Вывод. В ходе работы мы рассмотрели алгоритм решения таблично заданной функции(блок-схему) и составили программу в VBA.

Задача №2.

Тема: Поиск экстремумов функции.

Цель. Рассмотреть методику нахождения экстремумов функции, составить блок-схему и программу вычисления в VBA.

X3 -6x2+9x+4

Найти максимум на промежутке 0,2;1,5 с шагом 0,3. точность поиска экстремумов 10-5

Максимум функции будет, когда она начинает убывать. Если она начала убывать, то на этом промежутке находится максимальное значение У. для достижения заданной точности пользуемся правилом: если модуль(у-у1)> желаемой точности, то возвращаемся на 2 шага назад, уменьшаем шаг в 10 раз и опять повторяем до тех пор, пока условие не будет выполняться.

Блок-схема.

Мы водим в лист MS Excel начальные данные: Xmin, Xmax и h:

 

А

В

1

Xmin=

0,2

2

Xmax=

1,5

3

H=

0,3

4

Eps=

0,00001

Создаем макрос:Сервис – Макрос – макросы. Задаем имя(экстремуму). Вводим программу:

Sub экстремуму()

Xmin = Cells(1, 2)

Xmax = Cells(2, 2)

h = Cells(3, 2)

eps = Cells(4, 2)

For X = Xmin To Xmax Step h

Y = X ^ 3 - 6 * X ^ 2 + 9 * X + 4

Cells(i + 1, 4) = X

Cells(i + 1, 5) = Y

i = i + 1

Next X

Ymax = 0

Do

X = Xmin

Y0 = Ymax

Do

Y = X ^ 3 - 6 * X ^ 2 + 9 * X + 4

Y1 = (X + h) ^ 3 - 6 * (X + h) ^ 2 + 9 * (X + h) + 4

X = X + h

Loop While Y1 > Y

Ymax = Y

XYmax = X - h

Xmin = X - 2 * h

h = h / 10

Loop While Abs(Y - Y1) > eps

Cells(i + 2, 6) = XYmax

Cells(i + 2, 7) = Ymax

End Sub

Запускаем программу: кнопка F5.

Сворачиваем программу и на листе MS Excel нам выдает данные:

0,2

5,568

   

0,5

7,125

   

0,8

7,872

   

1,1

7,971

   

1,4

7,584

   

0,75

7,796875

   

1,05

7,992625

   

1,2

7,888

   

1,35

7,675375

   

1,5

7,375

   
       

1,00005

8

   

Вывод. В ходе работы мы рассмотрели методику нахождения экстремума функции, составили блок-схему и программу вычисления в VBA.

Задача 3.

Тема 3: Решение нелинейных уравнений.

Цель. Рассмотреть методы решения нелинейных уравнений : метод деления отрезка пополам. Составить алгоритм решения и реализовать программы в VBA.

0.8x4-2x2

Интервал 1;2 . точность 10-5

1) Метод деления отрезка пополам.

Делим отрезок пополам:

X=(a+b)/2

Определяют знак функции f(x) и выбирают ту половину отрезка, на концах которого функция принимает значение разных знаков и деление повторяется.

Если нужно найти корень с заданной точностью, то деление повторяют, пока разность между предыдущем значением корня и вновь посчитанным не станет меньше заданной точности.

Блок-схема.

 

 Мы водим в лист MS Excel начальные данные: a, b,f(x), eps:

 

А

В

1

a=

1

2

b=

2

3

Eps=

0,00001

4

   

Создаем макрос: Сервис – Макрос – макросы. Задаем имя(нелинейное). Вводим программу:

Sub нелинейное()

a = Cells(1, 2)

b = Cells(2, 2)

eps = Cells(3, 2)

X = 0

Do

X0 = X

X = (a + b) / 2

If f(a) * f(X) > 0 Then

a = X

Else

b = X

End If

Cells(i + 3, 4) = X

Cells(i + 3, 5) = f(X)

i = i + 1

Loop While Abs(X - X0) > eps

End Sub

Function f(X)

f = 0.8 * X ^ 4 - 2 * X ^ 2

End Function

Запускаем программу: кнопка F5.

Сворачиваем программу и на листе MS Excel нам выдает данные:

X

f(x)

1,5

-0,45

1,75

1,378125

1,625

0,29707

1,5625

-0,11444

1,59375

0,081361

1,578125

-0,01897

1,585938

0,03058

1,582031

0,005652

1,580078

-0,0067

1,581055

-0,00053

1,581543

0,002558

1,581299

0,001012

1,581177

0,00024

1,581116

-0,00015

1,581146

4,69E-05

1,581131

-5E-05

1,581139

-1,4E-06

2)Метод хорд.

Основан на предположении, что на маленьком отрезке функция изменяется линейно. Тогда кривую можно заменить хордой и в качестве приближенного значения принять точку пересечения хорды с осью абсцисс. Точка Х находиться по формуле Х=a-((b-a)*f(a))/(f(b)-f(a)). Определяют знак функции f(x) и выбирают ту половину отрезка, на концах которого функция принимает значение разных знаков и деление повторяется.

Если нужно найти корень с заданной точностью, то деление повторяют, пока разность между предыдущем значением корня и вновь посчитанным не станет меньше заданной точности.

Эти два метода очень похожи и различаются только способом нахождения Х. все остальное то же самое.

 Мы водим в лист MS Excel начальные данные: a, b,f(x), eps:

 

А

В

1

a=

1

2

b=

2

3

Eps=

0,00001

4

   

Создаем макрос: Сервис – Макрос – макросы. Задаем имя(нелинейное). Вводим программу:

Sub нелинейное()

a = Cells(1, 2)

b = Cells(2, 2)

eps = Cells(3, 2)

X = 0

Do

X0 = X

X = a - ((b - a) * f(a)) / (f(b) - f(a))

If f(a) * f(X) > 0 Then

a = X

Else

b = X

End If

Cells(i + 3, 4) = X

Cells(i + 3, 5) = f(X)

i = i + 1

Loop While Abs(X - X0) > eps

End Sub

Function f(X)

f = 0.8 * X ^ 4 - 2 * X ^ 2

End Function

Вывод. В ходе работы мы рассмотрели методы решения нелинейных уравнений: метод деления отрезка пополам и метод хорд. Составили алгоритм решения и реализовали программу в VBA.

Добавить комментарий


Защитный код
Обновить

Дополнительные задания и задачи:

Google