Неявное дифференцирование-вторая производная с использованием 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?
2 ответов:
Насколько мне известно, в Matlab нет прямого способа получить неявную вторую производную. И работа с неявными функциями в Matlab может быть довольно сложной. Для начала ваша переменная
yнеявно является функциейxs Вы должны определить ее следующим образом: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.Есть много других способов достичь того же результата. Смотрите также Эти два руководства: [1], [2].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'))
Прошло почти четыре года с тех пор, как я задал этот вопрос и получил блестящую помощь от хорхлера, но я открыл другой метод, используя правило цепочки.
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