Скачать книгу

результат для малых значений длины окружности.

      : B14 ( L -> R S )      \ R=L/(2*Pi) S=Pi*R^2

      628e-2 F/                  \ L -> R=L/6.28 где 6,28=2*Pi=D

      FDUP FDUP F* 314e-2 F*      \ R -> R Pi*R^2

      ;

      Посчитаем R и S для L=25,37

      2537E-2 B14 F. F.

      51.244976 4.0398089 Ok

      R=25.37/6.28= 4,0398 и S=3,14* 4,0398^2= 51,244. Тест прошел успешно.

      Пример 15. Зная площадь круга, вычислить его диаметр и длину.

      : B15 ( S -> D L )                  \ D=Квадратный_Корень(4*S/Pi) L=Pi*D

      4E F*                  \ S -> 4*S

      314E-2 F/            \ 4*S -> 4*S/Pi

      FSQRT                  \ 4*S/Pi -> Квадратный_Корень(4*S/Pi)=D

      FDUP 314E-2 F*      \ D -> D D*Pi=L

      ;

      Посчитаем диаметр и длину круга площадью равной 12,345.

      12345E-3 B15 F. F.

      12.452036 3.9656166 Ok

      Квадратный корень из (12,345*4/3.14) равно 3,965616, а 3,965616*3,14=12,4520, то ест ь ИСТИНА. Пример довольно простой и нет других причин писать код для целочисленного варианта аргументов. В случае необходимости несложно самостоятельно решить эту задачу.

      Пример 16. Вычислим расстояние между двумя точками на числовой оси, зная координаты.

      : B16 ( X1 X2 -> |X1-X2| )

      – ABS      \ X1 X2 -> |X1-X2|

      ;

      Для вещественных аргументов.

      : B16 ( X1 X2 -> |X1-X2| )

      F- FABS      \ X1 X2 -> |X1-X2|

      ;

      31E-1 -12E1 B16 F.

      123.10000 Ok                  \ |3.1-(-120)|=123.1

      Пример 17. По трем координатам на числовой оси (X1, X2, X3) вычислить следующие расстояния: |x1-x3|, |x2-x3| и их сумму. Сперва для целых чисел.

      : B17 ( X1 X2 X3 -> |x1-x3| |x2-x3| {|x1-x3|+|x2-x3|} )

      SWAP OVER            \ X1 X2 X3 -> X1 X3 X2 X3

      – ABS                  \ X1 X3 X2 X3 -> X1 X3 |X2-X3|

      ROT ROT – ABS SWAP      \ X1 X3 |X2-X3| -> | X1-X3| |X2-X3|

      2DUP +                  \ | X1-X3| |X2-X3|-> | X1-X3| |X2-X3| (| X1-X3|+|X2-X3|)

      ;

      Для вещественных.

      : B17 ( X1 X2 X3 -> |x1-x3| |x2-x3| {|x1-x3|+|x2-x3|} )

      FSWAP FOVER                  \ X1 X2 X3 -> X1 X3 X2 X3

      F- FABS                        \ X1 X3 X2 X3 -> X1 X3 |X2-X3|

      FROT FROT F– FABS FSWAP      \ X1 X3 |X2-X3| -> | X1-X3| |X2-X3|

      FOVER FOVER F+            \ | X1-X3| |X2-X3|-> | X1-X3| |X2-X3| (| X1-X3|+|X2-X3|)

      ;

      Тест на координатах

      –1E1 1E-1 3E2 B17 F. F. F.

      609.90000 299.90000 310.00000 Ok

      |X1-X3|=|-10-300|=310; |X2-X3|=|0.1-300|=299.9; (|X1-X3|+|X2-X3|)=310+299.9=609.9.

      Пример 18. Схож с предыдущей задачей. Сумма заменяется произведением.

      : B18 ( X1 X2 X3 -> {|x1-x3|*|x2-x3|} )

      SWAP OVER            \ X1 X2 X3 -> X1 X3 X2 X3

      – ABS                  \ X1 X3 X2 X3 -> X1 X3 |X2-X3|

      ROT ROT – ABS *      \ X1 X3 |X2-X3| -> {|x1-x3|*|x2-x3|}

      ;

      –5 2 7 B18

      Ok ( 60 )

      |-5-7|*|2-7|= 12*5=60

      Для вещественных чисел.

      : B18 ( X1 X2 X3 -> {|x1-x3|*|x2-x3|} )

      FSWAP FOVER            \ X1 X2 X3 -> X1 X3 X2 X3

      F- FABS                  \ X1 X3 X2 X3 -> X1 X3 |X2-X3|

      FROT FROT F– FABS F*      \ X1 X3 |X2-X3| -> {|x1-x3|*|x2-x3|}

      ;

      –1E1 2E-1 23E1 B18 F.

      55152.000 Ok

      |-10-230|*|0.2-230|=240*229.8=55152

      Пример 19. По координатам противоположенных вершин прямоугольника вычислить его периметр и площадь, стороны параллельны координатным осям.

      : B19 ( X1 Y1 X2 Y2 -> P S )      \ P=2*[A+B] S=A*B

      ROT – ABS            \ X1 Y1 X2 Y2 -> X1 X2 |Y2-Y1|

      SWAP ROT – ABS      \ X1 X2 |Y2-Y1| -> |Y2-Y1|=A |X2-X1|=B

      2DUP + 2*            \ A B -> A B 2*(A+B)=P

      ROT ROT *            \ A B P -> P A*B=S

      ;

      1 3 7 8 B19 . .

      30 22 Ok

      A=|1-7|=6 B=|3-8|=5. P=2*(A+B)=2*(6+5)=22. S=A*B=6*5=30.

      Вариант с вещественными аргументами не сильно отличается от целочисленного.

      : B19 ( X1 Y1 X2 Y2 -> P S )            \ P=2*[A+B] S=A*B

      FROT

Скачать книгу