Вы можете делать простые числовые вычисления с bc
.Смотрите справочную страницу.Более сложные вычисления могут быть выполнены с помощью octave
, который является бесплатным клоном Matlab.
Например, для этого вычисляются значения интервала:
$ octave -q --eval 'printf ("%f\n", [0:0.1:pi/2])'|nl|tee x.txt
1 0.000000
2 0.100000
3 0.200000
4 0.300000
5 0.400000
6 0.500000
7 0.600000
8 0.700000
9 0.800000
10 0.900000
11 1.000000
12 1.100000
13 1.200000
14 1.300000
15 1.400000
16 1.500000
Это вычисляет значения sin:
$ octave -q --eval 'printf ("%f\n", sin([0:0.1:pi/2]))'|nl|tee y.txt
1 0.000000
2 0.099833
3 0.198669
4 0.295520
5 0.389418
6 0.479426
7 0.564642
8 0.644218
9 0.717356
10 0.783327
11 0.841471
12 0.891207
13 0.932039
14 0.963558
15 0.985450
16 0.997495
И команду join
можно использовать для объединения двух файлов:
$ join -1 1 -2 1 -o 1.2 2.2 x.txt y.txt
0.000000 0.000000
0.100000 0.099833
0.200000 0.198669
0.300000 0.295520
0.400000 0.389418
0.500000 0.479426
0.600000 0.564642
0.700000 0.644218
0.800000 0.717356
0.900000 0.783327
1.000000 0.841471
1.100000 0.891207
1.200000 0.932039
1.300000 0.963558
1.400000 0.985450
1.500000 0.997495
Но, вероятно, лучше остаться в Octave для всего вычисления:
$ octave -q --eval 'for x = .1:0.1:pi/2 ; printf ("%f %f\n", x, sin(x)); end'
0.100000 0.099833
0.200000 0.198669
0.300000 0.295520
0.400000 0.389418
0.500000 0.479426
0.600000 0.564642
0.700000 0.644218
0.800000 0.717356
0.900000 0.783327
1.000000 0.841471
1.100000 0.891207
1.200000 0.932039
1.300000 0.963558
1.400000 0.985450
1.500000 0.997495