Добрый день,
Кто нибудь делал макрос вычисления логарифма? Все перерыл нихде нет.. Поделитесь плиз..
Вид для печати
Добрый день,
Кто нибудь делал макрос вычисления логарифма? Все перерыл нихде нет.. Поделитесь плиз..
А основание то какое ?
А давайте на все сразу! Халява, плиз!..;)
А я советую разобраться и сделать самому, это не вероятно полезный скил. Однажды разобравшись ты сможешь делать не только логарифмы, но и всю тригонометрию и вообще любые функции на любом языке программирования, и в ФБ, и вообще на чём угодно. Как пошутил мой старший коллега - а сделай ка мне синус на релюшках)))
Аккуратнее нужно быть в подобных высказываниях.
С таким же успехом можно сказать "криптография и шифрование это просто. Однажды разобравшись сможешь сделать не только шифрование, но и цифровую подпись".
Надеюсь, не нужно рассказывать почему нельзя в своих проектах самостоятельно реализовывать криптографию/шифрование?
В плане "приближенного вычисления логарифма" тут классический треугольник: точность результата, скорость работы, диапазон принимаемых значений; "выберете любые два".
Кому-то логарифм нужен в интервале 1..2, а кому-то 1000..20000.
Одной и той же формулой это не накроешь.
Вернее, подход из "A New Method for Approximating Logarithms with kth Order" зачётный, но неподготовленного читателя накроет.
https://ru.wikipedia.org/wiki/%D0%9B...BC#cite_ref-13
http://elib.mi.sanu.ac.rs/files/jour.../22/tm1212.pdf
https://www.siam.org/students/siuro/vol7/S01325.pdf
и т.п.
В ОЛ есть 3 общеизвестных косяка на счёт подобных "вычислительных" задач:
1) Нельзя формулу записать формулой
2) Нет циклов. Многие формулы проще записать циклом. Да, он будет на 2-5 итераций, но это гораздо ближе к математической форме записи, и гораздо проще "сравнить с оригиналом"
3) Нет возможности делать тесты. Ну реализует товарищ (или rovki, не важно) макрос логарифма. Кто проверит, что макрос реально выдаёт правильные значения?
По-хорошему, на этот макрос нужно подать набор тестовых данных и проверить, что на выходе получаются верные значения.
Задача минимум -- проверить в симуляторе. Задача максимум -- в железе. Сейчас в OL нет возможности делать автоматизированные тесты, и запросто может оказаться, что на каких-нибудь особенных входных данных логарифм будет ересь показывать (например, в одном из членов ряда перепутается знак).
Думаю, года через 2-3 можно будет сказать "а когда-то формулы приходилось квадратиками рисовать и тестировать вручную в симуляторе".
Не дождетесь ...
1.-нет и не надо
2.есть циклы Пр ,которые можно использовать для итераций .
3.тесты есть ,надо только уметь готовить ,это же не тестирование ПИД регулятора с симуляцией обьекта регулирования в реальном времени .
И хватит уже ОЛ хаить :mad: не используя его.
А я очень аккуратен в высказываниях))
Если говорю, что ряды Тейлора-Маклорена и метода Ньютона доступен для понимания любому школьнику, то значит что я их освоил и было не сложно, а скорее увлекательно, как решение головоломки. Я очень рекомендую каждому, кто ещё не умеет, освоить эту область. У меня ушла неделя личного времени после работы, чтобы научиться и реализовать синусы, косинусы и арксинус, аркосинус. И теперь у меня есть полноценный автомат включения света по вычисленному времени восхода-заката для любой географической точки:D
Логарифмическая линейка? нет, не слышали.
1) купить машину и предъявлять претензии что она сено не ест.Цитата:
В ОЛ есть 3 общеизвестных косяка на счёт подобных "вычислительных" задач:
2) см.п1
3) танцор и его яйца. (ещё соответствующий комикс про дилберта с дефектным тестом и нерабочим поделием :D
:cool:)
Ваше мнение меня не интересует. Технический прогресс не остановить, и то что сейчас вы считаете "вообще никому ненужным" через год-два-три станет в порядке вещей.
Это называется "не читал но осуждаю". Вот вы почитайте сообщение, на которое я дал ссылку в пункте 3. Там Евстигнеев Максим (не мне вам рассказывать кто это такой) говорит, что "внутри у ОВЕНа" механизм автоматического тестирования используется. Придёт время -- сделают механизм доступным публике.
Автоматических тестов, которые могут использоваться за пределами ОВЕН, в ОЛ нет.
А вы слышали про логарифмическую?
У неё шкала весьма ограничена, и чтобы вычислить LN(20000) нужно пользоваться чем-то вида LN(20000) = LN(2*10000) = LN(2) + 4*LN(10)
Так что ваш пример лишь подтверждает мои слова.
Я привёл ссылку на сообщение Максима. Вы пишете "танцор и его яйца". Зачем так про него?
Не надо советовать Тейлора там, где он заведомо неприменим. Это натуральная медвежья услуга.
Берём ряд Тейлора для ln(1+x):
Вложение 24657
Даже 8 членов ряда при двойной точности вычисления кое-как сходятся в интервале -0.7...0.7
Смотрим wikipedia и видим там, о чудо, то же самое:
В ПР точность будет явно меньше -- там не double, а single precision.Цитата:
Сообщение от Wikipedia
Поэтому ряд Тейлора на "поигаться", конечно, можно, но именно он для задачи вычисления логарифма смысла не имеет.
В реальности может более правильным/быстрым/достаточно точным оказаться вообще табличное вычисление.
Т.е. забить в программу несколько опорных точек из нужного диапазона и линейно интерполировать между ними. Никаких рядов и просто кучка "if (1 < x < 10) {...}"
Я говорю не про тесты самого ОЛ или ПР. А про возможность автоматического тестирования пользовательских ОЛ-программ.
Ваши слова как-то обосновывают, что в ОЛ есть автоматические тесты? Ни в документации ни на форуме про автоматические тесты ни слова.
Пока вы лишь бросаетесь словами на ветер "тесты в ОЛ есть".
Всю математику можно свести к 4м арифметическим действиям. Вопрос лишь в удобстве реализации на конкретной платформе.
Не надо передёргивать. Кто номерные пункты выкладывал?:mad:Цитата:
Я привёл ссылку на сообщение Максима. Вы пишете "танцор и его яйца". Зачем так про него?
И Дилберта не просто-так упомянул.
А Максим говорил про тестирование ПР ..чувствуюте разницу .Для тестирования проектов есть симулятор и ни какой тест не выявит ошибок в алгоритме ,а про ошибки пользователей в среде ОЛ при написании позаботились разработчики ОЛ ,в отличие от ошибок при написании проекта в ПЛК ,вот вам туда ...
Об этом ему уже не раз указывалось ,за такое на 3 буквы посылают или морду чистят в приличном обществе .
За пол года на форуме один негатив и никакой пользы для пользователей ПР ,не знаю уж как там для плк ....Был у нас один пользователь ,что то уже несколько лет не видно, AT ,вот это был настоящий программист ,в том смысле ,что решал ,не для себя задачи на ОЛ .И итерации и ряды .До сих пор люди его макросами пользуются и говорят спасибо ,а сколько спасибо сказали vladimirisitnikovy в теме ПР,ОЛ...???
Чего сердитесь?
Вы говорите: "ни какой тест не выявит ошибок в алгоритме".
Я привожу пример теста, который проверит правильность значений, которые выдаёт алгоритм вычисления логарифма.
На этом шаге вы должны были сказать "был неправ, тестировать логарифмы можно", но вы почему-то начинаетесь сердиться и ругаться.
Учитесь признавать свои ошибки.
Давить авторитетом и количеством макросов на форуме, конечно, удобно, но признавать свои ошибки тоже нужно уметь.
Чур меня +,чур меня +...+
Что тут поделаешь ,если для человека алгоритм работы устройства =алгоритму вычисления функции ..
Алексей,
Я говорил "Одной и той же формулой это не накроешь."
Если вы формулой называете "весь макрос", то я умываю руки. Разве у кого-то были сомнения, что "можно составить макрос вычисления логарифма"?
Если вы говорите, что "всё вычисление логарифма можно свести к 4м арифметическим действиям" -- я просто не поверю, пока не увижу конкретику.
Если вы говорите, что "достаточно добавить пару действий перед Тейлором", то, во-первых это не пара действий (да, и не 4 действия, а в зависимости от требуемого диапазона), а во-вторых, это лишь подтверждает, что "одной формулой Тейлора не накроешь".
Давайте больше конкретики. Если вы просто считаете, что автоматические тесты программ ОЛ не нужны -- ваше право, но мне, честно говоря, это не интересно.
Ваш PID регулятор попался на тривиальном тесте, и возможность автотестирования программ в ОЛ позволила бы подобные проблемы ловить до выхода в эксплуатацию.
Не надо ерунду говорить. В один мкрос можно насовать столько формул, сколько влезет, и формулу по нескольким макросам разложить. Вопрос удобства, не более того.
Извините, наврал- к двум. Если точнее: сложению и вычитанию. Как пример - любой настольный 8ми разрядный ПК 70х-80х годов выпуска. Процессоры I8080 и Z80 которые в них применялись, команд умножения и деления не имели.Цитата:
Если вы говорите, что "всё вычисление логарифма можно свести к 4м арифметическим действиям" -- я просто не поверю, пока не увижу конкретику.
И как это представляешь?Цитата:
Давайте больше конкретики. Если вы просто считаете, что автоматические тесты программ ОЛ не нужны -- ваше право, но мне, честно говоря, это не интересно.
Ваш PID регулятор попался на тривиальном тесте, и возможность автотестирования программ в ОЛ позволила бы подобные проблемы ловить до выхода в эксплуатацию.
Вполне представляю блестяще написанную программу для ПР, великолепно прошедшую все автоматические тесты, но нихрена не работающую на реальном оборудовании.
Или работающую некорректно.
В 2005г в москве свет автоматическая программа управления энергоснабжением вырубила энергию во всём городе, хотя достаточно было пару-тройку спальных районов отключить.
Ага, можно вообще на одной только стрелке Пирса сделать логарифм.
Но в реальности, вопрос не в том какие операции использовать, а в том, как их объединить.
Тейлор -- один из вариантов. Кусочно-линейное представление -- другой.
И говорить "для вычисления логарифма достаточно сложений" это занудство.
Если что, то я конкретные (рабочие) варианты уже озвучил, а не просто рассуждаю о стрелках Пирса.
И? Всё верно: автоматические тесты на симуляторе не являются достаточным критерием правильности. Нужны тесты на железе, тесты с реальным миром и т.п.
Но, с другой стороны: наличие тестов повышает надёжность? Разумеется, повышает. Именно про это я и говорю (и говорил с самого начала): нужна возможность делать автотесты, чтобы повышать стабильность/надёжность.
Если вопрос о том "как именно делать интеграционные автотесты, включающие в себя симуляцию реальных объектов, печей, механизмов" -- это отдельный вопрос.
Видели же как Yegor игровой движок прикручивал для симуляции физики?
Ну и Simulink переизобретать вряд ли просто так получится.
А что-то попроще -- уже может быть и полезно, и неложно в реализации.
Начать бы с простых "при подаче такого-то значения на вход, через N тактов должно оказаться такое-то значение на выходе".
Да, в программах бывают косяки.
Если есть автоматическое тестирование, то найденный проблемный сценарий можно включить в базу тестов и это повысит надёжность системы: если в следующий раз кто-то случайно сломает этот функциона (например, поправит программу и не учтёт проблемный случай), то тест ему скажет "ай-яй-яй, давай чини".
В КДС средство автоматического тестирования это вообще отдельный компонент, и за него берут немалые деньги: http://store.codesys.com/codesys-test-manager.html
Логарифмы, синусы, косинусы, тангенсы . В пр можно затолкать все что угодно. Будет ли она от этого лучше работать. Из 200сот тонного Белаза некто не делает машину для перевозки суши. Так почему все стараются наделить РЕЛЕ возможностями ПЛК. И задумывалась ПР как РЕЛЕ. И функционал у ПР как у РЕЛЕ. И простенький софт ДЛЯ РЕЛЕ. Если всем так нужен такой функционал по просите Овен пусть сделаю для математиков DSP модуль и делайте на этом. Тут вам все будет. И даже 9 знаков после запятой в результате. По мне интереснее как немцы и французы к своим реле GSM модем прикрутили.
Займётесь?:)
За это время пока посты писал, rovki макросы в качестве помощи выкатывал...Цитата:
В ОЛ неплохо сделать не полный автотест, а типа сценария: когда тестируешь, приходится многократно вводить в одном и том-же порядке одни и те-же данные, имитируя запуск станка, только для того, чтобы на определённом этапе смоделировать аварийную ситуацию. А это 10-30 шагов исполнения программы, которые приходится повторять.Цитата:
И? Всё верно: автоматические тесты на симуляторе не являются достаточным критерием правильности. Нужны тесты на железе, тесты с реальным миром и т.п.
Но, с другой стороны: наличие тестов повышает надёжность? Разумеется, повышает. Именно про это я и говорю (и говорил с самого начала): нужна возможность делать автотесты, чтобы повышать стабильность/надёжность.
А что-то попроще -- уже может быть и полезно, и неложно в реализации.
Начать бы с простых "при подаче такого-то значения на вход, через N тактов должно оказаться такое-то значение на выходе".
Нет.
Посмотреть готовую-полуготовую схему я ещё могу.
А делать с нуля в ОЛ у меня желания абсолютно нет.
Кому нравится (или кого припёрло) -- пускай делают.
Математическая составляющая мне интересна, а рисовать квадратики в ОЛ -- не моё.
Да, всё верно. Я разве когда-нибудь говорил, что rovki бесполезным делом занимается?
Нравится ему макросы выкладывать -- пущай выкладывает. Кому-то пригодятся и ладно.
Замечу, что моё сообщение это вообще первый на форуме owen совет про способы вычисления логарифма.
Я к чему. Не к тому, чтобы похвастаться, а к тому, что тут же налетят коршуны (сами знаете как их зовут) и скажут: "вон, смотрите, он как обычно со своей стрелкой Пирса упражняется, а дельного никогда не делал".
Как ни прискорбно, но действительно в теме ОЛ и ПР конкретных примеров Вы не давали (насколько я слежу). Акромя критики и предложений космического масштаба. Сделайте уж что нибудь конкретное в этом разделе и заткните всех за пояс.
Высказывания типа "Посмотреть готовую-полуготовую схему я ещё могу. А делать с нуля в ОЛ у меня желания абсолютно нет." к чему они?
Не хотите работать с ОЛ - флаг в руки. Для моих задач например в 90% случаев ПЛК избыточен, а ПР как раз. И функционала ОЛ вполне хватает.
С уважением.