⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diffctr.m

📁 一套科学运算语言 MATLAB 的程序设计有关的函数代码!!!
💻 M
字号:
function dy = diffctr(y, h, n, key)
%DIFFCTR 中心差分算法求取高阶数值微分。
%
%   dy = diffctr(y, h, n, key)
%
%  y 为给定的数据向量,h 为步长, n 为微分阶次 (<=4), 
%  key 是差分算法编号 (1 或 2), 返回的 dy 为数值微分。

%Designed by Prof D Xue (c) 2000
yx1=[y 0 0 0 0 0]; yx2=[0 y 0 0 0 0]; yx3=[0 0 y 0 0 0];
yx4=[0 0 0 y 0 0]; yx5=[0 0 0 0 y 0]; yx6=[0 0 0 0 0 y];
switch n
case 1
   if key==1,dy=(diff(yx1)+diff(yx2))/(2*h); L0=3;
   else, 
      dy = (-diff(yx1)+7*diff(yx2)+7*diff(yx3)-diff(yx4))/(12*h); L0=4;
   end
case 2
   if key==1, dy=(diff(yx1)-diff(yx2))/(h^2); L0=3; 
   else, 
      dy = (-diff(yx1)+15*diff(yx2)-15*diff(yx3)+diff(yx4))/(12*h^2); L0=4;
   end
case 3
   if key==1, dy=(diff(yx1)-diff(yx2)-diff(yx3)+diff(yx4))/(2*h^3); L0=4;
   else, 
      dy = (-diff(yx1)+7*diff(yx2)-6*diff(yx3)-6*diff(yx4)+7*diff(yx5)-...
         diff(yx6))/(8*h^3); L0=5;
   end
case 4
   if key==1,
      dy=(diff(yx1)-3*diff(yx2)+3*diff(yx3)-diff(yx4))/(h^4); L0=4; 
   else, 
      dy = (-diff(yx1)+11*diff(yx2)-28*diff(yx3)+28*diff(yx4)-...
         11*diff(yx5)+diff(yx6))/(6*h^4);L0=5;
   end
end
L1=L0; if key==2, L1=L1+1; end, dy=dy(L1:end-L0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -