matlab数值导数计算

设y=(x^3+2*x^2-x+12)^(1/2)+7*x^2+36用3种方法求函数 的数值导数急!!
2025-04-27 20:40:03
推荐回答(1个)
回答1:

先确定 假设在[-3,3]区间(定义域)内以0.01为步长求数值导数。
第一种:首先用一个4次多项式p(x)拟合y=f(x),并对p(x)求一般意义下的导数dp(x),然后求出dp(x)在假设点的值;
第二种:直接求y=f(x)在假设点的数值导数;
第三种:先手工算出y=f(x)导函数,然后求在假设点的值。
程序如下:
f=inline('sqrt(x.^3+2*x.^2-x+12)+7*x.^2+36');
x=-3:0.01:3;

p=polyfit(x,f(x),4);
dp=polyder(p);
dpx=polyval(dp,x);

dx=diff(f([x,3.01]))/0.01;

g=inline('(3*x.^2+4*x-1)./sqrt(x.^3+2*x.^2-x+12)/2+14*x');
gx=g(x);
plot(x,dpx,x,dx,'.',x,gx,'-');