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, Супермодераторы



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

Сейчас этот форум просматривают: Dmitriy40


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

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