ΠΡΠ»ΠΈ ΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅, Π·Π½Π°ΡΠΈΡ Π»ΠΈ ΡΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠΎΡΠΊΡ? Π§ΡΠ΅Π·ΠΌΠ΅ΡΠ½ΠΎΠ΅ ΡΡΠ΅ΡΠ΄ΠΈΠ΅ Π±ΡΡΡΡΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π² Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΌ.
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
'*************************************************
' Π€ΡΠ½ΠΊΡΠΈΡ: CopyString
'
' ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΠΠΎΠΏΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ΠΈΠ· ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° (source) Π² ΡΠ΅Π»Π΅Π²ΠΎΠΉ (target).
'
' ΠΠ»Π³ΠΎΡΠΈΡΠΌ: ΠΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π»ΠΈΠ½Ρ source, ΠΏΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π² target,
' ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠ°ΡΡΠΈΠ²Π°.
'
' ΠΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅: source β ΠΈΡΡ
ΠΎΠ΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ°
' ΠΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅: target β ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΡΠΎΠΊΠ°
'
' ΠΠ²ΡΠΎΡ: ΠΡΠ°ΠΉΡ Π. ΠΠΎΠ΄Π΅Ρ
' ΠΠ°ΡΠ°: 01.10.2004
' Π’Π΅Π»Π΅ΡΠΎΠ½: (555) 222-2255
' ΠΡΠ±ΠΈΠΌΡΠΉ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ: Pontiac Aztek
'*************************************************
Π’Π°ΠΊΠΈΠ΅ Β«ΠΏΡΠΎΡΡΡΠ½ΠΈΒ» Π½Π΅ Π½Π΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅Π½Π½ΠΎΡΡΠΈ: ΠΎΠ½ΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠ΅ ΠΈ ΡΡΡΠ°ΡΠ΅Π²Π°ΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°ΡΡΡΡ.
Π’ΡΠΈ ΡΡΠΎΠ²Π½Ρ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ΄ Π±Π΅Π· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π²:
r = n / 2;
while (abs(r - (n / r)) > t) {
r = 0.5 * (r + (n / r));
}
System.out.println("r = " + r);
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΠΎΠ½ΡΡΠ΅Π½, Π½ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΊΡΡΡΠΎ Π·Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ±ΡΠΊΠ²Π΅Π½Π½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ.
ΠΠΎΠΏΡΡΠΊΠ° ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ:
// ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΡΡΡΠΎΠ½Π° β Π Π°ΡΡΠΎΠ½Π°
r = n / 2;
while (abs(r - (n / r)) > t) {
r = 0.5 * (r + (n / r));
}
System.out.println("r = " + r);
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΌΡΡΠ» ΡΡΠ΅Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΌ ΠΊΠΎΠ΄ ΠΎΡΡΠ°Π»ΡΡ Π½Π΅Π²Π½ΡΡΠ½ΡΠΌ. ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ β Π²ΡΠ½Π΅ΡΡΠΈ Π»ΠΎΠ³ΠΈΠΊΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Ρ Π³ΠΎΠ²ΠΎΡΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ:
private double approximateSquareRoot(double number, double tolerance) {
double root = number / 2;
while (Math.abs(root - (number / root)) > tolerance) {
root = 0.5 * (root + (number / root));
}
return root;
}
System.out.println("r = " + approximateSquareRoot(number, tolerance));
ΠΠΎΠ΄ ΡΡΠ°Π» ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠΈ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠΉ. ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ Π½Π° ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅.
ΠΠΈΡΠΈΡΠ΅ ΠΊΠΎΠ΄ ΡΠ°ΠΊ, Π±ΡΠ΄ΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ
ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ ΠΎΠΏΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ° ΠΎΡ Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅Π³ΠΎ. ΠΠ°ΡΠΈΠ½Π°ΡΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π΄Π»ΠΈΠ½Π½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡΠΌΠΈ. ΠΠΏΡΡΠ½ΡΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°ΠΌΡ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: ΡΠ°Π·Π±ΠΈΠ²Π°Π΅Ρ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ ΠΈ ΠΏΠΎΠ΄Π±ΠΈΡΠ°Π΅Ρ ΡΠΎΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°.
Π’Π΅ΠΊΡΡ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠ΅ΡΡΡΠ²Π°. ΠΠ΅ΡΠ΅ΡΠΊΠΎ ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π·Π°ΠΏΡΡΡΠ²Π°Π΅Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠΈΠ»ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅.
ΠΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΡΠΉ ΠΎΡΠΈΠ΅Π½ΡΠΈΡ ΠΏΡΠΎΡΡ: Π΄ΠΎΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠ΄ Π΄ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡΡ ΠΎΡΠΏΠ°Π΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ. Π ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ ΡΡΠ°ΠΏΠΎΠ² ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ β Π·Π°ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΈΡ ΠΊΡΠ°ΡΠΊΠΈΠΌ ΠΈ ΡΠΎΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ.