Язык программирования VBA

Автор: Пользователь скрыл имя, 27 Марта 2015 в 20:48, курсовая работа

Краткое описание

Цель курсовой работы.
Рассмотреть объект Range и его свойства. Выполнить сравнительный анализ методов решения уравнений.
Задачи курсовой работы.
Подобрать теоретический материал по свойствам объекта Range и методам решения уравнений (половинного деления и касательных). Выполнить расчеты в MS Excel используя встроенный язык программирования VBA и сделать анализ полученных результатов.

Оглавление

Задание на курсовую работу 3
Введение 4
Глава 1. Теоретическая часть 5
1.1 Свойства объекта Range 5
1.2 Метод половинного деления 11
1.2.1 Описание метода половинного деления 11
1.2.2 Алгоритм метода половинного деления: 11
1.3 Метод касательных 12
1.3.1 Описание метода касательных 12
1.3.2 Алгоритм метода касательных 14
Глава 2. Практическая часть 15
2.1 Решение уравнений 15
2.2 Анализ полученных решений уравнений 15
Заключение 17
Список литературы 18
Приложение 19
Приложение 20
Приложение 21
Приложение 22

Файлы: 1 файл

Курсовая_Информатика_10.doc

— 177.00 Кб (Скачать)

В точке F(x0) строится касательная к кривой у = F(x) и ищется ее пересечение с осью х. Точка пересечения принимается за новую итерацию. Метод касательных самый быстрый способ нахождения корней уравнений [3,7].

Итерационная формула имеет вид:

Итерационный процесс проходит до того времени, пока не будет выполнено условие |f(x)|< e , где e - заданная точность.

В данном случае вторая производная функции положительна, поэтому в качестве начального приближения выбрана точка хо = b. Как видно из рисунка 2, метод имеет очень быструю сходимость среди всех методов решения нелинейных уравнений: обычно заданная точность достигается за 2-3 итерации.

 

 

Рисунок.2. Иллюстрация метода касательных

 

 

1.3.2 Алгоритм метода касательных

  1. Задается начальное приближение x0.
  2. Пока не выполнено условие остановки, в качестве которого можно взять или (то есть погрешность в нужных пределах), вычисляют новое приближение:     .

Сравнительный анализ методов

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

 

 

Глава 2. Практическая часть

2.1 Решение  уравнений

В приложении 1 приведен листинг модуля на VBA решения примера 1 методом половинного деления (дихотомии). В приложении 2 приведен листинг модуля на VBA решения примера 1 методом касательных. В приложении 3 приведен листинг модуля на VBA решения примера 2 методом половинного деления (дихотомии). В приложении 4 приведен листинг модуля на VBA решения примера 2 методом касательных.

2.2 Анализ полученных решений уравнений

Пример 1

Результаты решения примера приведены в таблице 1.

Таблица 1 – Результаты решения примера 1

 

Интервалы

(-6;-5)

(-0,5;1)

(1;2)

значение корня

количество итераций

значение корня

количество итераций

значение корня

количество итераций

метод дихотомии

-5,32

11

0

12

1,58

11

метод касательных

-5,32

3

0

1

1,58

4


 

Пример 2

Результаты решения примера приведены в таблице 2.

 

 

 

 

Таблица 2 – Результаты решения примера 2

 

Интервалы

 

(-1;-0)

(1;2)

значение корня

количество итераций

значение корня

количество итераций

метод дихотомии

-0,72

11

1,22

11

метод касательных

-0,72

4

1,22

5


 

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

 

 

 

 

 

 

 

Заключение

Еще не так давно упоминание Basic (Бейсик) в качестве языка программирования вызывало лишь снисходительную усмешку (а порой и негодование) у большинства профессиональных разработчиков ПО. Объяснялось это просто: "Да, есть такой язык, которым пользуются любители (если не сказать "чайники"). Но ставить "Васик" в один ряд с настоящими средствами программирования - это просто смешно".

Сейчас вряд ли кто-то рискнет высказать такое мнение: за прошедшие годы Microsoft Visual Basic (VB) превратился в самый популярный в мире инструмент разработки приложений. Более того, знание его основ сегодня фактически является обязательным для всех программистов, какими бы средствами они не пользовались. Это объясняется двумя взаимосвязанными факторами. Во-первых, VB очень широко распространен и используется не только в качестве самостоятельного средства, но и в виде системы программирования, встроенной в многочисленные прикладные программы (в частности MS Office). Во-вторых, превратившись в серьезный профессиональный инструмент, VB остался очень удобным средством для обучения программирования и решения небольших задач.

В результате выполнения курсовой работы были решены следующие задачи: закрепление и углубление теоретических знаний по разделам информатики; овладение навыками самостоятельной работы (решение примеров с помощью встроенного языка программирования VBA в MS Excel). Выполнен анализ полученных решений и сделан вывод по сравнению методов решения уравнений – метод касательных имеет очень быструю сходимость по сравнению с методом половинного деления.

 

 

 

 

 

Список литературы

  1. VBA в Excel  http://rrc.dgu.ru/res/informat/
  2. Википедия - Свободная энциклопедия http://ru.wikipedia.org/wiki
  3. Воробьев Г. Н., Данилова А. Н. “Практикум по численным методам.” - М.:”Высш. шк.”, 2007 г. -184 с.
  4. Гутер Р.С. , Овчинский Б.В. «Элементы численного анализа и математический обработки результатов опыта». Москва, «Наука», 1979
  5. Джон Уокенбах. Профессиональное программирование на VBA в Excel. Диалектика. М., С-Пб., Киев, 2003.
  6. Информатика: Учебник Под ред. проф. Н.В. Макаровой. Москва. Издательство "Финансы и статистика". 2005.
  7. Калиткин Н.Н. «Численные методы». Москва, «Наука», 1978
  8. Костомаров Д.П., Корухова Л.С., Манжелей С.Г. Программирование и численные методы. - М.: Издательство МГУ, 2001.
  9. Крылов В.И., Бабков В.В., Монастырский П.И. «Вычислительные методы». Москва, «Наука», 1976

 

 

 

 

Приложение 1

Решение примера 1 методом половинного деления

Sub dihotomia()

Dim a As Single: Dim b As Single: Dim c As Single: Dim e As Single: Dim kol As Integer

a = Val(InputBox("Введите левый конец интервала a"))

b = Val(InputBox("Введите правый конец  интервала b"))

e = Val(InputBox("Введите точность e"))

kol = 1: c = (a + b) / 2

Do While Abs(b - a) > e And f(c) <> 0

c = (a + b) / 2

If f(c) * f(a) < 0 Then b = c Else a = c

kol = kol + 1

Loop

MsgBox "корень уравнения x=" & Format(c, "0.##") & "количество итераций-" & kol

End Sub

 

Function f(x As Single) As Single

f = (x - 1) ^ 2 * 2 ^ x - 1

End Function

 

 

 

Приложение 2

 

Решение примера 1 методом касательных

Sub kasatelnaya()

Dim a As Single: Dim b As Single: Dim c As Single: Dim e As Single: Dim x0 As Single: Dim x1 As Single

Dim kol As Integer

a = Val(InputBox("Введите левый конец  интервала a"))

b = Val(InputBox("Введите правый конец интервала b"))

e = Val(InputBox("Введите точность e"))

If f(a) * f3(a) >= 0 Then x0 = a Else If f(b) * f3(b) >= 0 Then x0 = b Else MsgBox "не верный ввод данных"

kol = 0

10:

kol = kol + 1

x1 = x0 - f(x0) / f2(x0)

If Abs(x1 - x0) > e Then x0 = x0 - f(x0) / f2(x0): GoTo 10 Else MsgBox "корень уравнения x=" & Format(x1, "0.##") & "количество итераций - " & kol

End Sub

Function f(x As Single) As Single

f = (x - 1) ^ 2 * 2 ^ x - 1

End Function

Function f2(x As Single) As Single

f2 = 2 ^ x * (2 * x - 2 + (x - 1) ^ 2 * Log(2))

End Function

Function f3(x As Single) As Single

f3 = (2 + 2 * Log(2) * (x - 1)) * 2 ^ x + 2 ^ (2 * x) * Log(2) * (2 * x - 2 + (x - 1) ^ 2 * Log(2))

End Function

 

 

Приложение 3

 

Решение примера 2 методом половинного деления

Sub dihotomia2()

Dim a As Single: Dim b As Single: Dim c As Single: Dim e As Single

Dim kol As Integer

a = Val(InputBox("Введите левый конец  интервала a"))

b = Val(InputBox("Введите правый конец интервала b"))

e = Val(InputBox("Введите точность e"))

kol = 1

c = (a + b) / 2

Do While Abs(b - a) > e And f2(c) <> 0

c = (a + b) / 2

If f2(c) * f2(a) < 0 Then b = c Else a = c

kol = kol + 1

Loop

MsgBox "корень уравнения x=" & Format(c, "0.##") & "количество итераций-" & kol

End Sub

 

Function f2(x As Single) As Single

f2 = x ^ 4 - x - 1

End Function

 

 

Приложение 4

 

Решение примера 2 методом касательных

Sub kasatelnaya2()

Dim a As Single: Dim b As Single: Dim c As Single: Dim e As Single: Dim x0 As Single: Dim x1 As Single

Dim kol As Integer

a = Val(InputBox("Введите левый конец  интервала a"))

b = Val(InputBox("Введите правый конец интервала b"))

e = Val(InputBox("Введите точность e"))

If f(a) * f3(a) >= 0 Then x0 = a Else If f(b) * f3(b) >= 0 Then x0 = b Else MsgBox "не верный ввод данных"

kol = 0

10:

kol = kol + 1

x1 = x0 - f(x0) / f2(x0)

If Abs(x1 - x0) > e Then x0 = x0 - f(x0) / f2(x0): GoTo 10 Else MsgBox "корень уравнения x=" & Format(x1, "0.##") & "количество итераций - " & kol

End Sub

Function f(x As Single) As Single

f = x ^ 4 - x - 1

End Function

Function f2(x As Single) As Single

f2 = 4 * x ^ 3 - 1

End Function

Function f3(x As Single) As Single

f3 = 12 * x ^ 2

End Function

 


 



Информация о работе Язык программирования VBA