Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [Mathematica] Задание функции (http://forum.oszone.net/showthread.php?t=121209)

0_5Mandarinki 27-10-2008 22:52 935461

[Mathematica] Задание функции
 
Всем привет. Есть ли у кого идеи как мне разрешить довольно простую, казалось бы, задачку:

В Wolfram Mathematica 6.0 задана функция Func:
Код:

Func[x_, y_, t_] := x + y*Sin[t];
Требуется задать функцию DFunc[x_, y_, t_] , являющейся частной производной функции Func по t. По идее, это записывается так:
Код:

DFun[x_, y_, t_] := D[Fun[x, y, t], t];
И для буквенных выражений x=a; y=b; t=c; все работает и выдается b Cos[c]. Но если t=10, выдается ошибка: "General::ivar: 10 is not a valid variable" и частная производная берется не по t, а по '10'.

Вопрос: так как же мне задать функцию DFunc[x_, y_, t_] , являющейся частной производной функции Func по t, чтобы потом подставлять в нее численные значения?

На самом деле задаваемая функция более громоздкая, поэтому вариант "прописать частную производную ручками" не подходит.

pva 28-10-2008 15:28 936071

вариант 1: (требуется, чтобы вторая строчка сразу шла за первой)
Код:

Func[x_, y_, t_] := x + y*Sin[t]; (*отложенное присваивание*)
DFun[x_, y_, t_] = D[Func[x, y, t], t]; (*немедленное присваивание*)

второй вариант: (можно менять Func в любом месте, подставится последний вариант)
Код:

DFun[x_, y_, t_] := ReleaseHold[D[Func[x, y, Hold[t]], Hold[t]]];

0_5Mandarinki 29-10-2008 20:39 937354

pva, спасибо большое.
DFun[x_, y_, t_] := ReleaseHold[D[Func[x, y, Hold[t]], Hold[t]]]; очень помогло :)


Время: 05:58.

Время: 05:58.
© OSzone.net 2001-