PDA

Показать полную графическую версию : [Mathematica] Задание функции


0_5Mandarinki
27-10-2008, 22:52
Всем привет. Есть ли у кого идеи как мне разрешить довольно простую, казалось бы, задачку:

В 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
вариант 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
pva, спасибо большое.
DFun[x_, y_, t_] := ReleaseHold[D[Func[x, y, Hold[t]], Hold[t]]]; очень помогло :)




© OSzone.net 2001-2012