2015-11-12 10 views
0

Возможно ли, что MATLAB делает неявное дифференцирование со своими символами? я следующий кодНеявная производная с символами Matlab

syms x; 
y = symfun(sym('y(x)'), sym('x')); 
yPrime = symfun(sym('y+(2*x)-1'), [sym('x'), sym('y')]); 
diff(yPrime, x, 1) 

От этого я получаю

ans(x, y) = 
2 

но то, что я хочу, чтобы получить (в той или иной форме) является

ans(x, y) = 
dy/dx + 2 

Возможно ли это?

+0

'Симс ху (х)' то 'Diff (у + 2 * x-1, x) ', похоже, работает для меня. – David

+0

@ David Правильно, это работает. Но моя проблема в том, что мне нужен дополнительный уровень: 'syms xy (x)' then 'yPrime = y + 2x' then' diff (yPrime, x) ' – Vyas

+0

OK, после' syms xy (x) 'do' yPrime = y + 2 * x-1' then 'diff (yPrime, x)' – David

ответ

1

Похоже, вы пытаетесь использовать y как символическую переменную, так и абстрактную символическую функцию (symfun), что невозможно. Символьная функция может принимать только символические переменные в качестве аргументов. Я думаю, что вы можете сделать то, что вы хотите с (строк в старом стиле не требуется)

syms y(x)  % Implicitly defines x too 
yPrime = y+2*x-1 % Also a symfun because y is a symfun 
diff(yPrime,x) 

, который возвращает этот symfun

ans(x) = 

diff(y(x), x) + 2 
Смежные вопросы