本博文源于matlab中的数值微分,只在使用一阶和二阶中心差商公式来求函数的近似一阶和二阶导数
问题:求y=4x^2+3sinx在x=1处近似一(二)阶导数值
下面我们进行分步骤解决此问题
一阶二阶中心差商公式
一阶:
二阶:
编写matlab代码
思路如下,
- 首先计算一阶二阶导数非数值解的值
- 然后计算f(x+h),f(x),f(x-h)
- 最后套一阶,二阶公式进行计算
>> x=1;
>> dy_1=8*x+3*cos(x)
dy_1 =
9.6209
>> dy_2=8-3*sin(x)
dy_2 =
5.4756
>> h=[0.1 0.01 0.001 0.0001];
>> x1=x+h;
>> x2=x-h;
>> y=3*sin(x)+4.*x.^2;
>> y1=3*sin(x1)+4.*x1.^2;
>> y2=3*sin(x2)+4.*x2.^2;
>> ysw_1=(y1-y2)./(2*h);
>> ysw_1
ysw_1 =
9.61820675650928 9.62087990262419 9.62090664745263 9.62090691489781
>> ysw_2=(y1+y2-2.*y)./(h.^2);
>> ysw_2
ysw_2 =
5.47769002193785 5.47560808227487 5.47558725649822 5.47558709484974
>>
获取结果,解决问题
通过matlab编写代码,发现不同的h会有不同的精度的值,h步长越小,越趋于精确值。其中ysw_1就是1阶导数近似值,ysw_2是二阶导数近似值,大家可以跟非数值解进行对比,发现确实更精准!