Arithmetic
將數組的每個元素提升到冪並將輸出儲存到 bash 中的新數組
我想將分數(在第一個循環中計算分數)提高到小數冪(第二個循環),但是,我總是得到 1 作為結果。我也想將第二個循環的輸出儲存在一個數組中。任何想法如何解決這個問題?謝謝!
# # vector of vertical pressure levels levs=($(seq 200.0 50.0 900.0)) printf "%s\n" "${levs[@]}" # # exponent for dry air rho=$(bc -l <<<'e(l(0.0819)*0.5)') echo $rho # # calculate fraction of P_surf/P_i from Poisson equation for each vertical pressure level val3=() # for i in "${levs[@]}" do echo $i val3+=($(bc -l <<<"1000.0/$i")) echo "$val3" done printf "%s\n" "${val3[@]}" # # raise fraction of P_surf/P_i to the rho power for dry air (#bc <<< "2 ^ 3") pow=() # for j in "${val3[@]}" do echo $j echo $rho pow+=($(bc <<<"$j^rho")) #echo $((i*rho)) echo "$pow" done #
您的嘗試有幾個問題。將
rho
其作為冪常數提升到bc
bc <<<"$j ^ $rho"
即使這樣,程式碼也不起作用,
bc
指數也不採用小數。你得到一個錯誤non-zero scale in exponent
。您可以使用
awk
(在 GNU 變體上測試)相同並應用等精度格式awk -v base="$j" -v xp="$rho" 'BEGIN{ printf "%.20f", base ** xp }'