Точност при извеждане на реални числа
Съдържание
закръгляване на реални числа
закръгляне при делене на цели числа
верижна дроб
Под точност на извеждане на числа ще разбираме с колко цифри можем да представим дадена стойност, дадено отношение между стойности, как се извършва закръгляване на стойност или по-общо как се осъществява представяне на реални числа в паметта на компютъра. Нека имаме две цели числа, за които трябва да изчислим стойност на тяхното отношение. Всяка въведена / изчислена стойност се съхранява в паметта на компютъра до определена точност. Декларираният тип на променливата определя допустимият числов интервал и възможния брой двоични разряди за съхраняване на въведената или изчислена стойност на тази променлива. Използвания брой разряди за въведено или пресметнато число предопределят до известна степен неговата точност при извеждане, но не е винаги пресметната стойност е идентична с изведената. Въведените числа винаги се закръглят след определен брой знаци. Това се отнася както за рационални числа и/или периодични дроби, така и за ирационални числа. Целта ни тук е извеждане на стойност представена като отношение на две естествени числа. Самото извеждане се извършва с точност до определен брой цифри след десетичната запетая и не е свързано със вече съхранената стойност за същото отношение числител / знаменател.
закръгляване на реални числа
Да се състави програма, която по въведени 2 естествени числа от интервала [100..10000] се осъществява закръгляване при извеждане резултата от деленето им с точност 25 знака след десетичната запетая. При цялата част на това отношение се ползва тривиално извеждане. За дробната част ще се ползва цикъл, чрез който след всяко делене умножаваме числителя по 10. Да припомним: ако делители на знаменателя са само степени на 2 и 5 е възможно получаване на стойност, която е крайна, непериодична дроб. Пример: 4,3 Изход: 1.3333333333333333333333333
Следващата примерна програма дава решена задача за точност при извеждане на отношение между две естествени числа:закръгляне при делене на цели числа
В някои от алгоритмите се налага закръгляне на цели числа, т.к. се търси най-близкото цяло число като частно и/или като остатък при делене на две естествени числа. При представяне на число от една бройна система в друга имаме отношение между въведеното число и числото основа на новата бройна система. При изчисляване на това отношение се налага закръгляне на цели числа, т.к. постоянно се работи с целочислено частно и целочислен остатък. Примери за алгоритми използващи закръгляне на цели числа при извеждане стойност на отношение между две естествени числа има достатъчно много. Нека разгледаме следната примерна задача за закръгляне на цели числа:
Имаме две естествени числа M и N, където M>N. Тези числа са съответно числител и знаменател в дадено отношение. Трябва да се изведат две нови числа P и Q, които са кратни на N и съответно са най-близкото по-малко и най-близкото по-голямо на N.Алгоритъм
Тази задача се свежда до закръгляне на стойност, т.к. се търси целочислено частновъвеждаме стойност на двете естествени числа, като проверяваме за релацията M>N;
изчисляваме стойност на целочислено частно чрез целочислено делене на двете естествени числа;
използваме целочисления остатък O за закръгляне на търсените цели числа;
по-малкото естествено число има стойност P = M – O;
по-голямото естествено число има стойност Q = M +(N – O);
Подобни въпроси са разгледани и в египетски дроби, закръгляване на реално в цяло число, точност при извеждане на стойност, манипулатори oct, dec, hex.
Следващата примерна програма илюстрира алгоритъм за закръгляне с цели числа
верижна дроб
В математиката терминът верижна дроб се свързва с редица от отношения между естествени числа, в която всеки следващ член формира нов знаменател в същата дроб. Възможно е първият член в тази редица да е естествено число. Приемаме следните означения: a, b са естествени числа и представляват съответно числител и знаменател. Разглежданите в математиката видове дроби най-често са:
проста дроб a < b Пример: 3 / 8смесена дроб a > b Пример: 6 / 4, 9 / 5
непериодична дроб – знаменателят е съставен само от делители 2 и 5. Пример: 102 / 10 = 10.2
периодична дроб - знаменателят или просто число или неговите делители не са само 2 и 5. Пример:4 / 3 = 1.3(3)
верижна дроб - знаменателят на тази дроб е описан с ред, в който всеки член формира нов знаменател в същата верижна дроб.
Изчислението на дадена верижна дроб е свързано със следните проблеми:
а) точността е ограничена от използваните типове променливи;
При използване на включената в езика библиотека #include <iomanip.h> е възможно да посочим желана точност на извеждане с setprecision(естествено число). Но това е валидно до определени граници т.к. числата са представен в компютърната памет в експоненциален вид. Пример: за деклариране на достатъчно малко число за точност.
const double EPSILON = 1E-14;
б) по сериозен проблем представлява оформянето на самата формула за изчисляване на верижна дроб.
Подобен тип задачи се решават в “обратна” посока, т.е. първо се изчислява стойността на последния член и тя се предава за изчисляване на предпоследния член. Този ред на изчисления продължава до достигане на най-левия член.
Очевидно, в случая е удобно да се приложи рекурсивна функция.
Алгоритъмът е приложим при сходящи редици, т.е. всеки десен член има много-по-малка тежест за крайния резултат – стойността на изчисляваната верижна дроб.
Ирационалните числа са безкрайни, непериодични дроби и не могат да се представят като отношение a / b;
Крайните десетични дроби могат да се разглеждат като безкрайни периодични дроби с период 0.
Да разгледаме следната примерна задача за верижна дроб за изчисляване приближена стойност на ирационалното число на Лудолф:
Дадена е верижна дроб, описана със следното уравнение:
3+ 1/(6+ 9/(6+25/(6+49/(6+81/(6+121/....)))
Да се състави програма, чрез която по въведен N - брой членове на верижната дроб се извърши изчисляване на стойността й.
Пример: 12 Изход: 3.14148.
Следващата примерна програма реализира изчисляване на верижна дроб:
Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.