РефератыИнформатикаПрПрограммирование и основы алгоритмизации 3

Программирование и основы алгоритмизации 3

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ


ГОСУДАРСТВЕННОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ


ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ


КАМСКАЯ ГОСУДАРСТВЕННАЯ ИНЖЕНЕРНО - ЭКОНОМИЧЕСКАЯ


АКАДЕМИЯ


Кафедра А и ИТ


Курсовая работа


по дисциплине «Программирование и основы алгоритмизации»


Вариант № 22


Выполнил: студент


группы № 4241-с


Валиев М.Р.


Проверил: доцент


Савицкий С.К.


Набережные Челны


2011


Задание


1. Найти минимум функции tg(0.55x+0.1)–x2
методом золотого сечения.


1.1 Выбрать начальный отрезок, содержащий минимум функции. Для этого построить график функции. При построении графиков функции следует предварительно выбрать расположение координатных осей и масштаб на них.


1.2 Составить блок-схему алгоритма.


1.3 Отладить и выполнить программу на ЭВМ, получить с заданной точностью е=10-4
максимум функции.


1.4 Для контроля подставить найденный корень в уравнение и сравнить результат с «е» (он должен быть меньше «е»).


1.5 Проверить полученное решение путем построения графиков в Excel или MathCAD.


2. Дана целочисленная матрица a[ij] i, j=1, ..., n. По­лучить b1
, ..., bn
, где bi
– это maxaij
1 £ j £n.


2.1 Составить блок-схему алгоритма.


2.2 Отладить и выполнить программу на ЭВМ.


Теоретическое обоснование методов решения


Задание 1


Метод золотого сечения. Этот метод является одним из наиболее эффективных методов, в котором при ограниченном количестве вычислений целевой функции f(x) достигается наилучшая точность. Суть метода заклюю чается в построении последовательности отрезков [a0
,b0
], [a1
,b1
], … стягивающихся к точке минимума функции f(x). На каждом шаге, за исключением первого, вычисление значения функции f(x) производится лишь один раз. Эта точка, называемая золотым сечением, выбирается так, чтобы отношение длинны большого отрезка к длине всего отрезка равнялось отношению длинны меньшего отрезка к длине большого отрезка lб
/l=lм
/lб
. Поскольку неизвестно в какой последовательности (lм
и lб
или lм
и lб
) делить интервал неопределенности, то рассматривают внутренние точки, соответствующие двум способам деления.


На первом шаге процесса оптимизации внутри отрезка [a0
,b0
] выбираются две внутренние точки х1
и х2
и вычисляются значения целевой функции f(x1
) f(x2
). Поскольку в данном случае f(x1
) < f(x2
) , очевидно, что минимум расположен на одном из прилегающих к x1
отрезков [a1
x1
] или [x1
x2
]. Поэтому отрезок [x2
b0
] можно отбросить, сузив тем самым первоначальный интервал неопределенности.


Второй шаг проводим на отрезке [a1
,b1
], где a1
=a0
b1
=x2
. Нужно снова выбрать две внутренние точки, но одна из них х1
осталась из предыдущего шага x3
=x1
, поэтому достаточно выбрать лишь одну точку x4
, вычислить значение f(x4
) и провести сравнение. Поскольку f(x4
) < f(x3
) , ясно что минимум находится на отрезке [х4
,b1
]. Обозначим этот отрезок [a2
,b2
], снова выберем одну внутреннюю точку и повторим процедуру сужения интервала неопределенности. Процесс оптимизации повторяется до тех пор, пока длинна очередного отрезка [an
,bn
] не станет меньше заданной величины е


Задание 2


Массив
- это регулярная структура данных одного типа, где все компоненты могут выбираться произвольно и являются одинаково доступными. Регулярность заключается в том, что все данные организованы по одной закономерности. Для обеспечения доступа к любому элементу массива вводится специальное число называемое индексом.


Индекс
- это целое число или совокупность целых чисел, указывающих местоположение элемента в массиве.


Массивы применяются в широкой области приложений, например:


1. Векторы. Управляющие воздействия, которые изменяют состояние системы, обычно задаются в виде векторов, называемых управляющими векторами.


2. Матрицы. Системы управления часто описывают в виде систем дифференциальных уравнений, для решения которых применяют представление данных в виде систем матриц.


3. Тензоры. Для графических данных на экране дисплея помимо двухмерного массива, отображающего место символа или элемента, существует еще и третья координата - цветовая гамма.


Листинг программ

/>


Текст программы 1:


Dim a As Double, b As Double 'отрезок


Dim m 'масштаб


Dim i 'счетчик


DimX 'координата х


DimY 'значение f(x)


Dimu 'смещение по Оу


Dimw 'смещение по оси Ох


Private Sub Command1_Click()


Cls 'очистка экрана


a = -5


b = 5


Calldraw 'вызов функции, которая рисует график


EndSub


PublicSubdraw() 'функция, рисующая график


'разметка по Ох (правая часть)


For i = 0 To b + 1


Line (w + i * m, u - 0.1)-(w + i * m, u + 0.1)


Printi;


Nexti


'разметка по Ох (левая часть)


For i = 0 To a - 1 Step -1


Line (w + i * m, u - 0.1)-(w + i * m, u + 0.1)


Printi;


Nexti


'разметка по Оу (верхняя часть)


For i = 1 To 20


Line (w - 0.1, u - i * m)-(w + 0.1, u - i * m)


Printi


Nexti


'разметка по Оу (нижняя часть)


For i = 1 To 4


Line (w - 0.1, u + i * m)-(w + 0.1, u + i * m)


Print "-"; i


Nexti


'рисование графика по точкам


For X = a To b Step 0.0001


Y = -(Tan(0.55 * X + 0.1) - X ^ 2)


PSet (X * m - a * m + 0 + m * a + w, Y * m + u)


Next


'рисование осей Ох и Оу


Line (0, u)-(30, u)


Line (w, 0)-(w, 30)


End Sub


Private Sub Form_Load()


m = 1.5 'начальный масштаб


u = 3 'начальное смещение координат относительно Оy


w = 4 'начальное смещение координат относительно Оx


EndSub


'вычисление минимума методом сечения


Private Sub Command4_Click()


Dim a, b, x1, x2, fx1, fx2


Dim c As Currency


Dim f_c As Currency


Dim a0, b0, e


a0 = Val(InputBox("a"))


b0 = Val(InputBox("b"))


a = a0


b = b0


x1 = ((b0 - a0) * 0.382) + a0


x2 = ((b0 - a0) * 0.618) + a0


Do Until Abs(b - a) < 0.0001


If (Tan(0.55 * x1 + 0.1) - x1 ^ 2) < (Tan(0.55 * x2 + 0.1) - x2 ^ 2) Then


b = x2


x2 = x1


x1 = ((b - a) * 0.382) + a


Else


a = x1


x1 = x2


x2 = ((b - a) * 0.618) + a


End If


Loop


c = (a + b) / 2


f_c = Tan(0.55 * c + 0.1) - c ^ 2


Text4.Text = c


Text3.Text = f_c


Calldraw 'вызов функции, которая рисует график


EndSub


Текст программы 2:


Private Sub Command1_Click()


Cls ' очистка экрана


n = InputBox("Введите порядок матрицы")


ReDima(n, n) AsDouble 'переопределение размера массива


ReDimb(n) AsDouble


'ввод элементов матрицы


For i = 1 To n


b(i) = a(i, 1)


For j = 1 To n


a(i, j) = InputBox("Введите пожалуста элемент матрицы: (" + Str(i) + "," + Str(j) + "):")


If a(i, j) > b(i) Then b(i) = a(i, j)


Next j


Print b(i)


Next i


End Sub


Private Sub zad_Click()


MsgBox ("Дана целочисленная матрица a[ij] i, j=1, ..., n. Получить b[1], ..., b[n], где b[i] - это max a[ij]= 1<= j<= n.")


End Sub


Скриншоты программ




Блок-схемы алгоритмов решения


Метод золотого сечения (1 задание)



2 задание



Проверка графика в
MathCAD




Вывод:
Я научился пользоваться средствами программирования VisualBasicдля нахождения экстремума функции методом золотого сечения и для получения матрицы из нулей и единиц по исходной матрице и по заданному условию


Список использованной литературы


1. Волченков Н. Г. Программирование на VisualBasic 6: Учебное пособие Ч.1 - Ч.3 - М.: ИНФРА-М, 2000.


2. VisualBasic 6.0: Пер. с англ. - СПб.: БХВ-Петербург, 2004. - 992 с.: ил. ISBN 5-8206-0019-3


3. Иванов М.Н., Суворов С.В. Информатика Часть 2. Программирование. Учебно-методическое пособие - М.; МГИУ, 2004


4. Слепцова Л.Д. Программирование на языке VBA. Самоучитель,: -М.: Издательский дом «Вильямс», 2004


5. Браун С. VisualBasic 5 c самого начала - СПб : Питер, 1998

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Программирование и основы алгоритмизации 3

Слов:1314
Символов:10559
Размер:20.62 Кб.