Неявное дифференцирование-вторая производная с использованием Matlab



Уравнение равно 4*x^2-2*y^2==9. Используя неявное дифференцирование, я могу найти, что вторая производная y по отношению к x является -9/y^3, что требует замены на заключительном шаге.



Я пытаюсь воспроизвести этот ответ, используя символический инструментарий Matlab. Я нашел некоторую поддержку для первой производной здесь, и мне удалось найти первую производную.

clear all
syms x y f
f=4*x^2-2*y^2-9
sol1=-diff(f,x)/diff(f,y)


Но я не могу продолжать дальше, чтобы найти вторую производную с конечной упрощение (замена 4*x^2-2*y^2 на 9).



Может кто-нибудь показать мне, как это сделать в Matlab?

632   2  

2 ответов:

Насколько мне известно, в Matlab нет прямого способа получить неявную вторую производную. И работа с неявными функциями в Matlab может быть довольно сложной. Для начала ваша переменная y неявно является функцией x s Вы должны определить ее следующим образом:

clear all
syms y(x) % defines both x and y
f = 4*x^2-2*y^2-9

Здесь y(x) теперь то, что называетсяпроизвольной или абстрактной символической функцией , то есть без явной формулы. Затем возьмем производную от f по отношению к x:

s1 = diff(f,x)

Это возвращает функцию в терминах неявной производной от y(x) относительно x, diff(y(x), x) (в этом случае diff(y) является стенографией). Вы можете решить эту функцию для diff(y) алгебраически с помощью subs и еще solve:

syms dydx % arbitrary variable
s2 = subs(s1,diff(y),dydx)
s3 = solve(s2,dydx)
Это дает первую неявную производную. Затем вы можете взять другую производную от этого выражения, чтобы получить вторую неявную производную как функцию от первой:
s4 = diff(s3,x)

Наконец, подставим выражение для первого неявного производная в это и упростить, чтобы получить окончательный вид:

s5 = simplify(subs(s4,diff(y),s3))

Это дает (2*(y(x)^2 - 2*x^2))/y(x)^3. И тогда вы можете устранить x, используя исходное выражение для f с последующей заменой и решением:

syms x2
f2 = subs(f,x^2,x2)
x2 = solve(f2,x2)
s6 = subs(s5,x^2,x2)
Наконец, вы можете превратить это обратно в явное алгебраическое выражение с окончательной заменой, если хотите:
s7 = subs(s6,y,'y')

Это дает ваше решение -9/y^3.

Весь этот процесс можно описать более сжато (но очень нечетко).) как:
clear all
syms y(x) dydx x2
f = 4*x^2-2*y^2-9;
s1 = solve(subs(diff(f,x),diff(y),dydx),dydx)
s2 = simplify(subs(subs(subs(diff(s1,x),diff(y),s1),x^2,solve(subs(f,x^2,x2),x2)),y,'y'))
Есть много других способов достичь того же результата. Смотрите также Эти два руководства: [1], [2].

Прошло почти четыре года с тех пор, как я задал этот вопрос и получил блестящую помощь от хорхлера, но я открыл другой метод, используя правило цепочки.

syms x y
f=4*x^2-2*y^2-9
dydx=-diff(f,x)/diff(f,y)
d2ydx2=diff(dydx,x)+diff(dydx,y)*dydx

d2ydx2=simplifyFraction(d2ydx2,'Expand',true)

s1=solve(f,x)
subs(d2ydx2,x,s1(2))

Comments

    Ничего не найдено.