台湾国立大学郭彦甫Matlab教程笔记(16) 数值微分 numerical differentiation
臺灣國立大學郭彥甫Matlab教程筆記(16) 數值微分 numeric differentiation
復習:diff()函數用來計算vector前后 entry的差異
數值微分繼續
various step size 不同Δx大小
不同Δx大小,看近似值和真正函數值之間的差異大不大。
看題目,用不同的h值計算函數f(x)=sin(x)的導數,畫出圖形
The derivatives(導數) of f(x)=sin(x) calculated using various h values
codes:
g=colormap(lines);hold on; for i=1:4%為了給出不同的h值x=0:power(10,-i):pi;%power(10,-i)表示10的-i次方 y=sin(x); m=diff(y)./diff(x);%算是計算導數 plot(x(1:end-1),m,'color',g(i,:));%x(1:end-1)因為diff差值,vector維度少一 end hold off;set(gca,'xlim',[0,pi/2]);%設置x軸橫坐標范圍 set(gca,'ylim',[0,1.2]); set(gca,'xtick',0:pi/4:pi/2);%設置x軸坐標間隔 xticklabels({'0','\pi/4','\pi/2'});%顯示pi set(gca,'fontsize',18);%設置字體 h=legend('h=0.1','h=0.01','h=0.001','h=0.0001');%設置圖像名稱 set(h,'fontname','Times New Roman'); box on;%右上邊框顯示代碼的解釋
colormap回顧:colormap輸入參數的用法
plot(x(1:end-1),m,‘color’,g(i,:));的解釋:
%x(1:end-1)因為diff差值,vector維度少一,所以需要end-1。這里color用的是g(i,:),由于g是colormap中的lines顏色圖,顏色圖是一個矩陣matrix,這里應該是二維的,g(i,:)取的是這個矩陣的第i行元素,我的理解是一個行向量,然后賦值給了color顯示出來。
運行結果:
作業題:
給定一個函數,用不同的h值計算近似導數
我的代碼:
有個問題:這個函數表達式是兩個函數相乘的形式,中間是用*還是用.*點乘?
實驗結果:
y=exp(-x).*sin(x^2/2);(錯誤)
計算這個表達式正確的形式
我的練習結果:
下一個題目是
二次和三次微分second and third derivatives
the second derivative f’’ and third derivative f’’’ can be obtained using similar approaches
舉例子:
例程代碼:
x=-2:0.005:2; y=x.^3; m=diff(y)./diff(x);%一次微分 m2=diff(m)./diff(x(1:end-1));%二次微分plot(x,y,x(1:end-1),m,x(1:end-2),m2);%作圖 xlabel('x','fontsize',18); ylabel('y','fontsize',18); legend('f(x)=x^3','f''(x)','f'''(x)',4);%函數標頭 set(gca,'fontsize',18);【注意】每做一次微分,entry就少一個。
運行結果:
總結一下:
數值微分主要使用diff()函數。需要注意的是做一次微分,entry減少一,就是vector維度少一個。
一次微分:m=diff(y)./diff(x);%一次微分
二次微分:m2=diff(m)./diff(x(1:end-1));%二次微分
總結
以上是生活随笔為你收集整理的台湾国立大学郭彦甫Matlab教程笔记(16) 数值微分 numerical differentiation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 和平精英里的守卫生命线第一把手枪是什么
- 下一篇: 报考部队文职怎么报名