|
Вопрос про алгоритм.
|
|||
---|---|---|---|
#18+
Всем добрый день! Извиняюсь за беспокойство. подскажите, пожалуйста, никак не могу догадаться с решением следующего алгоритма: Вот привожу его дословно. Задача не ахти я сложная. Итак, я ищу максимум, как Вы видите некоторой функции, которую разбил на две части. Но проблема и беда тут в том, что максимум тут находится один, а ведь данный алгоритм не предполагает определения второго максимума, равного максимуму первому. Подскажите, пожалуйста, как мне подправить алгоритм, чтобы учесть этот момент. Спасибо большое. Итак, алгоритм внизу: a = 5.0 h = 1.5708 susp FOR i=1 TO 60000 p1 = -(SIN(i*h)/i) p2 = a*(1-COS(i*h))/(i*i) B(i) = p1+p2 ENDFOR maxi = -50000 nom = 0 FOR i=1 TO 60000 do IF B(i)>maxi maxi = B(i) nom = i ENDIF endfor a = 5.0 h = 1.5708 FOR i=1 TO 60000 p1 = -(SIN(i*h)/i) p2 = a*(1-COS(i*h))/(i*i) B(i) = p1+p2 ENDFOR maxi = -50000 nom = 0 FOR i=1 TO 60000 do IF B(i)>maxi maxi = B(i) nom = i ENDIF endfor ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:03 |
|
Вопрос про алгоритм.
|
|||
---|---|---|---|
#18+
У вас первый код не отличается от второго ничем. От слова "совсем". И почему его результат должен быть другим? Вы создаете линейную последовательность B(i). Это линия. Откуда здесь может взяться несколько максимумов? В сплошном списке чисел нет и не может быть двух максимальных значений. Только одно Максимумы надо искать сразу в первом цикле. Если Вы исходите из предположения, что последовательность непрерывная, то логика должна быть такая Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 10:11 |
|
Вопрос про алгоритм.
|
|||
---|---|---|---|
#18+
Первым проходом найди максимум (это уже есть как понимаю), вторым проходом все точки равные максимуму. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 10:11 |
|
Вопрос про алгоритм.
|
|||
---|---|---|---|
#18+
Dima TПервым проходом найди максимум (это уже есть как понимаю), вторым проходом все точки равные максимуму. ТСу надо найти не MAX() - наибольшее значение, а экстремум, что не одно и то же, собственно ВладимирМ решение сформулировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 12:51 |
|
|
start [/forum/topic.php?fid=41&fpage=8&tid=1581695]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
73ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 319ms |
total: | 475ms |
0 / 0 |