Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка к РГР_без Маткад

.doc
Скачиваний:
0
Добавлен:
25.11.2018
Размер:
159.74 Кб
Скачать

2

Министерство образования и науки Украины

Харьковская национальная академия городского хозяйства

Методические указания

по выполнению расчетно-графической работы по дисциплине

«Математические методы и модели»

направление: Геоинформационные системы и технологии

г. Харьков 2006

  1. Подпрограммы. Передача результатов выполнения программ на рабочий лист Excel.

Если определённую последовательность действий необходимо выполнять в программе несколько раз (вызывать из разных мест), то возникает необходимость в использовании подпрограмм.

Подпрограмма - это самостоятельная программа, к которой можно обратиться неограниченное число раз из другой программы.

Для реализации подпрограмм в VBA используются операторы Sub и Function. Оператор Function возвращает некоторое значение, вычисленное внутри подпрограммы. Для выполнения этого механизма необходимо втеле подпрограммы присвоить вычисляемое значение переменные с именем полностью совпадающим с именем функции.

Пример:

Function F(t)

F = (1 / 3) * t ^ 3 - 5 / 2 * t ^ 2 - 6 * t + 20

End Function

Вывод результатов на рабочий лист Microsoft Excel может осуществляться несколькими способами. Один из наиболее простых заключается в прямом присвоении выводимого значения нужной ячейки. Для того чтобы обратиться к ячейке нужно использовать объект: Sheets(“имя листа”) и его метод Cells (индекс_строки, индекс_столбца).

Пример:

Sheets("Лист1").Cells(6, 5) = 5.678

В шестую строку и пятый столбец листа с именем «Лист1» выведется значение 5.678

Чтобы значение записанное в ячейку присвоить некоторой переменной достаточно выполнить присвоение наоборот.

Пример:

х1=Sheets("Лист1").Cells(7, 3)

Переменной х1 присвоить значение содержащееся в седьмой строке и третье столбце листа с именем «Лист1»

Ниже приведен с использованием подпрограмм и выводом результатов на рабочий лист листинг процедур и функций, реализующих метод дихотомии:

Function F(t)

F = (1 / 3) * t ^ 3 - 5 / 2 * t ^ 2 - 6 * t + 20

End Function

Sub Diho3()

Dim a, b, x As Single

a = Val(InputBox("Введите нижнюю границу интервала"))

b = Val(InputBox("Введите верхнюю границу интервала"))

Sheets("Лист1").Cells(1, 1) = "№"

Sheets("Лист1").Cells(1, 2) = "а"

Sheets("Лист1").Cells(1, 3) = "b"

Sheets("Лист1").Cells(1, 4) = "x"

Sheets("Лист1").Cells(1, 5) = "F(a)"

Sheets("Лист1").Cells(1, 6) = "F(b)"

Sheets("Лист1").Cells(1, 7) = "F(x)"

'Счетчик строчек для вывода на рабочий лист

i = 2

Do

x = (b - a) / 2 + a

Sheets("Лист1").Cells(i, 1) = i - 2

Sheets("Лист1").Cells(i, 2) = a

Sheets("Лист1").Cells(i, 3) = b

Sheets("Лист1").Cells(i, 4) = x

Sheets("Лист1").Cells(i, 5) = F(a)

Sheets("Лист1").Cells(i, 6) = F(b)

Sheets("Лист1").Cells(i, 7) = F(x)

If F(a) * F(x) < 0 Then a = a Else a = x

If F(x) * F(b) < 0 Then b = b Else b = x

i = i + 1

Loop While Abs(F(x)) > 0.01

Sheets("Лист1").Cells(i, 1) = "Ответ"

Sheets("Лист1").Cells(i, 4) = x

Sheets("Лист1").Cells(i, 7) = F(x)

End Sub

Результаты выведенные на рабочий лист Excel.

A

B

C

D

E

F

G

1

а

b

x

F(a)

F(b)

F(x)

2

0

-1

6

2,5

23,16667

-34

-5,41667

3

1

-1

2,5

0,75

23,16667

-5,41667

14,23438

4

2

0,75

2,5

1,625

14,23438

-5,41667

5,078776

5

3

1,625

2,5

2,0625

5,078776

-5,41667

-0,08521

6

4

1,625

2,0625

1,84375

5,078776

-0,08521

2,528188

7

5

1,84375

2,0625

1,953125

2,528188

-0,08521

1,228034

8

6

1,953125

2,0625

2,007813

1,228034

-0,08521

0,572886

9

7

2,007813

2,0625

2,035156

0,572886

-0,08521

0,244188

10

8

2,035156

2,0625

2,048828

0,244188

-0,08521

0,079576

11

9

2,048828

2,0625

2,055664

0,079576

-0,08521

-0,00279

12

Ответ

2,055664

-0,00279

13

Использование пользовательских форм.

I. Создание простейшей пользовательской формы.

1. Создайте новую книгу. Запустите редактор VBA, и вставить UserForm, как показано на рисунке.

2. У Вас появится диалоговое окно (форма), панель ниструментов, и окно свойств Properties. В окне свойств измените свойство Caption, которое позволяет нам изменить заголовок окна. Поменяйте его на осмысленное имя, например, Моя форма.

3. Разместите на форме кнопки. Выбирете инструмент кнопка (Button) и щелкните на вашей форме дважды. Одной кнопке присвойте имя Test, а второй "Выход", вот так.

4. Добавьте к кнопкам код. Двойной шелчок на кнопке и вы попадете в код вызываемый при нажатии кнопки. Добавьте для кнопки Test.

Private Sub CommandButton1_Click()

MsgBox ("кнопка Test нажата")

End Sub

И для второй:

Private Sub CommandButton2_Click()

Unload Me ‘выгружает форму из памяти

End Sub

Создайте макрос с именем FormsRun.

Sub FormsRun()

UserForm1.Show

End Sub

5. Запустите макрос. Появится диалоговое окно. Нажмите кнопку Test, появится сообщение, нажмите кнопку Выход, окно диалога закроется.

II.Пример формы для реализации решения нелинейного уравнения методом Дихотомии.

Программа работает таким образом: пользователь вводит коэффициенты функции и исходные пределы в верхнюю часть формы. При нажатии клавиши Решить выполняется считывание значений и итерации по методу Дихотомии. В нижнюю часть окна выводятся промежуточные вычисления по итерациям (Здесь число итераций ограничивается 8 по причинам интерфейсного характера).

Ниже приведена программа, реализующая метод и внешний вид формы после запуска и выполнения всех вычислений:

Function F(t, k3, k2, k1, k0)

F = k3 * t ^ 3 + k2 * t ^ 2 + k1 * t + k0

End Function

_____________________________________________

Private Sub CommandButton1_Click()

Dim a, b, x, k0, k1, k2, k3 As Single

Dim i,j As Integer

Dim objObject As Object

k0 = Val(UserForm1.txb_k0.Value)

k1 = Val(UserForm1.txb_k1.Value)

k2 = Val(UserForm1.txb_k2.Value)

k3 = Val(UserForm1.txb_k3.Value)

a = Val(UserForm1.txbA.Value)

b = Val(UserForm1.txbB.Value)

i = 0

Do

x = (b - a) / 2 + a

If F(a, k3, k2, k1, k0) * F(x, k3, k2, k1, k0) < 0 Then a = a Else a = x

If F(x, k3, k2, k1, k0) * F(b, k3, k2, k1, k0) < 0 Then b = b Else b = x

'Обход элементов формы чтобы найти нужные для вывода промежуточных значений

For j = 0 To UserForm1.Controls.Count - 1

' присвоить обьекту элемент управления

Set objObject = UserForm1.Controls.Item(j)

If objObject.Name = Trim("txb_i_") + Trim(Str(i)) Then objObject.Value = i

If objObject.Name = Trim("txb_a_") + Trim(Str(i)) Then objObject.Value = a

If objObject.Name = Trim("txb_b_") + Trim(Str(i)) Then objObject.Value = b

If objObject.Name = Trim("txb_x_") + Trim(Str(i)) Then objObject.Value = x

If objObject.Name = Trim("txb_fa_") + Trim(Str(i)) Then objObject.Value = Round(F(a, k3, k2, k1, k0), 5)

If objObject.Name = Trim("txb_fb_") + Trim(Str(i)) Then objObject.Value = Round(F(b, k3, k2, k1, k0), 5)

If objObject.Name = Trim("txb_fx_") + Trim(Str(i)) Then objObject.Value = Round(F(x, k3, k2, k1, k0), 5)

Next j

i = i + 1

Loop While Abs(F(x, k3, k2, k1, k0)) > 0.01

UserForm1.txb_x_res.Value = x

UserForm1.txb_f_res.Value = Round(F(x, k3, k2, k1, k0), 5)

End Sub

Кроме приведенных программ необходимо составить программу для запуска формы (присвоить ее новой кнопке для запуска прямо из среды Microsoft Excel без входа в редактор) и программу для закрытия формы (обработчик кнопки Выход).

Варианты заданий на программирование математических методов.

вар

Метод

Способ реализации

1

Метод Гаусса для решения СЛУ

VBA: с передачей результатов на рабочий лист Microsoft Excel. Вызов функций осуществить как пользовательскую функцию.

2

Метод правых прямоугольников

.

3

Линейная интерполяция функции

VBA: с передачей результатов на рабочий лист Microsoft Excel. Вызов функций осуществить как пользовательскую функцию.

4

Квадратичная интерполяция функция

VBA: с использованием пользовательской формы. Вызов макроса осуществить как кнопку на пользовательской панели инструментов.

5

Метод Ньютона для решения нелинейного уравнения

VBA: с использованием пользовательской формы. Вызов макроса осуществить как кнопку на пользовательской панели инструментов.

6

Метод Ньютона для решения нелинейного уравнения

VBA: с передачей результатов на рабочий лист Microsoft Excel. Вызов функций осуществить как пользовательскую функцию.

7

Правила Кремера для решения СЛУ

VBA: с использованием пользовательской формы. Вызов макроса осуществить как кнопку на пользовательской панели инструментов.

8

Линейная интерполяция функции

VBA: с использованием пользовательской формы. Вызов макроса осуществить как кнопку на пользовательской панели инструментов.

9

Метод Ньютона для решения СНЛУ

VBA: с передачей результатов на рабочий лист Microsoft Excel. Вызов функций осуществить как пользовательскую функцию.

10

Метод правых прямоугольников

VBA: с передачей результатов на рабочий лист Microsoft Excel. Вызов функций осуществить как пользовательскую функцию.

11

Метод правых прямоугольников

VBA: с использованием пользовательской формы. Вызов макроса осуществить как кнопку на пользовательской панели инструментов.

12

Метод трапеций

VBA: с передачей результатов на рабочий лист Microsoft Excel. Вызов функций осуществить как пользовательскую функцию.

13

Квадратичная интерполяция функция

VBA: с передачей результатов на рабочий лист Microsoft Excel. Вызов функций осуществить как пользовательскую функцию.

14

Метод Ньютона для решения СНЛУ

VBA: с использованием пользовательской формы. Вызов макроса осуществить как кнопку на пользовательской панели инструментов.

15

Метод Гаусса для решения СЛУ

VBA: с использованием пользовательской формы. Вызов макроса осуществить как кнопку на пользовательской панели инструментов.

16

Метод Симпсона

VBA: с использованием пользовательской формы. Вызов макроса осуществить как кнопку на пользовательской панели инструментов.

17

Метод Симпсона

VBA: с передачей результатов на рабочий лист Microsoft Excel. Вызов функций осуществить как пользовательскую функцию.

18

Правила Кремера для решения СЛУ

VBA: с передачей результатов на рабочий лист Microsoft Excel. Вызов функций осуществить как пользовательскую функцию.

19

Метод левых прямоугольников

VBA: с использованием пользовательской формы. Вызов макроса осуществить как кнопку на пользовательской панели инструментов.

20

Метод левых прямоугольников

VBA: с передачей результатов на рабочий лист Microsoft Excel. Вызов функций осуществить как пользовательскую функцию.

21

Метод трапеций

VBA: с использованием пользовательской формы. Вызов макроса осуществить как кнопку на пользовательской панели инструментов.

  1. Требования к выполнению расчетно-графического задания по математическим методам и моделированию.

К защите курсовая работа представляется в виде пояснительной записки на 10-15 листах (формат А4). Пояснительня записки включает:

  • Титульный лист;

  • Введение: цель работы, задание;

  • Словесное описание метода;

  • Блок-схему алгоритма, реализующего метод;

  • Листинг программы;

  • Скриншоты форм и результатов;

  • Тестирование результатов программы (не менее трех различных условий);

  • Выводы.

Пояснительная записка представляется к защите в сброшюрованном виде и с пронумерованными страницами (титульный лист считается первой страницей, но номер страницы на нем не проставляется). Шрифт текста 12 - 14 пт. Поля документа не менее 20 мм и не более 25 мм с каждой стороны. Каждый раздел пояснительной записки начинается с новой страницы.

Обязательным является приложение на магнитном носителе (дискета 3,5”), включающее программные разработки и пояснительную записку.

Выполненная работа подлежит защите. По результатам защиты проставляется оценка.

При защите студент демонстрирует тестирование разработки; отвечает на вопросы, касающиеся математического метода решения задачи, алгоритмизации, методов и понятий, используемых при программной реализации.