Аналитическое взятие производной

Тема в разделе "WASM.A&O", создана пользователем spa, 28 дек 2009.

  1. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    добавления перебора вида (попробовал так, не получилось попробуй по другому и по возможности не пробуй заведомо тупиковые ветки) навредли можно назвать искусством.
     
  2. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Ustus
    ну.. давай с самого начала. sin, cos, tn, ctn + обратные функции. ну, ладно - научим распознавалку стандартным функциям - это всё есть в таблице. дальше функция бесселя, неймана. тут производная вычисляется рекурсивно.

    diff(besselj(v, x), x) = -BesselJ(v+1, x)+v*BesselJ(v, x)/x.

    как тут быть и что делать с обратными функциями?

    далее - гамма функция. производная от неё - пси функция. производная от пси функции - какая-то задница. а что делать с обратными функциями?

    подобный бред можно насочинять ещё с неявными, параметрическими функциями и т.д.
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    cupuyc
    если функции нету в таблице, то надо просто писать func' просто очевидно что другого варианта и нету ))
    Просто как бы, мы тут говорим все-таки о простых случаях, а не о тех которые и людям чтобы вычислить проходилось шевелить веществом.

    А вообще задачу так и не решил ,лень чето )) а сорца на непонятно чем в с++ переводить равносильно написанию с 0.
    Вообще задача то простая, я просто по красивше решить хочу.

    PS вообще у меня все еще проще перемены "x0"..."xnnnnn", числовые константы, и *,/,+,-,(,),^ и даже уже составлен постфиксный ПОЛИЗ (для вычисления) так что писать то 3 строки, но меня тут последние 3 дня лень просто пожрала ))
     
  4. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    cupuyc
    эээ... Не надо с больной головы на здоровую и с ног на голову. Если функции простые то как их не комбинируй производная будет тоже простая. А вот с интегралами зачастую все совершенно подругому
     
  5. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    SPA
    уж не в мой огород ли камешек? если да, то замечу, что специалисту считающему себя грамотным и даже позволяющему себе иногда заявлять об этом вслух непозволительно незнакомство с 1-2мя популярными парсергенераторами. при этом замечу, что лех+яцц и вообще бнф безнадежно устарел и нужен только для чтения старых сорцов.

    на С++ с сосо переводится компилятором сосо --> C++. их вообщето много
    http://www.ssw.uni-linz.ac.at/coco/
    вот тут поднимал тему
    http://wasm.ru/forum/viewtopic.php?id=33293
    русский перевод от drmad немного устарел. там некоторых полезных возможностей, но основы теже

    я уже подумал, что вы сдали и забыли. пририсовать оптимизатор результата через дерево? или дерево это тоже неизвестно что?

    и мой вам совет - забудьте С++. и С#. они вас гипнотизируют. это не самые лучшие, эффективные и удобные инструменты. просто распространенные и популярные. попса

    ЗЫ или это питон неизвестно что? и этот простейший код на питоне в С++ перевести неизвестно как?

    ЗЫ2 а заявление о простоте автоматического аналитического интегрирования нуждается в доказательствах. например, предложите алгос интегрирования примера выше. я его немного подсократил

    5*x^4 + 4*x3 + (c + b + 1)(1 - 3*sin(2*a + 3*b*c)) + sin(2*a + 3*b*c) + (10*x^2 + 87*x + 187)*(x + 3)^7
     
  6. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    ОПН читают редко, используют для упрощения парсинга. Первый попавшийся пример из гугла не самый удачный.
    Возмем 2 последующих: http://algolist.manual.ru/maths/misc/revpn.php и http://ru.wikibooks.org/wiki/Язык_Си_в_примерах/Калькулятор_выражений_в_обратной_польской_нотации
    получается почти готовый калькулятор, нужно доработать что бы дифференцировал. Не буду утверждать, что это лучше генераторов, но пригодно при таком простом синтаксисе и позволяет понять детали ;)
     
  7. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    J0E
    у меня еще есть полиз =) да ландо не партись.

    ы? кто говорил о простате, лично для меня достаточно возможности.

    Неужели специалисту считающему себя грамотным положено копипастить чужые сорцы, да еще через парсер? говорю же не партись, просто как-то я забил на проблему. И камень не в коем случае не в ваш огород!
     
  8. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    у меня уже есть полиз =)


    куда сдал? Про дерево не совсем понял что значить "пририсовать" ну полиз по сути кстати тоже дерево, только для производной не совсем годиться ибо то что считается последним во взятии производной берется первым

    думаю не рационально учить синтаксис языка ради (все-таки он своеобразен в некоторой мере)
    PS без редактирования плохо.
    PSS еще раз напоминаю, что сам за задачу даже не брался, зачем так нервничать? =)
     
  9. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    SPA
    :):) молчать, поручик :):):)

    и как возможно аналитически интегрировать хотя бы e^(-x) ?
     
  10. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Ustus
    http://www.wolframalpha.com/input/?i=e^(-x)
    или там китайцы целыми днями решают?
     
  11. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    http://www.spacetime.us/
    пока одни развлекаются простенькими парсерами, другие портировали MATLAB на мобилки! я тащюсь...
     
  12. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    spa
    Тьфу, я хотел сказать e^(-x^2). То есть посчитать можно, но приходится вводить определение новой функции. Дифференцирование же этого не требует, оно всегда в том же множестве функций, что и исходное выражение.
    А кстати, уже с интегралом e^sin(x) китайцы с вольфрама не справляются :):):) :Р:Р:Р
     
  13. Dukales

    Dukales New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2009
    Сообщения:
    199
    cupuyc
    так если математически доказано, что не существует аналитического выражения для функции, то и не получите вы его никаким хитрым алгоритмом. компьютер — не творческая машина. для взятия производной от любой функции, имеющей аналитическое выражение любой сложности, достаточно таблицы производных.
     
  14. Dukales

    Dukales New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2009
    Сообщения:
    199
    Вот символьное дифференцирование (программирование, управляемое данными в sicp такой стиль называется вроде бы), упрощалка выражений, типа x*1 -> 1 и подобных, компилятор выражения в код FPU со мнооогими функциями (с "параметрами-константами" в одном массиве и "параметрами-переменными" в другом, так надо было) и некий модуль с табличной функцией (хоть гамма, хоть пси, хоть что там можно вписать в таблицу) и м.б. ещё что-то забыл.
    Такой вид функции в компиляторе нужен был для того, чтобы вызывать в ассемблерной вставке — не изменяет ни одного рон (вообще).
    Язык C++ (плохой стиль наверное), среда Borland C++ Builder без исполняемого файла.