MATLAB之怎样利用MATLAB中值差分法求一阶二阶导数
**
MATLAB初學之怎么利用中值差分法求一階二階導數(shù)
**
我們最近在學習MATLAB。在MATLAB中怎么求導數(shù)?
MATLAB中有專門求導的函數(shù)
針對f(x)類的函數(shù):
diff(f,x) :求f關(guān)于x的導數(shù)
diff(diff(f,x),x):求f二階導數(shù)
針對f(x,y)類的函數(shù)求偏導:
diff(f,x) :求f關(guān)于x的偏導數(shù)
diff(diff(f,x),y):求f關(guān)于x的偏導數(shù)再對y進行二階偏導
但是以上方法求導不夠精確,diff是基于向前歐拉差分或者向后歐拉差分實現(xiàn)的,在求導的方法中,中心差分法是精度比較高的。今天先大家分享如何利用中值差分法求一階二階導數(shù)。
##原理:
##程序源代碼,以方程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從第二點開始,因為第一個點系統(tǒng)自動為零)
最后就畫出了一階導數(shù)圖像:
##那怎么求二階導數(shù)呢?
###原理
###代碼:
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)))
總結(jié)
以上是生活随笔為你收集整理的MATLAB之怎样利用MATLAB中值差分法求一阶二阶导数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【更新】LMD VCL Complete
- 下一篇: 愤怒的小鸟siki学院案例,添加瞄准预测