0

我正在尝试使用带有函数 SOLVE 的 PROC FCMP 来求解非线性方程并将解自动插入表中。例如

proc fcmp;
      /* define the function */
   function inversesqrt(x);
      return(1/sqrt(x));
   endsub;

   y = 20;
   x = solve("inversesqrt", {.}, y, .);
   put x;
run;

运行上述代码后,x将显示在结果中,但我无法在进一步的代码中使用它。我试图将x保存为宏变量或表格,但对我没有任何作用。有人可以帮我吗?

4

1 回答 1

3

创建第二个fcmp函数以返回求解。

options cmplib=work.funcs;

proc fcmp outlib=work.funcs.sandbox;
      /* define the function */
   function InverseSqrt(x);
      return(1/sqrt(x));
   endsub;

   function SolveInverseSqrt(arg);
     return (solve('InverseSqrt', {.}, arg, .));
   endsub;
run;

%let x = %sysfunc(SolveInverseSqrt(20));
%put &=x;
于 2020-04-23T13:02:36.690 回答