对任意可求导函数求导的sas模拟

*模拟求导 步长一定要比阈值小,才能得出准确的结果;
data Derivation (keep=interval slope);
    * function y = 1/x only concern about x>0;
    deltaX = 1e-6; *割线变为切线时x1减小的步长;
    x0 = 2; y0 = 0; %function(y0,x0);*需要求导的点;
    put y0;
    slope = 0; *需要求得的斜率,即倒数(copy的哥们儿记住了是导数);
    interval = 5; *x0与x1的在x轴的间距,也是判定停止求导的变量;
    x1 = x0 + interval; y1 = 0;%function(y1,x1); *割线另一端的点,辅助求导的点;
    thershold = 1e-6 - 1e-7;*停止求导的阈值;
    do until (interval < thershold);
        interval = interval - deltaX; *更新x0 与x1的间距;
        x1 = x0 + interval;%function(y1,x1); *更新x1的坐标;
        slope = (y1-y0) / (x1-x0);*更新斜率,即倒数(记住了是导数);
        output;
    end;
run;

/*这里是任意你需要求导的函数, sas使用的是按址更新的策略,所以不需要写返回值*/
%macro function(y,x);
    &y = 1 / &x;
%mend;

 今天看到了一个货抄袭了我的这篇博客,连转载也不说明,鄙视!!!!,还有倒数也copy过去了。。。我就呵呵了

原文地址:https://www.cnblogs.com/yican/p/4207090.html