MATLAB之怎样利用MATLAB中值差分法求一阶二阶导数
**
MATLAB初學之怎么利用中值差分法求一階二階導數
**
我們最近在學習MATLAB。在MATLAB中怎么求導數?
MATLAB中有專門求導的函數
針對f(x)類的函數:
diff(f,x) :求f關于x的導數
diff(diff(f,x),x):求f二階導數
針對f(x,y)類的函數求偏導:
diff(f,x) :求f關于x的偏導數
diff(diff(f,x),y):求f關于x的偏導數再對y進行二階偏導
但是以上方法求導不夠精確,diff是基于向前歐拉差分或者向后歐拉差分實現的,在求導的方法中,中心差分法是精度比較高的。今天先大家分享如何利用中值差分法求一階二階導數。
##原理:
##程序源代碼,以方程f=cos(x).*exp(-x.^2/2)為例:
clear all
clc
h=0.1;
x=-4:h:4;
f=cos(x).*exp(-x.^2/2);
for j=2:(length(x)-1)
%(從第二點開始,因為第一個點求不出來)
df(j)=(f(j+1)-f(j-1))/2/h;
end
plot(x(2:(length(x)-1)),df(2:(length(x)-1)))
%(df從第二點開始,因為第一個點系統自動為零)
最后就畫出了一階導數圖像:
##那怎么求二階導數呢?
###原理
###代碼:
clear all
clc
h=0.1;
x=-4:h:4;
f=cos(x).exp(-x.^2/2);
for j=2:(length(x)-1) %(從第二點開始,因為第一個點求不出來)
dff(j)=(f(j+1)+f(j-1)-2f(j))/2/h^2; %(求二階導)
end
plot(x(2:(length(x)-1)),dff(2:(length(x)-1)))
總結
以上是生活随笔為你收集整理的MATLAB之怎样利用MATLAB中值差分法求一阶二阶导数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【更新】LMD VCL Complete
- 下一篇: 愤怒的小鸟siki学院案例,添加瞄准预测