Обсуждение:Квадратный корень
Статья «Квадратный корень» входит в общий для всех языковых разделов Википедии расширенный список необходимых статей. Её развитие вплоть до статуса избранной является важным направлением работы русского раздела Википедии. |
Картинка
правитьНа картинке корень из икс, а в определении корень из a, небольшой рассинхрон — Эта реплика добавлена с IP 94.181.83.8 (о) 00:45, 22 декабря 2021 (UTC)
Корень уравнения и корень квадратный
правитьКорень уравнения и корень квадратный почему называются одинаково? Кто назвал арифметические корни — корнями? И почему? --Nashev 08:07, 7 апреля 2013 (UTC)
Способ вычисления
правитьЕсть способ вычисления квадратного корня, основанный на свойствах нечетных чисел: Корень из 49 = 1 + 3 + 5 + 7 + 9 + 11 + 13 (7 сложений) Способ похож на метод столбиком, но есть различия. --Sergei Frolov 09:42, 12 января 2016 (UTC)
Просто оставлю здесь алгоритмы вычисления корней - вавилонский метод Герона,
метод Ньютона и метод последовательных приближений (работает быстрее, но сложный по коду). Смотрите в сам код.
JavaScript
править<script>
// Returns the square root of n, with decimal digits nDig
function BabylonianMethodSqrt(
n //number to compute square root
, nDig //number of decimal digits in result
, delim //delimiter between whole part and floating points
)
{
delim = delim || '.'; //dot or delimiter
n = BigInt(n) * (10n ** BigInt(nDig*2)); //square have length nDig*2
var x = n;
var y = 1n;
while (x - y > 0n) {
x = (x + y) / 2n;
y = n / x;
}
//return x; //return BigInt
return ( x = x.toString(), x = x[0]+ delim +x.slice(1) ); //or string with delim.
}
// Usage:
// console.log(BabylonianMethodSqrt(5, 1000, ',')); // -> 1000 decimal points of sqrt(5), delimited with ','
// ----------- TEST Babylonian Method Sqrt -----------
var sqrt_value; //from wikipedia
var sqrt_computed; //compute with Babylon-method
function test(n, n_value, func){
// test sqrt(2)
console.log(
(
sqrt_value = n_value
.split(' ').join('') //use value from wikipedia
, sqrt_computed = func(n) //then compute
, sqrt_computed //then return it
)
, '\n'
,(sqrt_computed === sqrt_value) //and compare
);
}
//test sqrt from 2, 3, 5:
var root2 = '1,4142135623 7309504880 1688724209 6980785696 7187537694 8073176679 7379907324 7846210703 8850387534 3276415727 3501384623 0912297024 9248360558 5073721264 4121497099 9358314132 2266592750 5592755799 9505011527 8206057147 0109559971 6059702745 3459686201 4728517418 6408891986 0955232923 0484308714 3214508397 6260362799 5251407989 6872533965 4633180882 9640620615 2583523950 5474575028 7759961729 8355752203 3753185701 1354374603 4084988471 6038689997 0699004815 0305440277 9031645424 7823068492 9369186215 8057846311 1596668713 0130156185 6898723723 5288509264 8612494977 1542183342 0428568606 0146824720 7714358548 7415565706 9677653720 2264854470 1585880162 0758474922 6572260020 8558446652 1458398893 9443709265 9180031138 8246468157 0826301005 9485870400 3186480342 1948972782 9064104507 2636881313 7398552561 1732204024 5091227700 2269411275 7362728049 5738108967 5040183698 6836845072 5799364729 0607629969 4138047565 4823728997 1803268024 7442062926 9124859052 1810044598 4215059112 0249441341 7285314781 0580360337 1077309182 8693147101 7111168391 6581726889 4197587165 8215212822 9518488472';
var root3 = '1,7320508075 6887729352 7446341505 8723669428 0525381038 0628055806 9794519330 1690880003 7081146186 7572485756 7562614141 5406703029 9699450949 9895247881 1655512094 3736485280 9323190230 5582067974 8201010846 7492326501 5312343266 9033228866 5067225466 8921837971 2270471316 6036786158 8019049986 5373798593 8946765034 7506576050 7566183481 2960610094 7602187190 3250831458 2952395983 2997789824 5082887144 6383291734 7224163984 5878553976 6795806381 8353666110 8431737808 9437831610 2088305524 9016700235 2071114428 8695990956 3657970871 6849807289 9493296484 2830207864 0860398873 8697537582 3173178313 9599298300 7838702877 0539133695 6331210370 7264019249 1067682311 9928837564 1141422016 7427521023 7299427083 1059898459 4759876642 8889779614 7837958390 2288548529 0357603385 2808064381 9723446610 5968972287 2865264153 8226646984 2002119548 4155278441 1812865345 0703519165 0016689294 4154808460 7127714399 9762926834 6295774383 6189511012 7148638746 9765459824 5178855097 5379013880 6649619119 6222295711 0555242923 7231921977 3826256163 1468842032 8537166829 3864961191 7049738836 3954959381';
var root4 = '2,2360679774 9978969640 9173668731 2762354406 1835961152 5724270897 2454105209 2563780489 9414414408 3787822749 6950817615 0773783504 2532677244 4707386358 6360121533 4527088667 7817319187 9165811276 6453226398 5658053576 1350417533 7850034233 9241406444 2086432539 0972525926 2722887629 9517402440 6816117759 0890949849 2371390729 7288984820 8864154268 9894099131 6935770197 4867888442 5089754132 9561831769 2149997742 4801530434 1150359576 6833251249 8815178139 4080005624 2085524354 2235556106 3063428202 3409333198 2933959746 3522712013 4174961420 2635904737 8855043896 8706113566 0045757139 9565955669 5691756457 8221952500 0605392312 3400500928 6764875529 7220567662 5366607448 5853505262 3306784946 3342224231 7637277026 6324076801 0444331582 5733505893 0981362263 4319868647 1946989970 1808189524 2644596203 4522141192 2329125981 9632581110 4170495807 0481204034 5599494350 6855551855 5725123886 4165501026 2436312571 0244496187 8942468290 3404474716 1154557232 0173767659 0460918529 5756035779 8439805415 5380779064 3936397230 2875606299 9482213852 1773485924 5351512104 6345555040 7072278724';
test(2, root2, function(n){return BabylonianMethodSqrt(n, 1000, ',');});
test(3, root3, function(n){return BabylonianMethodSqrt(n, 1000, ',');});
test(5, root4, function(n){return BabylonianMethodSqrt(n, 1000, ',');});
// ----------- END Babylonian Method Sqrt -----------
function Sqrt( // Returns the square root of n, with decimal digits nDig
n //number to compute square root
, nDig //number of decimal digits in result
, algo //Heron - for Babylonian method, or Newton for Newton Iteration method
)
{
if (n < 0n) { throw 'square root of negative numbers is not supported' }
if (n < 2n) { return n; }
n = BigInt(n) * (10n ** BigInt(nDig*2)); //square have length nDig*2
var x = (algo=='Heron') ? n : 1n, y = 1n;
while (true) {
if(algo === 'Heron'){
if(x>y){ x = (x + y) / 2n; y = n / x; }
else{ break; }
}
else if(algo === 'Newton'){
y = ((n / x) + x) >> 1n;
if (x === y || x === (y - 1n)) { break; }
x = y;
}
}
return x; //return BigInt
}
function SqrtConsecutiveApproximations(
n //square, to find root
, nDig //number of decimal digits, in square root
){
if (n < 0n) { throw 'square root of negative numbers (imaginary numbers) is not supported' }
else if (n < 2n) { return n; }
n = BigInt(n) * (10n ** BigInt(nDig*2)); //square have length nDig*2
var nb = BigInt((n).toString(2).length); //we know bitlength of square
var rb = (nb>>1n)+1n; //and we know bitlength of square root
var r = 0n; //start value of root
var test = (1n<<(rb-1n))<<1n; //square to decrease root value
var square = 0n;
var newsquare; //new square to add and subtract if need.
for( //for each bit from rb up to 0
var i = rb;
(
(i>0n) //up to 0
&& (r>=0n) //and while root is positive
);
i-- //decrease the number of bit
){
test = test >> 1n; //test/2
// (a-b)^2 = a^2 - 2ab - b^2 = a^2 - (2ab + b^2) = a^2 - (a2b + b^2);
//a = r; a^2 = square (will be incremented or decremented); 2b = 2*test = test<<1n; test = (1n<<(i-1n)); b^2 = 1n<<((i-1n)*2n) = 1n<<((i-1n)<<1n); {r, i} on input;
square += (newsquare = ( ( r<<(i) ) + (1n<<((i-1n)<<1n)) ), newsquare); //compute and save new square, then return and add to square
r = r ^ test; //increase root, using fast XOR
if(square==n){ //and if this is n
break; //break from cycle
}
else if(square>n){ //else if square is larger
r = r ^ test ; //fast XOR to retrieve r
square -= newsquare; //subtract saved square
}
}
return r; //after all, return square root "r"
//rb = ~log2(10^(N)), N = 1000, https://www.wolframalpha.com/input/?i=log2%2810%5E1000%29 , the same number of iterations
}
console.log(Sqrt(2, 1000, 'Heron' ));
console.log(Sqrt(2, 1000, 'Newton' ));
console.log(SqrtConsecutiveApproximations(2, 1000)); //sqrt(2) with 2000 decimal digits
</script>
Что за ересь тут написана?
правитьС каких это пор знак радикала стал означать т.н. алгебраический корень?
- Ересь пропагандирует богопротивная Математическая энциклопедия, том 4, стр. 802:
Радикал — математический знак , к-рым обозначают извлечение корня, т. е. решение двучленного алгебраич. уравнения вида . Под символом подразумевается один из корней этого уравнения.
- Об арифметическом корне см. Арифметический корень. Ещё вопросы есть? LGB (обс.) 10:16, 8 сентября 2019 (UTC)
- В отрывке из энциклопедии написано, что обозначается один из корней, а не все корни. Запись можно считать безграмотной. Взгляните хотя бы на англ вариант статьи. По-моему выносить крайне редкое обозначение, которое неудобно из-за его неоднозначности ( - получается множество, а вовсе не число) как основное - крайне странно. И статья вроде как не называется "алгебраический корень", а называется просто квадратный корень.