Как решить точные дифференциальные уравнения в MatLab?

(3x^2+4xy)dx+(2x^2+2y)dy=0

Я решаю это уравнение на бумаге так:

решение

Результат должен быть:

f(x,y)=x^3+2x^y+y^2=c-c_1

Я хочу найти функцию f(x,y) в Matlab. Я попытался найти его с помощью команды dsolve.

dsolve('(2*x^2+2*y)*dy=-(3x^2+4xy)', 'x')

Но это дает неправильный результат.

Есть ли другой метод решения???


person RedLEON    schedule 12.12.2012    source источник
comment
Какой результат это дает и каким должен быть результат?   -  person Dennis Jaheruddin    schedule 12.12.2012
comment
Результат должен быть f(x,y)=x^3+2x^y+y^2=c-c_1 или f(x,y)=x^3+2x^y+y^2 = C   -  person RedLEON    schedule 12.12.2012
comment
Придирки, но конечно c-C_1 или C, это одно и то же.   -  person ccook    schedule 12.12.2012
comment
Для тех, кому интересно, точные дифференциальные уравнения: en.wikipedia.org/wiki/Exact_ Differential_equation   -  person ccook    schedule 12.12.2012


Ответы (2)


Дело не в том, что MATLAB неправ, он решает ОДУ для y(x) или x(y). Точные дифференциальные уравнения — это то, что мы подробно изучали на уровне магистратуры (по крайней мере, для инженеров). Полезно, если вы объясните математику больше, прежде чем ставить это как вопрос программирования. Без некоторого объяснения, как задействована функция f(x,y), было бы неясно.

Поставлено по-другому (немного концептуально натянуто, но я думаю, что это показывает, что F является потенциальной функцией)...

div({F})= \frac{\partial F}{\partial x} + \frac{\partial F  {\ парциальное у} = (3x^2+4xy) +(2x^2+2y) = 0

MATLAB не решит это за вас напрямую. Но ваш результат сразу же поддается проверке, когда его спрашивают таким образом, поскольку участие F очевидно.

Обратите внимание, что MATLAB позволит вам выполнить символическую проверку, оценив diff(f,x) и diff(f,y).

Обновить

Вы можете получить решение, используя MATLAB для выполнения шагов.

syms x y c
P = 3*x*x + 4*x*y
Q = 2*x*x + 2*y
f = int(P,x)+subs(int(Q,y),x,0) + c

Выход

f = c + y^2 + x^2*(x + 2*y)

Решение в одну строку

f = int('3*x*x+4*x*y','x') + subs(int('2*x*x+2*y','y'),'x',0) + 'c'
person ccook    schedule 12.12.2012
comment
Вы абсолютно правы @ccook. Мне нужно решить около 40 дифференциальных уравнений. Они включают в себя все типы diff. уравнения. Я могу решить на бумаге. Но мой учитель дал это домашнее задание, чтобы решить их в MatLab. Я искал много веб-страниц. Но нет примера про точный diff. уравнения в сети. По крайней мере, я ничего не нашел. - person RedLEON; 12.12.2012
comment
Из любопытства, какой уровень? Я бы ожидал колледж, но использование слова «учитель» меня удивляет. - person ccook; 12.12.2012
comment
Университет, факультет промышленной инженерии, урок дифференциальных уравнений. :) - person RedLEON; 12.12.2012
comment
Как инженерно-эск получить задание MATLAB для курса / урока по дифференциальным уравнениям :) - person ccook; 12.12.2012
comment
Они дают курс / урок. Но я пропустил много уроков. Потому что у этого отдела дистанционное обучение % 70. Кстати, я попробовал ваше решение. Это действительно приятно. Я понимаю ваши решения. - person RedLEON; 13.12.2012
comment
И это мое последнее решение. Как вы думаете: syms x y C P=3*x^2+4*x*y Q=2*x^2+2*y Py=diff(P,y) Px=diff(Q,x) iP = int(P,x) iPy = diff(iP, y) h= int('2*y',y) f = iP + h - C - person RedLEON; 13.12.2012
comment
Мне кажется хорошо - лучше интегрировать diff (iP, y), чем подставлять ноль :) - person ccook; 13.12.2012

В любом случае вы неправильно написали.

Я сделал

>> dsolve ('(2*x^2+2*y)*Dy=-(3*x^2+4*x*y)', 'x')

и получил

ans =

   (x^4 - x^3 + C2)^(1/2) - x^2
 - (x^4 - x^3 + C2)^(1/2) - x^2

ВОЛЬФРАМ

Wolfram Alpha подтверждает решение Matlab:

http://www.wolframalpha.com/input/?i=%283x%5E2%2B4xy%29%2B%282x%5E2%2B2y%29y%27%3D0

ОБНОВЛЕНИЕ

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

person Dims    schedule 12.12.2012
comment
Спасибо @Dims, я нашел это как у тебя. Но мой учитель математики хочет f(x,y)=x^3+2x^y+y^2 = C в результате. Возможно, dsolve не может дать результат этого уравнения. Или, может быть, мы должны написать другой способ или команду. - person RedLEON; 12.12.2012
comment
Я хочу найти форму f (x, y), а не f (y). - person RedLEON; 12.12.2012
comment
Хорошо, имея y = (x^4 - x^3 + C2)^(1/2) - x^2, у нас есть (y + x^2)^2 = x^4 - x^3 + C2, что дает y^2 + 2*x^2*y + x^4 = x^4 - x^3 + C2, что дает y^2 + 2*x^2*y = - x^3 + C2, что похоже на ваше, за исключением одного термина. - person Dims; 12.12.2012
comment
Я отредактировал этот вопрос и добавил правильное решение по изображению. Не могли бы вы проверить это, пожалуйста? - person RedLEON; 12.12.2012