正如标题中所述,我试图写一个函数,在点(a,b)处求f的偏导数。
然而,(0,0)求出的偏导数的输出量太大。
我的假设是,我计算偏导数的算法是错误的。但我不知道该怎么做。
我已经很久没有使用MATLAB了,所以如果我犯了一些错误或者用了一种无效的方式编写我的代码,我很抱歉。
我的代码如下:
function derivative = PartialDeriv(f, a, b, i)
h = 0.0001;
fn = zeros(1,2);
if i == 1
fn(i) = (f(a+h,b)-f(a,b)/h);
elseif i==2
fn(i) = (f(a,b+h)-f(a,b)/h);
end
derivative = fn(i);
end调用我的功能我得到:
PartialDeriv(f,a,b,i)
其中f是
f = @(x,y)(x-1).^2+(y-1).^2我得到:
f = -1.9998e+04我应该用手去做-2。
i,它在以下参数中可以看到:
PartialDeriv(f,a,b,i)表示我的指数,以便区分x和y的偏导数。
表示fn(1)是x的偏导数,fn(2)是y的偏导数。
发布于 2019-04-09 00:29:46
在这两种情况下,您都忽略了括号。
它应该是fn(i) = (f(a+h,b)-f(a,b))/h;而不是fn(i) = (f(a+h,b)-f(a,b)/h);。
稍微修改一下您的代码,我相信这个结构更适合您的意图:
function derivative = PartialDeriv(f, a, b)
h = 0.0001;
derivative = zeros(1,2);
derivative(1) = (f(a+h,b)-f(a,b))/h;
derivative(2) = (f(a,b+h)-f(a,b))/h;
endhttps://stackoverflow.com/questions/55583211
复制相似问题