- •§ 1. Поняття про інформаційне моделювання
- •Опорний конспект
- •§ 2. Етапи розв’язання задач на комп’ютері
- •§ 3. Середовища розробки проектів
- •§ 4. Властивості елементів керування
- •§ 1. Поняття про інформаційне моделювання 2
- •Контрольна робота № 1
- •§ 5. Створення проектів
- •§ 6. Основні поняття мови програмування
- •9. Процедура кнопки «Обчислити» для задачі про калькулятор.
- •§ 7. Алгоритм та його властивості
- •Запитання
- •§ 8. Різновиди алгоритмів
- •Запитання
- •§ 9. Типи даних
- •§ 10. Лінійні програми
- •Запитання та вправи
- •Контрольна робота № 2
- •§11. Введення даних і виведення результатів
- •§ 12. Текстові файли даних
- •§ 13. Програми з розгалуженням
- •§ 1. Поняття про інформаційне моделювання 2
- •Запитання
- •§ 14. Елементи керування прапорці і перемикачі
- •§ 15. Алгоритмічна конструкція вибір
- •Контрольна робота № 3
- •§ 16*. Списки
- •§ 17. Підпрограми. Функції користувача
- •§ 18. Підпрограми. Процедури користувача
- •§ 19. Цикли. Цикл з параметром
- •§ 20. Задачі пошуку даних. Цикл «доки»
- •§ 21. Застосування циклів
- •Контрольна робота № 4
- •Розділ 2. Складені структури даних
- •§ 22. Одновимірні масиви. Створення масивів
- •§ 23. Пошук даних в одновимірному масиві
- •1. Пошук даних у масиві за заданим критерієм.
- •5. Проект «На метеостанції». Застосування масивів і процедур користувача у vb.
- •§ 24. Впорядкування одновимірного масиву
- •§ 1. Поняття про інформаційне моделювання 2
- •4. Моделювання предметних областей за допомогою масивів.
- •§ 25. Двовимірні масиви. Створення масивів
- •§ 26*. Опрацювання двовимірних масивів
- •1. Елементи керування DataGridView (vb) та DataGrid (vba).
- •Контрольна робота № 5
- •§ 27. Опрацювання текстових даних
- •§ 28. Структури даних (записи)
- •§ 1. Поняття про інформаційне моделювання 2
- •§ 29. Файли даних прямого доступу
- •5. Vb. Команди для роботи з файлами даних прямого доступу.
- •§ 30. Застосування файлів даних послідовного доступу
- •§ 31. Графіка у vb
- •§ 32. Поняття про об’єктно-орієнтоване програмування
- •Розділ 3. Задачі
- •Складніші задачі*
- •Розділ 4. Vba у програмах пакету ms office
- •§ 33. Застосування vba у ms word
- •§ 34. Vba у програмі ms excell
- •§ 35. Задача про облік товарів на складі
- •§ 36. Розв’язування математичних задач
- •§ 37. Робота 3 базами даних
- •Список літератури
- •§ 1. Поняття про інформаційне моделювання 2
§ 36. Розв’язування математичних задач
У цьому параграфі на прикладі методу простих ітерацій для розв’язування нелінійного рівняння розглянемо застосування VBA, властивостей та методів об’єктів електронної таблиці для розв’язування математичних задач.
Постановка задачі. Створити макрос у середовищі електронної таблиці для розв’язування нелінійного рівняння методом простих ітерацій і відобразити ітераційний процес у вигляді таблиці (рис. 4.9).
Рис. 4.9 Рис. 4.10
Теоретичні відомості про метод простих ітерацій. Щоб розв’язати нелінійне рівняння f(x) = 0 методом простих ітерацій, рівняння потрібно звести до вигляду х = z(х) так, щоб виконувалась умова |z(x)| < 1, яку називають умовою збіжності ітераційного процесу. Наприклад, рівняння х — cosx = 0 перетворюють до вигляду x = cosx. Метод реалізують за допомогою рекурентної формули так:
xі+1 = z(xi),
де х0 - довільне початкове наближення до розв’язку, і = 0, 1, 2, 3... Обчислення припиняють, коли різниця (яку називають похибкою) |xi+1 – xi| стане меншою від деякого заданого малого числа. Нехай це число 0,001. Якщо описана умова виконається, то вважають, що розв’язок знайдено з точністю 0,001.
Формули, які реалізують описаний метод засобами електронної таблиці, показані на рис. 4.10. Увага! Вручну треба заповнити лише один рядок таблиці А3:С3. Інші рядки заповнить VBA-програма (макрос). Результат роботи програми зображено на рис. 4.9. Розв’язок задачі міститься в клітинці В20. Це число 0,738.
У клітинку А4 будемо заносити число — результат обчислень з клітинки В3, у клітинку А5 — результат обчислень з клітинки В4 і т. д. Саме так реалізують ітераційний процес xi+1=z(xi).
3. Відомості про VBA, об’єкти ЕТ, їхні властивості та методи. Для розв’язування задачі застосуємо об’єкти WorksheetFunction та Application з властивостями Formula, ActiveSheet, Value, Columns, Font та Color, а також з методом Copy.
У VBA доступ до функцій MS Excel здійснюється через об’єкт WorksheetFunction. За замовчуванням він є властивістю об’єкта Application. У більшості випадків немає необхідності явно зазначати об’єкт WorksheetFunction для доступу до функцій MS Excel, оскільки він за замовчуванням є активним для об’єкта Application. Наприклад, розглянемо чотири коректні вирази і їхні значення для випадку таблиці з рис. 4.9:
Application.WorksheetFunction.Max(Columns(1)) ‘= 1
WorksheetFunction.Pi ‘= 3.14159265
Application.Sum(Range("a3:c3")) ‘= 2
Count(A1:A21) ‘=20
Значення властивостей Value та Formula об’єкта типу Range використовують з метою виконання типових дій — надання значень клітинкам та занесення формул. Значенням Value є числове значення заданої клітинки, а значенням Formula є вираз для формули у вигляді рядка символів. Наприклад:
Application.Range("A4").Value = 3.5 'тут а4 = 3,5
Application. Range("a5"). Formula = "= $А$4 + $А$4"
'тут в а5 є формула = $А$4 + $А$4, що дає результат 7.
Властивість ActiveSheet об’єктів з колекції Windows чи WorkBooks містить активну сторінку робочої книжки MS Excel. Ця властивість характерна також для об’єкта Application. Наведені нижче вирази повертають назву («Sheetl» або «Аркуші» тощо) активного аркуша робочої книжки файлу filename.xls:
Windows(''filename'').ActiveSheet.Name
Workbooks("filename.xls").ActiveSheet.Name
Application.ActiveSheet.Name
Колекція Columns містить стовпці активної сторінки чи певного діапазону. Цією властивістю володіють об’єкти Application, Range, Worksheet, наприклад:
Worksheets("Sheet1").Columns(1).Font.Bold = True
'шрифт у стовпці А буде жирним
Range("e5:h9").Columns(2).Value = 25
'клітинки другого стовпця f5:f9 діапазону e5:h9 містять 25
Функція CStr перетворює числа, дати і логічні вирази у рядкові дані. Розглянемо фрагменти коду
Dim MyDouble, MyString
MyDouble = 437.324 'Змінна MyDouble містить число 437.324
MyString = CStr(MyDouble) ' MyString містить рядок "437.324"
Метод Сору застосовують до різних об’єктів, зокрема, клітинки, діапазону, аркуша тощо. Цей метод копіює об’єкт, який його викликав у буфер обміну, якщо параметр методу не зазначено, або у зазначений параметром діапазон. Формули копіюються за правилами копіювання формул в ЕТ, тобто з модифікацією значень. Наприклад,
Cells(3, 2).Copy 'копіюємо вміст клітинки b3 у буфер обміну
Cells(3, 2).Copy(Cells(4, 2)) 'вміст клітинки b3 копіюється в b4.
Клітинка b4 (див. рис. 4.10) міститиме формулу = cos(c4).
Значення з буфера обміну можна вставити за допомогою методу Paste. Його застосовують зазвичай до об’єкта Selection. Якщо вставляється не одне значення, а цілий діапазон, то область, куди вставляють дані, спочатку потрібно виокремити методом Select.
4. Створення макросу. Запустимо програму Microsoft Excel. Створимо макрос з назвою Iteration. Призначення макросу — розв’язування нелінійного рівняння методом простої ітерації. Ознайомтеся з кодом макросу, де застосовано рекурсію — звертання процедури до самої себе:
Sub lteration()
Dim n As Integer
n = WorksheetFunction.CountA(ActiveSheet.Columns(1 )) + 1
'n - номер першої непорожньої клітинки стовпця А
Cells(n, 1 ).Value = Cells(n - 1, 2).Value
'в n-ту клітинку стовпця А копіюємо число з
'n—1-ї клітинки стовпця В
Cells(n - 1, 2).Copy (Cells(n, 2))
'в n-ту клітинку стовпця В копіюється формула = COS(An)
'з n—1-ї клітинки стовпця В
Cells(n, 3).Formula = "= abs(a" + CStr(n) + "-b" + CStr(n) + ")"
'формула в стовпці С формується як рядок = abs(an - bn)
If Abs(Cells(n, 3).Vaiue) > 0.001 Then
Iteration 'якщо точність не досягнута, продовжуємо
'ітераційний процес шляхом рекурсивного виклику функції
'Iteration, інакше результат виводимо червоним кольором
Else
Cells(n, 2).Font.Color = QBColor(12) 'замальовуємо клітинку
End If
End Sub
5. Розв’язування задачі. Введемо в електронну таблицю рядки з заголовком таблиці та заголовками трьох стовпців, як показано на рис. 4.9. Розграфимо таблицю вручну. Задамо необхідні формати клітинок (тут 7 цифр після десяткової крапки) та ширину стовпців. У клітинку АЗ введемо початкове наближення, а у клітинки В3 і С3 — формули (див. рис. 4.10).
Розташуємо на аркуші ЕТ кнопку «Розв’язати рівняння» та призначимо їй макрос Iteration. Клацнемо на кнопці «Розв’язати рівняння» і отримаємо розв’язок — таблицю, що зображена на рис. 4.9. Розв’язок задачі (0,7387603) відображено червоним кольором. Для отримання розв’язку було виконано 20-3=17 ітерацій. Збережемо файл.
Вправи
Вручну очистіть таблицю, зберігши лише вхідні дані (рядки 1, 2, 3). Розв’яжіть задачу з точністю 0,01 і 0,0001. Скільки треба ітерацій, щоб отримати розв’язки із заданими точностями?
Модифікуйте код макросу, щоб значення точності можна було задавати: а) на аркуші електронної таблиці, наприклад, у клітинці D1; б) функцією InputBox.
Розв’яжіть рівняння 2пх = sin их 4- п, де п - номер варіанта. Підказка. Для цього достатньо звести рівняння до вигляду, придатного до застосування методу простої ітерації, та змінити формулу у клітинці D3.
Розташуйте на аркуші ЕТ кнопку «Очистити» і складіть для неї макрос очищення клітинок таблиці (за винятком рядків 1-3).
Замініть у макросі Iteration команду
Cells(n, 3).Formula = "=abs(a" + CStr(n) + "b" + CStr(n) + ")",
(яка відповідає за заповнення стовпця С формулами) іншою командою, застосувавши метод Copy.
Розташуйте на аркуші електронної таблиці кнопку «Наступна ітерація» і запрограмуйте її так, щоб після натискання на неї відбувалося обчислення лише одного наступного кроку методу простих ітерацій і заповнення одного рядка в таблиці.
