Федеральное государственное учреждение высшего профессионального образования «Ставропольский государственный аграрный университет»
Экономический факультет
Кафедра Прикладной информатики
Курсовая работа
На тему: Решение нелинейных и трансцендентных уравнений графическим и численным методами с применением технологии процедурного программирования
По дисциплине: Языки и системы программирования
Выполнил: студент II курса, 10 группы,
специальности «Профессиональное обучение (информатика, вычислительная техника и компьютерные технологии)»
Горлов Виктор Викторович
Проверил: ассистент
Криворучко Георгий Юрьевич
Дата сдачи:______________________
Дата защиты:____________________
Оценка:_________________________
Подпись:________________________
Ставрополь 2009
Содержание:
Введение
1. Листинг программы на языке программирования Microsoft Visual Basic for Applications
2. Проект программы в текстовом процессоре Microsoft Excel
3. Листинг программы на языке программирования Microsoft Small Basic
4. Проект программы на языке программирования Microsoft Small Basic
Заключение
Введение
Одним из лидеров по популярности в программировании среди языков программирования является Basic. Он представляет собой мощную систему различных возможных вариантов программирования. Созданный ещё в шестидесятых и впоследствии активно используемый будущим мультимиллионером Биллом Гейтсом язык за свою жизнь сорвал настоящий фурор. Именно во многом он принёс Биллу такие прибыли.
В то время разнообразие языков программирования не имело конца и края, написание своего языка превращалось в популярное хобби. Но именно простой и достаточно понятный Бейсик завоевал любовь и доверие миллионов профессиональных программистов и любителей. Конечно, можно спорить и говорить, что велика была пропаганда, но из всех языков того времени сейчас живым и бурно развивающимся остался только он. Интересно то, что в курсовой работе, помимо необходимого для написания офисных программ Visual Basic for Applications, будет использоваться и новый Small Basic, перспективный язык программирования.
Взяв на вооружение эти два языка, я постараюсь создать интересные проекты решения функции y = Sin(Sqr(1 – 0.4x2)) – x на отрезке [0; 1] методом дихотомии. Известно, что в начальной точке отрезка y = 0,841471.
1. Листинг программы на языке программирования Microsoft Visual Basic for Applications
Dim a, b, c, d, i As Double
Public Function F(x)
F = Sin(Sqr(1 - 0.4 * (x ^ 2))) - x
End Function
Private Sub CommandButton1_Click()
a = Val(ActiveSheet.Cells(1, 4))
b = Val(ActiveSheet.Cells(2, 4))
d = Val(ActiveSheet.Cells(3, 4))
Do
c = (a + b) / 2
If (Sgn(F(c)) = Sgn(F(a))) Then
a = c
Else
b = c
End If
Loop While (b - a) > d
ActiveSheet.Cells(2, 14) = c
a = Val(ActiveSheet.Cells(1, 4))
b = Val(ActiveSheet.Cells(2, 4))
d = (b - a) / 20
c = a
For i = 5 To 25
ActiveSheet.Cells(i, 2) = c
ActiveSheet.Cells(i, 3) = F(c)
c = c + d
Next
ActiveSheet.Cells(3, 9) = F(a)
If (Val(ActiveSheet.Cells(3, 9)) = Val(ActiveSheet.Cells(2, 9))) Then
ActiveSheet.Cells(4, 9) = "Yes"
Else
ActiveSheet.Cells(4, 9) = "No"
EndIf
If F(Val(ActiveSheet.Cells(2, 14))) = 0 Then
ActiveSheet.Cells(4, 14) = "Yes"
Else
ActiveSheet.Cells(4, 14) = "No"
EndIf
ActiveSheet.Cells(3, 14) = F(Val(ActiveSheet.Cells(2, 14)))
End Sub
2. Проект программы в текстовом процессоре Microsoft Excel
Рисунок 1. Интерфейс проекта в Microsoft Excel 2007.
3. Листинг программы на языке программирования Microsoft Small Basic
GraphicsWindow.Title = "Victor Gorlov y = Sin(Sqr(1 - 0.4 * (x ^ 2))) - x"
GraphicsWindow.BackgroundColor = “Khaki”
GraphicsWindow.Title = “Function y = Sin(Sqr(1 – 0.4(x ^ 2))) – x”
a = 0
b = 1
d = 0.001
x = a
c = a
Sub F
Function = Math.Sin(Math.SquareRoot(1 – 0.4 * Math.Power(x, 2))) – x
EndSub
Calculate()
GraphicsWindow.FontBold = “False”
GraphicsWindow.BrushColor = “Black”
GraphicsWindow.DrawText(10, 10, “Левая граница отрезка (a):”)
GraphicsWindow.DrawText(10, 30, “Правая граница отрезка (b):”)
GraphicsWindow.DrawText(10, 50, “Необходимая точность:”)
GraphicsWindow.DrawText(10, 70, “Численное решение:”)
GraphicsWindow.FontBold = “True”
GraphicsWindow.BrushColor = “Blue”
GraphicsWindow.DrawText(200, 10, a)
GraphicsWindow.DrawText(200, 30, b)
GraphicsWindow.DrawText(200, 50, d)
GraphicsWindow.DrawText(200, 70, c)
GraphicsWindow.FontBold = “False”
GraphicsWindow.BrushColor = “Black”
GraphicsWindow.DrawText(450, 8, “x=”)
GraphicsWindow.DrawText(500, 8, “F(x)=”)
d = (b – a) / 20
x = a
For i = 0 To 20
GraphicsWindow.BrushColor = “Green”
GraphicsWindow.DrawBoundText(450, 20+11*i, 50, x)
F()
GraphicsWindow.BrushColor = “Navy”
GraphicsWindow.DrawBoundText(500, 20+11*i, 50, Function)
x = x + d
EndFor
inx = a
maxX = b
x = inx
F()
minY = Function
x = maxX
F()
maxY = Function
If minY > maxY Then
x = maxY
maxY = minY
minY = x
EndIf
xScale = 400 * ((maxX – inx)/20)
yScale = 150 * (maxY – minY)
GraphicsWindow.DrawRectangle(8, 98, 404, 304)
GraphicsWindow.PenColor = “Green”
GraphicsWindow.BrushColor = “Green”
x = c
F()
aY = maxY – Function
GraphicsWindow.DrawLine(10, 100+aY*yScale, 410, 100+aY*yScale)
GraphicsWindow.DrawText(400, 100+aY*yScale, “X”)
x = a
For i = 0 To 20
F()
y = maxY – Function
GraphicsWindow.BrushColor = “Navy”
GraphicsWindow.FillEllipse(8+i*xScale, 98+y*yScale, 4, 4)
GraphicsWindow.PenWidth = 1
GraphicsWindow.PenColor = “Blue”
GraphicsWindow.BrushColor = “Black”
If Math.Remainder(i, 2) = 0 Then
GraphicsWindow.DrawText(10+i*xScale, 400, x)
GraphicsWindow.DrawLine(10+i*xScale, 100+y*yScale, 10+i*xScale, 400)
Else
GraphicsWindow.DrawText(10+i*xScale, 410, x)
GraphicsWindow.DrawLine(10+i*xScale, 100+y*yScale, 10+i*xScale, 410)
EndIf
x = x + d
EndFor
Sub Sgn
If Function > 0 Then
SgnTest = 1
ElseIf Function < 0 Then
SgnTest=-1
Else
SgnTest = 0
EndIf
EndSub
Sub Calculate
al = a
bl = b
While (bl – al) > d
c = (al + bl) / 2
x = c
F()
Sgn()
F1 = SgnTest
x = al
F()
Sgn()
F2 = SgnTest
If F1 = F2 Then
al = c
Else
bl = c
EndIf
EndWhile
GraphicsWindow.DrawText(270, 430, “© 2009 by Victor Gorlov for permission by Landgraph.ru”)
EndSub
4. Проект программы на языке программирования Microsoft Small Basic
Рисунок 2. Численное решение на языке Small Basic.
Заключение
В ходе разработки программы было выявлена суть различий между двумя языками программирования. VBA – объектно-ориентированный язык, поэтому мне не приходилось расписывать долго свойства объекта. Он, с помощью средств Excel, помог создать понятный график функции. Small Basic возможно более красив в работе с графикой, но система решения уравнений в нём, по-моему, слабовата. В общем, Small Basic создан для решения, наверно, не таких задач, но, не смотря на это, Small Basic успешно справился с поставленной задачей.
Ещё следует сказать, что из-за того, что в Microsoft Excel десятичные дроби пишутся через запятую, то не получилось правильно проверять совпадение значений функций, потому что в Бейсике в десятичных дробях ставится точка.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.