How to I compute partial derivatives of a function
9 次查看(过去 30 天)
显示 更早的评论
Suppose I have a function z=z(x,y), how do I numerically (not symbolically) compute the partial derivatives?
I know of the function gradient(f,dx) which computes general derivatives in one dimension, but what is I want to compute the function:
\frac{\partial^{4}z}{\partial x^{4}}+\frac{\partial^{2}z}{\partial y^{2}}
for example? So I would need to compute them separately. I would rather not do a finite difference solution as that would be a faff. Is there a way of using the gradient function at all?
0 个评论
回答(2 个)
John D'Errico
2016-8-12
High order partials can be difficult to estimate numerically, and to do so with full precision.
Consider this example function:
z = @(x,y) exp(-(x+2*y).^2);
z(-1,1)
ans =
0.36788
I'll define the variables x0 and y0 so that you can see how to use it. So we want to compute the 4 order partials around the point (x0,y0).
x0 = -1;
y0 = 1;
[dzdx4,ex] = derivest(@(x) z(x,y0),x0,'deriv',4)
dzdx4 =
-7.3576
ex =
3.4866e-08
[dzdy4,ey] = derivest(@(y) z(x0,y),y0,'deriv',4)
dzdy4 =
-117.72
ey =
1.7325e-06
The second returned argument is an error estimate that indicates how well it thinks it did the job. So I am getting roughly 8 significant digits of precision in each direction.
I did them separately before to see the error estimates also.
In one line do this:
D = derivest(@(x) z(x,y0),x0,'deriv',4) + ...
derivest(@(y) z(x0,y),y0,'deriv',4)
D =
-125.08
2 个评论
John D'Errico
2016-8-12
I NEVER said the problem needed to be symbolic, did I? In the example I showed, nothing was symbolic, just a function, z(x,y), as you said that you had. But you never said that all you really have is a series of numbers. Should I have known that? Oh, well. No. You cannot use derivest.
If you have no more than a list of numbers, then you need to generally need to use a finite difference approximation. Or you can use finite elements. There are lots of classic ways to solve PDES. Books of them, even.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Calculus 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!