2つのループを使用して計算しようとしています。しかし、私はループ要素にあまり精通していません。
これが私のデータです:
data try;
input rs t a b c;
datalines;
0 600
1 600 0.02514 667.53437 0.1638
2 600 0.2766 724.60233 0.30162
3 610 0.01592 792.34628 0.21354
4 615.2869 0.03027 718.30377 0.22097
5 636.0273 0.01967 705.45965 0.16847
;
run;
私が計算しようとしているのは、「T」値ごとに、a、b、およびcのすべての要素を方程式に使用する必要があるということです。次に、変数v1-v6を作成して、各T1-T6の方程式の結果を入力します。その後、vのすべての要素を合計するCSを作成します。
したがって、私の結果データセットは次のようになります。
rs T a b c v1 v2 v3 v4 v5 v6 CS
0 600 sum of v1
1 600 0.02514 667.53437 0.1638 sum of v2
2 600 0.2766 724.60233 0.30162 sum of v3
3 610 0.01592 792.34628 0.21354 sum of v4
4 615.2869 0.03027 718.30377 0.22097 sum of v5
5 636.0273 0.01967 705.45965 0.16847 sum of v6
これを行うために以下のコードを記述しましたが、エラーが発生しました。主に、変数のすべての要素をリンクするためにiとjを適切に使用する方法がわかりません。誰かが私が正しくないと思ったことを指摘できますか?myabeは、変数の要素を合計するためにsum関数を使用するべきではないことを認識していますが、どの関数を使用するかはわかりません。
data try3;
set try;
retain v1-v6;
retain t a b c;
array v(*) v1-v6;
array var(*) t a b c;
cs=0;
do i=1 to 6;
do j=1 to 6;
v[i,j]=(2.89*(a[j]**2*(1-c[j]))/
((c[j]+exp(1.7*a[j]*(t[i]-b[j])))*
((1+exp(-1.7*a[j]*(t[i]-b[j])))**2));
cs[i]=sum(of v[i,j]-v[i,j]);
end;
end;
run;
たとえば、ab cの値がないため、v1はv [1,1]=0のように計算されます。
v [1,2] =(2.89 * 0.02514 ** 2(1-0.1638))/((0.1638 + exp(1.7 * 0.02514 * 600-667.53437)))*((1 + exp(-1.7 * 0.02514 * (600-667.5347)))** 2))。
v [1,3]] =(2.89 * 0.2766 ** 2(1-0.30162))/((0.30162 + exp(1.7 * 0.2766 * 600-724.60233)))*((1 + exp(-1.7 * 0.2766 * (600-724.60233)))** 2))。
v [1,4]はabcの次の行の値を使用しますが、tはt[1]と同じになります。そして最後の行までこれを行います。そしてそれはv1になります。次に、v1 {1,1] + v1 [1,2] + v1 {1,3] .... v1 [1,6]のようなv1のすべての要素を合計して、cs[1,1]を作成する必要があります。 。