Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Производная алгоритмическая структура Поиск максимума

Поиск

 

Используется для нахождения максимального элемента массива и его местоположения. Условие поиска максимума определяется выражением:

<Элемент массива> > <Ключ поиска>

 

Особенности алгоритма.

1. Ключу поиска присваивается начальное значение. Начальным значением может быть:

– значение любого элемента массива;

– число, намного меньшее любого из возможных значений, которые могут принимать элементы массива.

2. Вводится одна дополнительная переменная, которая должна хранить значение, определяющее местоположение максимального элемента. Если обрабатывается двухмерный массив, то вводятся две дополнительные переменные: первая – для хранения индекса, определяющего местоположение в строках массива, а вторая – в столбцах маcсива.

3. Организуется циклический вычислительный процесс: цикл или цикл в цикле. Телом цикла служит структура Развилка, определяющая условие поиска элемента массива, имеющего максимальное значение.

Если условие поиска является истинным, то значение Ключа поиска заменяется значением элемента массива, а дополнительной переменной присваивается значение, определяющее местоположение соответствующего элемента массива.

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

5. После окончания циклического вычислительного процесса значение Ключа поиска равно максимальному значению элемента массива, а дополнительные переменные (переменная) хранят значения, определяющие местоположение этого элемента в массиве.

 

П р и м е ч а н и е. Если в массиве несколько элементов имеют одинаковые значения, равные максимальному (используется знак >), то дополнительные переменные (дополнительная переменная) хранят значения, определяющие местоположение первого элемента массива, имеющего максимальное значение. Если в выражении, определяющем условие поиска, используется знак ≥, – то последнего.

 

Пример 5.

Разработать информационную технологию, позволяющую определить значение и местоположение элемента одномерного массива А произвольной размерности m, равного максимальному значению.

Входные данные: m – целое число;

A=[ai], – массив вещественных чисел.

Выходные данные:

k – значение максимального элемента массива, вещественное число;

q – значение индекса, определяющего местоположение максимального элемента, целое число.

Математическая модель:

k = a1 , q =1;

для i = 2..m, eсли ai > k, то k = ai, q = i

 

 

Схема алгоритма:

 
 

 


Код приложения:

Option Bаse 1

Private Sub Form_Activate()

Dim i As Integer, m As Integer, q As Integer, k As Double, a() As Double

m=InputBox(“ Введите размерность массива”)

ReDim a(m)

For i=1 To m

a(i)=InputBox(“a(“ & i & ”)”)

Next

k=a(1): q=1

For i=1 To m

If a(i)>k then

k=a(i): q=i

End If

Next

Print “Максимальное значение =” & k & Сhr(10) & _

”Индекс элемента массива = “ & q

Print Chr(10);“Исходный массив”

For i=1 To m

Print “a(“ & i & ”) =“ & Format(a(i),”0.000”)

Next

End Sub

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

 

Пример 6.

Разработать информационную технологию, позволяющую определить максимальное значение функции y=sin2(x)+cos(z/2)2 при изменении х от начального значения х0 до конечного значения хк с шагом Dх и z от начального значения z0 до конечного значения zk с шагом Dz.

Входные данные: х0, z0, хk, zk – вещественные числа;

dх – шаг изменения переменной х, вещественное число;

dz – шаг изменения переменной z, вещественное число.

Выходные данные:

fmax – максимальное значение функции, вещественное число;

xmax – аргумент х, соответствующий максимальному значению функции, вещественное число;

zmax – аргумент z, соответствующий максимальному значению функции, вещественное число.

 

Математическая модель:

fmax = –10000,0, xmax = х0, zmax = z0;

для x = x0..xk, z = z0..zk,

,

если y > fmax, то fmax = y, xmax = x, zmax = z

 

 

Схема алгоритма:

 
 

 


Код приложения:

Private Sub Command1_Click()

Dim x0 As Single, xk As Single, dx As Single, z0 As Single, zk As Single

Dim dz As Single, x As Single, z As Single, y As Single

Dim fmax As Single, xmax As Single, zmax As Single

х0 = Text1: xk = Text2: dx = Text3: z0 = Text4: zk = Text5: dz = Text6

fmax = -10000.0

xmax = х0: zmax = z0

For x = x0 To xk Step dx

For z = z0 To zk Step dz

y = Sin(x) ^ 2 + Cos((z / 2) ^ 2)

If y > fmax Then

fmax = y

xmax = x: zmax = z

End If

Next z

Next x

Print "Максимальное значение функции равно " & Format(fmax, _ "0.00") & Chr(10) & "Значение аргумента х=" & Format(xmax, _ "0.000") & Chr(10) & "Значение аргумента z=" & Format(zmax, "0.00")

End Sub

 

Результат выполнения кода приложения представлен на форме:

 
 

 



Поделиться:


Последнее изменение этой страницы: 2016-12-10; просмотров: 624; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.92.56 (0.01 с.)