*模拟求导 步长一定要比阈值小,才能得出准确的结果; 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过去了。。。我就呵呵了