дифференцирование
От: Аноним  
Дата: 19.11.10 09:14
Оценка:
можно ли в макросах nemerle сделать оператор дифференцирования?
Re: Дифференцирование
От: Qbit86 Кипр
Дата: 19.11.10 09:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>можно ли в макросах nemerle сделать оператор дифференцирования?


Имеется в виду символическое дифференцирование, не численное?
Глаза у меня добрые, но рубашка — смирительная!
Re: дифференцирование
От: hardcase Пират http://nemerle.org
Дата: 19.11.10 09:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>можно ли в макросах nemerle сделать оператор дифференцирования?


Можно:
macro ∂(f, x)
{
}
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Дифференцирование
От: Аноним  
Дата: 19.11.10 09:49
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Здравствуйте, Аноним, Вы писали:


А>>можно ли в макросах nemerle сделать оператор дифференцирования?


Q>Имеется в виду символическое дифференцирование, не численное?


символическое.
Re[3]: Дифференцирование
От: hardcase Пират http://nemerle.org
Дата: 19.11.10 09:52
Оценка:
Здравствуйте, Аноним, Вы писали:

Q>>Имеется в виду символическое дифференцирование, не численное?


А>символическое.


Если на Nemerle можно написать макросом построитель парсеров, то и макрос выполняющий символическое дифференцирование возможно.
Другой вопрос, а действительно ли это нужно?
/* иЗвиНите зА неРовнЫй поЧерК */
Re: дифференцирование
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 19.11.10 09:53
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>можно ли в макросах nemerle сделать оператор дифференцирования?


Вполне. Создаёшь макрос уровня выражения, преобразуешь выражение в команду для своего любимого математического пакета, получаешь результат и либо создаёшь новое выражение, либо выдаёшь ошибку времени компиляции.
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: дифференцирование
От: Аноним  
Дата: 19.11.10 09:54
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Аноним, Вы писали:


А>>можно ли в макросах nemerle сделать оператор дифференцирования?


H>Можно:

H>
H>macro ∂(f, x)
H>{
H>}
H>


оператор будет воздействовать на все выражения внутри кода
например
def sqr(x)=x*x
def s2(x)=sqr(x)+x*sqr(x+1)+1+sin(x)
def x=1
def y=dif(sqr, x)


интересна не реализация а принципиальная возможноость
Re: дифференцирование
От: Рысцов Денис  
Дата: 19.11.10 10:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>можно ли в макросах nemerle сделать оператор дифференцирования?


Можно, но сложно. От использования макросов в эта задача не упрощается. Хотя можно попытаться сделать обертку на макросах для автоматического дифференцирования. Вот ссылки по теме: раз и два.
Re[3]: дифференцирование
От: hardcase Пират http://nemerle.org
Дата: 19.11.10 10:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>оператор будет воздействовать на все выражения внутри кода

А>например
А>
А>def sqr(x)=x*x
А>def s2(x)=sqr(x)+x*sqr(x+1)+1+sin(x)
А>def x=1
А>def y=dif(sqr, x)
А>


А>интересна не реализация а принципиальная возможноость


Макрос может принимать на вход произвольный блок кода. Так реализованы все стандартные конструкции управления (if, while, foreach, etc..), так сделаны Computation Expressions, так какой гик сделал фронтэнд к CUDA (ссылки не помню, но могу поискать).
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: дифференцирование
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 19.11.10 10:19
Оценка: :)
Здравствуйте, hardcase, Вы писали:

H>Макрос может принимать на вход произвольный блок кода. Так реализованы все стандартные конструкции управления (if, while, foreach, etc..), так сделаны Computation Expressions, так какой гик сделал фронтэнд к CUDA (ссылки не помню, но могу поискать).


http://sourceforge.net/projects/nuda/

Почему какой-то? Вполне себе конкретный гик: http://ru.linkedin.com/pub/andrew-adinetz/1/514/670
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Дифференцирование
От: Аноним  
Дата: 19.11.10 10:35
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Аноним, Вы писали:


Q>>>Имеется в виду символическое дифференцирование, не численное?


А>>символическое.


H>Если на Nemerle можно написать макросом построитель парсеров, то и макрос выполняющий символическое дифференцирование возможно.

H>Другой вопрос, а действительно ли это нужно?

не нужно, это специфичное, просто инетерсна возможно ли....
имеется ввиду дифференцирование внутри существующего кода, без переписывания ВСЕХ макросов
Re[5]: Дифференцирование
От: hardcase Пират http://nemerle.org
Дата: 19.11.10 10:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>не нужно, это специфичное, просто инетерсна возможно ли....

А>имеется ввиду дифференцирование внутри существующего кода, без переписывания ВСЕХ макросов

Макрос выполняет трансформацию кода. На входе один код, на выходе — другой. Что должно быть на выходе вашего?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[6]: Дифференцирование
От: Аноним  
Дата: 19.11.10 11:25
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Аноним, Вы писали:


А>>не нужно, это специфичное, просто инетерсна возможно ли....

А>>имеется ввиду дифференцирование внутри существующего кода, без переписывания ВСЕХ макросов

H>Макрос выполняет трансформацию кода. На входе один код, на выходе — другой. Что должно быть на выходе вашего?


на входе функция и аргумент дифференцирования — на выходе производная функции от этого аргумента
макрос должен будет оперировать подвыражениями функции и преобразовывать ВСЕ вызываемые фунции (делать их копии) и преобразовывать по правилам.
Re[7]: Дифференцирование
От: hardcase Пират http://nemerle.org
Дата: 19.11.10 12:40
Оценка:
Здравствуйте, Аноним, Вы писали:

H>>Макрос выполняет трансформацию кода. На входе один код, на выходе — другой. Что должно быть на выходе вашего?


А>на входе функция и аргумент дифференцирования — на выходе производная функции от этого аргумента

А>макрос должен будет оперировать подвыражениями функции и преобразовывать ВСЕ вызываемые фунции (делать их копии) и преобразовывать по правилам.

Для начала нужно определиться с тем что такое функция.
"ВСЕ" функции в любом случае нельзя будет дифференцировать, например функции из внешних библиотек — их исходный код не доступен.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[8]: Дифференцирование
От: Аноним  
Дата: 19.11.10 13:12
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Аноним, Вы писали:


H>>>Макрос выполняет трансформацию кода. На входе один код, на выходе — другой. Что должно быть на выходе вашего?


А>>на входе функция и аргумент дифференцирования — на выходе производная функции от этого аргумента

А>>макрос должен будет оперировать подвыражениями функции и преобразовывать ВСЕ вызываемые фунции (делать их копии) и преобразовывать по правилам.

H>Для начала нужно определиться с тем что такое функция.

H>"ВСЕ" функции в любом случае нельзя будет дифференцировать, например функции из внешних библиотек — их исходный код не доступен.

Тут просто все внешние функции прописанные в макросе. Например +, -, sin, ln, * но не например def f(x)=x*ln(x)
Re[9]: Дифференцирование
От: hardcase Пират http://nemerle.org
Дата: 19.11.10 13:57
Оценка:
Здравствуйте, Аноним, Вы писали:

H>>Для начала нужно определиться с тем что такое функция.

H>>"ВСЕ" функции в любом случае нельзя будет дифференцировать, например функции из внешних библиотек — их исходный код не доступен.

А>Тут просто все внешние функции прописанные в макросе. Например +, -, sin, ln, * но не например def f(x)=x*ln(x)


Если ограничиться тем, что функция — это та штука из математики, записанная с использованием синтаксиса Nemerle, плюс набор "хорошо известных" функций вроде логарифма и тригонометрии, то конечно все можно
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.