2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Решение уравнения в Mathematica
Сообщение09.08.2008, 14:49 


09/08/08
16
Здравствуйте!
Решаю уравнение:
Код:
x + Solve[g[x, y]^2 + 5*f[x, y] == 0, f[x, y]]

Mathematica выдает ответ:
$$x+(f(x,y) \rightarrow -\frac{1}{5}g[x,y]^2$$
Можно ли вывести этот ответ просто в виде
$$x-\frac{1}{5}g[x,y]^2 ?$$
И еще: если записать так:
Код:
f[x,y] = x + Solve[g[x, y]^2 + 5*f[x, y] == 0, f[x, y]]

то программа выдает ошибку (по-видимому, что-то связанное с рекурсией). Можно ли непосредственно присвоить f[x,y] решение этого уравнения?

Заранее спасибо!

 Профиль  
                  
 
 
Сообщение09.08.2008, 16:05 
Заслуженный участник


22/01/07
605
Естественно, там будет рекурсия, в определение входит само $f$. Это примерно то же самое, что написать
Код:
f[x, y] = f[x, y] + 1

Так пойдет:
Код:
f[x, y] = x + Solve[g[x, y]^2 + 5*fict_var == 0, fict_var][[1, 1, 2]]


Если символ $f$ был до этого не определен, то можно так:
Код:
f[x_, y_] = x + Solve[g[x, y]^2 + 5*f[x, y] == 0, f[x, y]][[1, 1, 2]]

но только один раз и лучше этого не делать.

 Профиль  
                  
 
 
Сообщение09.08.2008, 16:57 


09/08/08
16
Gafield, большое спасибо. Просто, например, Maple нормально к такой рекурсии относился, а Mathematica почему-то нет. Не хочется вводить кучу лишних переменных для каждого уравнения. Ну это не проблема, самое главное чтобы подсчеты работали :D

 Профиль  
                  
 
 
Сообщение09.08.2008, 17:39 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Решением уравнения в Mathematica является не выражение в правой части, а подстановка (а точнее, совокупность подстановок). Разберите простой случай:
Код:
In[1] Solve[x + a == b, x]
Out[1] {{x->b-a}}

In[2] y + Solve[x+a == b,x]
Out[2] {{y + (x -> -a + b)}}


Вероятно, то что Вы хотите, записывается примерно так:
Код:
In[3] y + x/.Solve[x + a == b, x][[1]]

 Профиль  
                  
 
 
Сообщение09.08.2008, 19:19 


09/08/08
16
незваный гость, большое спасибо! Теперь буду знать о таких отличиях в представлении данных в Maple и Mathematica :) И, если не трудно, еще один вопрос - с помощью какой команды в Mathematica вычислить якобиан? Почему-то в help'е об этом ничего не сказано (есть только полиномы Якоби... но это вроде бы не то...)....

 Профиль  
                  
 
 
Сообщение09.08.2008, 20:40 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Jacobian — зело рекомендую mathworld. Поскольку не только граммотные статьи с небольшим количеством ошибок, но и примеры того, как сделать в Mathematica.

В частности, там:

Код:
JacobianMatrix[f_List?VectorQ, x_List] :=
    Outer[D, f, x] /; Equal@@(Dimensions/@{f,x})

JacobianDeterminant[f_List?VectorQ, x_List] :=
    Det[JacobianMatrix[f, x]] /; Equal @@ (Dimensions /@ {f, x})

 Профиль  
                  
 
 
Сообщение09.08.2008, 20:41 
Аватара пользователя


15/01/06
200
Нужен произвольный якобиан, чтобы в него любые функции подставлять?
Цитата:
JacobianMatrix[pt,coordsys]
gives the Jacobian matrix of the transformation from the coordinate \
system coordsys to the Cartesian coordinate system at the point pt.

JacobianDeterminant[pt,coordsys]
gives the determinant of the Jacobian matrix of the transformation \
from the coordinate system coordsys to the Cartesian coordinate \
system at the point pt.


вот что есть в математике.

Ну а можно и самостоятельно написать функцию и пользовать ее, например, вот такую:
Код:
MyJacobian[func_List, vars_List] := Module[
  {jmat},
  If[Length[func] != Length[vars],
   Return[$Failed]
   ];
  jmat = Det[
    Table[D[func[[i]], vars[[j]]], {i, Length[func]}, {j,
      Length[vars]}]];
  Return[jmat]
  ]

 Профиль  
                  
 
 
Сообщение09.08.2008, 20:44 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Leierkastenmann в сообщении #137881 писал(а):
вот что есть в математике.

Позвольте добавить:
Код:
Needs["VectorAnalysis`"]

Это загружает пакет VectorAnalysis

 Профиль  
                  
 
 
Сообщение09.08.2008, 22:44 


09/08/08
16
Спасибо всем за помощь! И особенно за ссылку - очень полезный сайт! У меня функции - это просто полиномы от двух переменных, так что наверное легче просто по определению записать якобиан как сумму произведений частных производных :D Еще раз большое спасибо!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group