Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- main();
- function main(){
- // CONSTANTS:
- $X = "1874017748.22052000"; // числа в строках для удобного точного подсчета
- $Y = "0.187401774822052000";
- echo "Исчезновение операнда: ";
- $validRes = bcadd($X, $Y, 20); // сложение для получения реального ответа
- $roundTo = 9; // по заданию необходимо округлить до 9 знаков после запятой
- $countedRes = bcadd(
- bcadd($X, 0, $roundTo),
- bcadd($Y, 0, $roundTo),
- $roundTo); // посчитанный результат двух чисел, округленных до 9 знаков после запятой
- $countedResStr = strval($countedRes); // переведем, в строку
- $mistakes = mistakesCount($validRes, $countedResStr); // получаем массив, который вернули в функции mistakesCount
- echo "Абсолютная ошибка: ", $mistakes["absMistake"], "; Относительная ошибка: ", $mistakes["relMistake"], " | ";
- echo "Умножение ошибки: ";
- $z = bcsub($X, "0.00000001", 20);
- $withoutMistake = bcmul($X, $X, 20);
- $withMistake = bcmul($X, $z, 20);
- $mistakes = mistakesCount($withoutMistake, $withMistake); // получаем массив, который вернули в функции mistakesCount
- echo "Абсолютная ошибка: ", $mistakes["absMistake"], "; Относительная ошибка: ", $mistakes["relMistake"], " | ";
- echo "Потеря значимости: ";
- $k = bcadd($X, 0); // прибавляем к иксу 0, фактически получая то же самое, но округляем до целого
- $mistakes = mistakesCount($X, $k); // получаем массив, который вернули в функции mistakesCount
- echo "Абсолютная ошибка: ", $mistakes["absMistake"], "; Относительная ошибка: ", $mistakes["relMistake"], " | ";
- }
- function mistakesCount($validRes, $countedRes){
- $absMistake = bcsub($validRes, $countedRes, 20); // считаем абс ош
- $relMistake = bcdiv($absMistake, $validRes, 20); // относительную ош не с 10 знаками, так как требуется больше
- return array(
- "absMistake" => $absMistake,
- "relMistake" => $relMistake
- );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement