კვადრატული ფესვის გამოთვლის ჰერონისეული ალგორითმი

კვადრატული ფესვის გამოთვლის უამრავი ხერხი არსებობს, თუმცა ბერძენი მათემატიკოსისა და ინჟინერის, ჰერონ ალექსანდრიელის ალგორითმი ყველაზე პოპულარულია მისი სიმარტივისა და სისწრაფის გამო. არსებობს მოსაზრება, რომ კვადრატული ფესვის პოვნის ეს მეთოდი ჰერონამდე ბაბილონელებმაც იცოდნენ.

ჰერონის ალგორითმი არაზუსტია და მხოლოდ მიახლოვებულ პასუხს თუ მოგვცემს.

ჰერონის ალგორითმი იტერატიულია, შეიძლება სამუდამოდ გაგრძელდეს და უსასრულოდ უახლოვდება ზუსტ პასუხს. რაც მეტჯერაა ალგორითმი განმეორებული, მით ახლოსაა პასუხი სწორ ფესვთან.

 კვადრატული ფესვის მიღების ჰერონისეული ალგორითმი 
ალგორითმის ერთადერთი ფორმულაა 

 ის რიცხვია რის ფესვსაც ვეძებთ

 პირველ შემთხვევაში მებისმიერი -თან მიახლოვებული მთელი რიხვია, მეორე და შემდეგ იტერაციებში კი წინა შემთხვევიდან მიღებული პასუხია

 განვიხილოთ მაგალითი 
ვიპოვოთ . (დაახლოებით )

-თან მიახლოვებული ციფრია .

პირველი შემთხვევა — 

გავიმეოროთ უფრო ზუსტი შედეგისთვის — 

პასუხი საკმაოდ ახლოსაა რეალურთან

 ცდომილების შემცირება 
ზემოთ მოცემულ კონკრეტულ მაგალითში ცდომილება -ია.

საპოვნელ ფესვთან ახლო რიცხვად  გამოვიყენეთ, უკეთეს შედეგს კი  მოგვცემდა.

. როგორც ჩანს  უფრო ახლოსაა -თან ვიდრე .

-ის გამოყენების შემთხვევაში ცდომილება დაახლოებით -მდე შემცირდება.

 იმპლემენტაცია 
let a = 87234908234854 //რისი ფესვის პოვნაც გვინდა
let b = 2 //ნებისმიერი მთელი დადებითი რიცხვი (რაც ახლოა საპოვნელ ფესვთან მით უკეთესია), ამ შემთხვევაში უბრალოდ 2
let iterations = 5*(""+a).length; //ალგორითმის განმეორების რაოდენობა. ამ შემთხვევაში (საპოვნელი რიხვის ციფრების რაოდენობა * 5)
//რადგანაც b სრულიად შემთხვევით შევარჩიეთ, ეს ალგორითმი საჭიროზე ბევრად მეტჯერ უნდა განვიმეოროთ

for(let i = 0; i < iterations; i++) b = (b + a/b)/2
let realroot = Math.sqrt(a); //რეალური ფესვი 
let difference = 100/realroot * Math.abs(realroot - b) //განსხვავება რეალურ და მიღებულ პასუხს შორის

console.log("პასუხი: " + b)
console.log("რეალური პასუხი: " + realroot)
console.log("ცდომილება: " + difference.toFixed(25) + "%")

/* შედეგი - node.js v14.16.0
  87234908234854{
    პასუხი:         9339962.96753119
    რეალური ფესვი: 9339962.967531187
    ცდომილება: 0.0000000000000199427466223%
  }
*/

 სქოლიო 

კატეგორია:ალგორითმები