तो मैं तरीकों कि Math.pow(...)
जो अच्छा है के चारों ओर घूमना के एक झुंड देखते हैं, लेकिन इनाम मैं एक अलग दृष्टिकोण का प्रस्ताव कर रहा हूँ की शब्दों पर आधारित है।
जड़ों को हल करने के लिए कई कम्प्यूटेशनल अनुमान हैं, कुछ दूसरों की तुलना में तेज़ कदम उठाते हैं। अंततः स्टॉपिंग पॉइंट वांछित परिशुद्धता की डिग्री तक आता है (यह वास्तव में आपके ऊपर/समस्या हल हो रही है)।(- प्रश्न शीर्षक की वजह से, यह भी कहा नकारात्मक रेंज इनाम परीक्षण)
मैं ठीक विस्तार से गणित समझाने के लिए नहीं जा रहा हूँ, लेकिन निम्नलिखित घन जड़ अनुमानों कि लक्ष्य परीक्षा उत्तीर्ण की कार्यान्वयन हैं। लूप में प्रत्येक पुनरावृत्ति (प्रत्येक विधि में while(Math.abs(xi-xi0)>precision)
लूप देखें) वांछित परिशुद्धता के करीब एक कदम प्राप्त करता है। एक बार परिशुद्धता प्राप्त हो जाने पर एक प्रारूप को संख्या पर लागू किया जाता है, इसलिए यह पुनरावृत्ति से प्राप्त गणना के रूप में सटीक है।
var precision = 0.0000000000001;
function test_cuberoot_fn(fn) {
var tested = 0,
failed = 0;
for (var i = -100; i < 100; i++) {
var root = fn(i*i*i);
if (i !== root) {
console.log(i, root);
failed++;
}
tested++;
}
if (failed) {
console.log("failed %d/%d", failed, tested);
}else{
console.log("Passed test");
}
}
test_cuberoot_fn(newtonMethod);
test_cuberoot_fn(halleysMethod);
न्यूटन के सन्निकटन कार्यान्वयन
function newtonMethod(cube){
if(cube == 0){//only John Skeet and Chuck Norris
return 0; //can divide by zero, we'll have
} //to settle for check and return
var xi = 1;
var xi0 = -1;
while(Math.abs(xi-xi0)>precision){//precision = 0.0000000000001
xi0=xi;
xi = (1/3)*((cube/(xi*xi))+2*xi);
}
return Number(xi.toPrecision(12));
}
हैली सन्निकटन कार्यान्वयन टिप्पणी हैली सन्निकटन घन हल करने के लिए जल्दी कदम उठा लेता है, इसलिए यह न्यूटन के सन्निकटन से computationally तेज़ है।
function halleysMethod(cube){
if(cube == 0){//only John Skeet and Chuck Norris
return 0; //can divide by zero, we'll have
} //to settle for check and return
var xi = 1;
var xi0 = -1;
while(Math.abs(xi-xi0)>precision){//precision = 0.0000000000001
xi0=xi;
xi = xi*((xi*xi*xi + 2*cube)/(2*xi*xi*xi+cube));
}
return Number(xi.toPrecision(12));
}
स्रोत
2014-02-13 04:30:41
गुणा 8^1/3 वापस आ जाएगी -1 द्वारा :-) – noel
एक देशी [ES6 में घन जड़] (http नहीं है (समर्थन here जांच) कर सकते हैं: //stackoverflow.com/a/29740048/1090562) –