Подсчет суммы f(x) в цикле
-
- interested
- Сообщения: 6
- Зарегистрирован: 30 дек 2011, 15:23
- Версия LabVIEW: 2011
- Контактная информация:
Подсчет суммы f(x) в цикле
Всем привет! Я в LabVIEW относительно новичок. Был по нему курс в институте, в качестве курсовой я реализовал матричный калькулятор, но с тех пор все, разумеется выветрилось (лет 10 прошло).
В чем заключается вопрос. Я недавно стал участником проекта http://projecteuler.net/. Там нужно решать разлчные математические задачки, для решения нужно писать программы. Полученные ответы надо вводить на сайте, можно наблюдать за своим прогрессом.
Большинство задач связаны с теорией чисел. Я писал программы для их решения в C++ Builder, MSVC++ и Java. А вот пару дней назад увидел в статистике, что есть участники, которые пытаются решать в LabVIEW. И я решил тряхнуть стариной.
Но тут же возникли трудности. Например, одна задача, самая простая, звучит так. Требуется подсчитать сумму натуральных чисел от 1 до 1000, которые делятся на 3 или на 5. При реализации "наивным" методом требуется эту сумму считать в цикле, пробегая все числа от 1 до 1000 и деля их на 3 и на 5, проверяя остаток.
Вот вопрос: как мне запоминать эту сумму и на каждой итерации цикла, если число делится на 3 или на 5, прибавлять его к ней? А потом вывести результат на контрол.
В чем заключается вопрос. Я недавно стал участником проекта http://projecteuler.net/. Там нужно решать разлчные математические задачки, для решения нужно писать программы. Полученные ответы надо вводить на сайте, можно наблюдать за своим прогрессом.
Большинство задач связаны с теорией чисел. Я писал программы для их решения в C++ Builder, MSVC++ и Java. А вот пару дней назад увидел в статистике, что есть участники, которые пытаются решать в LabVIEW. И я решил тряхнуть стариной.
Но тут же возникли трудности. Например, одна задача, самая простая, звучит так. Требуется подсчитать сумму натуральных чисел от 1 до 1000, которые делятся на 3 или на 5. При реализации "наивным" методом требуется эту сумму считать в цикле, пробегая все числа от 1 до 1000 и деля их на 3 и на 5, проверяя остаток.
Вот вопрос: как мне запоминать эту сумму и на каждой итерации цикла, если число делится на 3 или на 5, прибавлять его к ней? А потом вывести результат на контрол.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Подсчет суммы f(x) в цикле
Используйте сдвиговый регистрHomez писал(а):как мне запоминать эту сумму и на каждой итерации цикла, если число делится на 3 или на 5, прибавлять его к ней? А потом вывести результат на контрол.
Только, чей прогресс Вы наблюдать собираетесь?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- interested
- Сообщения: 6
- Зарегистрирован: 30 дек 2011, 15:23
- Версия LabVIEW: 2011
- Контактная информация:
Re: Подсчет суммы f(x) в цикле
Спасибо! Я вроде и сам докумекал до shift register, но я так же использовал и feedback node, через который вход и выход сдвигого регистра связывались. Вы показали, что можно и без этого обойтись.
Насчет прогресса. Я же сказал, что наблюдать можно за СВОИМ прогрессом - то есть, в списке задач видно, какие уже решены, а какие нет. Так же можно отслеживать свое место среди, например, участников из России.
Насчет прогресса. Я же сказал, что наблюдать можно за СВОИМ прогрессом - то есть, в списке задач видно, какие уже решены, а какие нет. Так же можно отслеживать свое место среди, например, участников из России.
-
Oleg B.
- leader
- Сообщения: 674
- Зарегистрирован: 25 сен 2011, 11:30
- Награды: 2
- Версия LabVIEW: 5 .. 2021
- Откуда: Israel
- Контактная информация:
Re: Подсчет суммы f(x) в цикле
Homez , иронию IvanLis Вы, похоже не поняли.IvanLis писал(а):Только, чей прогресс Вы наблюдать собираетесь?
Участвовать в конкурсе на одном сайте, и при этом, не стесняясь, просить помощи на другом, ИМХО, не честно к другим участникам конкурса.
veni, vidi, phallomorphi
-
- interested
- Сообщения: 6
- Зарегистрирован: 30 дек 2011, 15:23
- Версия LabVIEW: 2011
- Контактная информация:
Re: Подсчет суммы f(x) в цикле
Собственно, я уже решил несколько десятков задач с помощью C++ и Java, в том числе и эту элементарную задачу - ее решил первой. Просто было интересно посмотреть, как можно было бы это сделать в LabVIEW. Поэтому никакой нечестности здесь не вижу - еще одно решение, пусть и другим методом, мне никак уже не зачтется! Я бы не стал просить где-нибудь помощи в решении задачи с того сайта, которой не мог бы решить. В таких случаях я ее просто откладываю и возвращаюсь к ней потом, когда поднакапливается некоторый опыт.
Эту задачу я привел просто как пример. Меня интересовало именно работа в LabVIEW с данными, "переползающими" из одной итерации цикла в другую.
Эту задачу я привел просто как пример. Меня интересовало именно работа в LabVIEW с данными, "переползающими" из одной итерации цикла в другую.
-
- VIP
- Сообщения: 1338
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: Подсчет суммы f(x) в цикле
Ничего там не "связывается" через feedback node. Это просто чуть иное визуальное представление. А вход и выход сдвигового регистра и так априори связаны.Homez писал(а):Спасибо! Я вроде и сам докумекал до shift register, но я так же использовал и feedback node, через который вход и выход сдвигого регистра связывались. Вы показали, что можно и без этого обойтись.
Коллега, то, что Вы пытаетесь ещё раз решить задачки с помощью LabVIEW - это, безусловно, похвально. Это на самом деле хорошая разминка для головы (впрочем задачки там несколько однообразны - по крайней мере, из первого десятка, которые я порешал). Хорошая тема для олимпиады, если "на скорость" надо программировать.
Однако, помощь на форуме - вещь не всегда полезная. Вам дают более-менее готовое решение, однако многие вещи остаются за кадром - а до них можно дойти только самостоятельно, повертев код со всех сторон, пытаясь решить несколькими способами. Например, в данном случае задачку можно решить и с помощью feedback node, а судя по Вашей фразе выше у меня вот создалось ощущение, что Вы до конца не почувствовали сходство и различие между feedback node и shift register. А читать на самом деле надо вот здесь: Transferring Values between Loop Iterations. Там Вы обнаружите, что feedback node и shift register - почти одно и то же.
Ну и не останавливайтесь на достигнутом, конечно. Успехов!
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Подсчет суммы f(x) в цикле
Labview прекрасно подходит для задач теории чисел
смотри, хотя бы эти два примера из форума:
Простые числа от и до
http://labviewportal.org/viewtopic.php? ... ahl#p23792
Фибоначи
http://labviewportal.org/viewtopic.php? ... =45#p30285
Хорошо, если проснулся интерес к Labview,
как говорится, лучше позже, чем никогда.
смотри, хотя бы эти два примера из форума:
Простые числа от и до
http://labviewportal.org/viewtopic.php? ... ahl#p23792
Фибоначи
http://labviewportal.org/viewtopic.php? ... =45#p30285
Хорошо, если проснулся интерес к Labview,
как говорится, лучше позже, чем никогда.
-
- interested
- Сообщения: 6
- Зарегистрирован: 30 дек 2011, 15:23
- Версия LabVIEW: 2011
- Контактная информация:
Re: Подсчет суммы f(x) в цикле
Andrey и Jacob, спасибо за поддержку! Думаю, что LabVIEW я еще покручу, вот только не знаю, осилю ли, например, решение тех же задач на Project Euler сразу этим средством, а не вторично, то есть уже после того, как задачу решил на каком-нибудь ЯВУ. Тем более, что у меня уже под сотню решенных задач на этом сайте, задачи попроще попадаются уже довольно редко.
Жаль, что для выполнения LabVIEW-ВИ на целевой машине требуется довольно весомый рантайм, хоть он и бесплатный. А то бы я махнул на нем что-нибудь вроде тетриса (ну собственно, и так можно махнуть, но просто траблы будут, если я захочу вывести конечный продукт в массы:)
Andrey, по этой ссылке почитаю, самому интересно. А этот документ есть в документации в установке LabVIEW?
Jakob, по первой ссылке открывается немецкий топик из трех сообщений. Вы его имели в виду? Немецкий я хоть и изучал в школе, но знаю очень плохо, до уровня даже технического чтения не дотягиваю. Хотя можно гуглом страницу перевести...
По поводу чисел Фибоначи, вторая задача на Project Euler им посвящена, я решил ее раньше, чем увидел этот Ваш пост. Отличие в том, что я использовал для хранения пары последних чисел Фибоначи два разных сдвиговых регистра, а в примере наглядно показывается, как можно ипользовать один, только в контексте стека. Этот стек мне попадался и в документации, и в ВИ я его как-то случайно ляпнул, но я ему не придал должного значения. Теперь буду использовать для подобных случаев, пожалуй, даже задачку эту перепишу, где можно.
P.S. (off-topic) Благодаря Andrey узнал, что можно в подписи добавлять картинку со своими успехами с Project Euler. Как-то не обратил ранее на это внимания. Thanks.
P.S.
Жаль, что для выполнения LabVIEW-ВИ на целевой машине требуется довольно весомый рантайм, хоть он и бесплатный. А то бы я махнул на нем что-нибудь вроде тетриса (ну собственно, и так можно махнуть, но просто траблы будут, если я захочу вывести конечный продукт в массы:)
Andrey, по этой ссылке почитаю, самому интересно. А этот документ есть в документации в установке LabVIEW?
Jakob, по первой ссылке открывается немецкий топик из трех сообщений. Вы его имели в виду? Немецкий я хоть и изучал в школе, но знаю очень плохо, до уровня даже технического чтения не дотягиваю. Хотя можно гуглом страницу перевести...
По поводу чисел Фибоначи, вторая задача на Project Euler им посвящена, я решил ее раньше, чем увидел этот Ваш пост. Отличие в том, что я использовал для хранения пары последних чисел Фибоначи два разных сдвиговых регистра, а в примере наглядно показывается, как можно ипользовать один, только в контексте стека. Этот стек мне попадался и в документации, и в ВИ я его как-то случайно ляпнул, но я ему не придал должного значения. Теперь буду использовать для подобных случаев, пожалуй, даже задачку эту перепишу, где можно.
P.S. (off-topic) Благодаря Andrey узнал, что можно в подписи добавлять картинку со своими успехами с Project Euler. Как-то не обратил ранее на это внимания. Thanks.
P.S.
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Подсчет суммы f(x) в цикле
Да надо было, просто в теме виайку запустить,Homez писал(а): Jakob, по первой ссылке открывается немецкий топик из трех сообщений. Вы его имели в виду? Немецкий я хоть и изучал в школе, но знаю очень плохо, до уровня даже технического чтения не дотягиваю. Хотя можно гуглом страницу перевести...
P.S.
для получения простых чисел на интервале
от .... и до ...., диаграмма открыта, особенности
этого быстроработающего алгоритма, я могу обьяснить
на русском, если надо.
-
- interested
- Сообщения: 6
- Зарегистрирован: 30 дек 2011, 15:23
- Версия LabVIEW: 2011
- Контактная информация:
Re: Подсчет суммы f(x) в цикле
Окей, гляну как-нибудь. Мне тут как раз надо для одной задачи массив простых чисел от 1 до 333 333 333, так как нужна факторизация разных чисел, от маленьких до вот этого верхнего лимита. Этот массив строится достаточно долго, для такого верхнего лимита я еще эту процедуру не запускал. Может, у Вас действительно быстрый алгоритм.
А определение того, является ли 64-битное число простым, я сделал на LabView, вынес в sub-VI, работает корректно. Писал для того, чтобы использовать в одной задачке (которую я уже решил ранее на C++), но оказалось, что задача быстрее решается и без этого. Но хотя бы sub-VI научился делать, помог мне в этом, кстати, видеоурок на этом сайте.
А определение того, является ли 64-битное число простым, я сделал на LabView, вынес в sub-VI, работает корректно. Писал для того, чтобы использовать в одной задачке (которую я уже решил ранее на C++), но оказалось, что задача быстрее решается и без этого. Но хотя бы sub-VI научился делать, помог мне в этом, кстати, видеоурок на этом сайте.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Подсчет суммы f(x) в цикле
Посмотрите книгу Кнут Д. Искусство программирования. Даю 99%, что алгоритмы для решения большинства задач Вы там встретите. А вот как их реализуете в , это уже другой вопрос.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 4 Ответы
- 369 Просмотры
-
Последнее сообщение poisk