📄 grad7.m
字号:
% GRAD7 : Determination of values for the first derivatives [f]%
% [B] = GRAD7 (X,Y) or [B] = GRAD7 (X,Y,EPSS)
%
% Returns in B the estimates for the first derivatives for a
% spline fit trough the points given in X and Y.
% If the value EPSS is not given this routine uses the matlab
% precision value eps.
% uses a as a workspace.
function [b]=grad7(x,y,epss)
if nargin ==2,
epss = eps;
end
n= length(x);
if n <3, error('N moet groter zijn dan 2');endn1 = n-1;n2 = n-2;for k=1:n1, k1=k+1; a(k)=(y(k1)-y(k))/(x(k1)-x(k));endfor k=2:n1, b(k)=(a(k)+a(k-1))/2.0;endb(1)=a(1);b(n)=a(n1);for k=1:n2, k1=k+1; if (abs(a(k))<= epss), b(k)=0.0; b(k1)=0.0; elseif ((a(k)*a(k1))<0.0) b(k1)=0.0; endendif (abs(a(n1))<=epss), b(n1)=0.0; b(n)=0.0;endfor k=1:n1, k1=k+1; if ((b(k)*a(k)) < 0.0), b(k)=0.0 end if((b(k1)*a(k)) < 0.0), b(k1) = 0.0; endendif ((b(n)*a(n1)) < 0.0), b(n)=0.0;end% return % toegevoedgd, schalering die volgt lijkt niet goed te werkenfor k=1:n1, pk = 0.0; qk = 0.0; k1 = k+1; if ((abs(b(k))+abs(b(k1)))> epss), h=3.0 * a(k); rk=(2.0 * b(k) + b(k1))/h; sk=(2.0 * b(k1) + b(k))/h; if (1.0 - rk)*(sk-1.0) < 0.0, pk = min([rk,sk]); end end if (abs(a(k))> eps), h=3.0*a(k); qk=(b(k)+b(k1))/h - sqrt(b(k)*b(k1))/abs(h); end a(k) = max([qk pk 1.0]);endb(1)=b(1)/a(1);b(n)=b(n)/a(n1);for k=1:n2; k1=k+1; b(k1)=b(k1)/max([a(k) a(k1)]);endreturn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -