#!/bin/sh GP="figure5.gp" DISTRIB="U-distrib.dat" INTEGRAL="figure5.dat" # maximum at distribution function MAX=`awk 'BEGIN { max=0; } { if ($2 > max) max=$2; } END {printf "%6g", max/2; }' $DISTRIB` # range for considered values MINIMAL_U=`awk "BEGIN {val=1E12; } { if (\\$2 >= $MAX && \\$1 < val ) val=\\$1; } END {printf \"%6g\", val}" $DISTRIB` MAXIMAL_U=`awk "BEGIN {val=0; } { if (\\$2 >= $MAX && \\$1 > val ) val=\\$1; } END {printf \"%6g\", val}" $DISTRIB` #echo "MINIMAL_U = $MINIMAL_U" #echo "MAXIMAL_U = $MAXIMAL_U" REGRESION=`awk "{ if (\\$2 > $MINIMAL_U && \\$2 < $MAXIMAL_U) print; }" $INTEGRAL |\ ./linear-reg.awk |\ awk '/^# [ab]/{ print $4; }'` # constats from linear aproximation CONST_A=`echo $REGRESION | awk '{print $1}'` CONST_B=`echo $REGRESION | awk '{print $2}'` CONSTANTS="" for i in 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do REGRESION=`tail -n$i figure5.dat | ./linear-reg.awk | \ awk '/^# a/ { a=$4; printf "%6g ", $4;} /^# b/ { b=$4; printf "%6g ", $4;} END{ printf "%6g", -b/a}'; ` const_a=`echo $REGRESION | awk '! /^#/ { print $1; }'` const_b=`echo $REGRESION | awk '! /^#/ { print $2; }'` max_time=`echo $REGRESION | awk '! /^#/ { print $3; }'` CONSTANTS="$CONSTANTS print \"a$i = $const_a\"; print \"b$i = $const_b\"; print \"max_time$i = $max_time\";" done awk "/^CONST_A/ { printf \"CONST_A = %6g\n\", $CONST_A; next; } /^CONST_B/ { printf \"CONST_B = %6g\n\", $CONST_B; next; } /^CONSTANTS/ { $CONSTANTS next; } { print; }" $GP.preprocess > $GP