- 1 1. Kuidas arvutada ruutjuure C-s: ülevaade ja põhiline sqrt funktsioon
- 2 2. Põhimõtteline meetod ruutjuurte arvutamiseks
- 3 3. Rakendused: erinevad kasutusjuhtumid ruutjuurte arvutamiseks
- 4 4. Ruutjuurte arvutamine ilma standardraamatukoguta
- 5 5. Ruutjuurte arvutamise eelised ja piirangud
- 6 6. Kokkuvõte
1. Kuidas arvutada ruutjuure C-s: ülevaade ja põhiline sqrt funktsioon
C programmeerimiskeeles on standardraamatukogus sqrt funktsioon, mis võimaldab hõlpsasti arvutada arvulise väärtuse ruutjuure. See võimaldab tõhusat ruutjuurte arvutamist, mis muidu võib muutuda keerukaks. Selles artiklis õpid, kuidas kasutada sqrt funktsiooni, uurid erinevaid rakendussituatsioone ning näed isegi, kuidas rakendada oma algoritmi – muutes selle artikli kasulikuks nii algajatele kui ka edasijõudnudatele programmeerijatele.
2. Põhimõtteline meetod ruutjuurte arvutamiseks
Alustuseks selgitame C-s ruutjuurte arvutamise põhimõttelist meetodit.
Ülevaade ja kasutamine sqrt funktsiooniga
sqrt funktsioon on üks math.h teegis pakutavatest funktsioonidest ning arvutab suvalise arvulise väärtuse ruutjuure. Funktsiooni prototüüp on järgmine:
#include <math.h>
double sqrt(double x);
See funktsioon tagastab argumendi x ruutjuure, mis talle antakse.
Põhiline kasutusnäide
Siin on programm, mis arvutab ja prindib kasutaja sisestatud arvu ruutjuure.
#include <stdio.h>
#include <math.h>
int main() {
double num;
printf("Enter a number: ");
scanf("%lf", &num);
if (num < 0) {
printf("Cannot compute square root of a negative number.n");
} else {
printf("Square root: %lfn", sqrt(num));
}
return 0;
}
Selles programmis sisestab kasutaja arvu, seejärel arvutab programm selle ruutjuure ja kuvab selle. Kui sisestatakse negatiivne arv, kuvatakse veateade ja programm lõpetab töö.
Negatiivsete arvude käsitlemine ja olulised märkused
sqrt funktsioon ei ole defineeritud negatiivsete argumentide jaoks, seega negatiivse arvu edastamine põhjustab vea. Seetõttu tuleb lisada loogika, mis kontrollib, kas sisendväärtus on negatiivne. Kui on vaja arvutada negatiivsete arvude (kompleksarvude) ruutjuuri, tuleb kasutada csqrt funktsiooni complex.h teegist.
3. Rakendused: erinevad kasutusjuhtumid ruutjuurte arvutamiseks
sqrt funktsiooni kasutatakse sageli numbrilise analüüsi ja teadusliku arvutamise valdkondades. Siin tutvustame esinduslikke rakenduse näiteid.
Eukleidilise kauguse arvutamine
Eukleidiline kaugus tähistab kahe punkti vahelist kaugust 2‑D või 3‑D ruumis ning seda arvutatakse ruutjuure abil. Näiteks 2‑D tasandil kahe punkti (x1, y1) ja (x2, y2) puhul arvutatakse eukleidiline kaugus järgmiselt:
#include <stdio.h>
#include <math.h>
int main() {
double x1 = 1.0, y1 = 2.0;
double x2 = 4.0, y2 = 6.0;
double distance = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
printf("Euclidean distance: %lfn", distance);
return 0;
}
Kasutus graafikaprogrammeerimises
sqrt funktsiooni kasutatakse ka vektori pikkuse arvutamisel. Näiteks 2‑D vektori (vx, vy) puhul arvutatakse selle pikkus järgmiselt:
#include <stdio.h>
#include <math.h>
int main() {
double vx = 3.0, vy = 4.0;
double length = sqrt(vx * vx + vy * vy);
printf("Vector length: %lfn", length);
return 0;
}
Kompleksarvude ruutjuured
Kuna standardne sqrt funktsioon ei suuda arvutada kompleksarvude ruutjuuri, tuleb kasutada csqrt funktsiooni complex.h teegist. Siin on koodinäide, mis arvutab kompleksarvu ruutjuure:
#include <stdio.h>
#include <complex.h>
int main() {
double complex z = -4.0 + 0.0 * I;
double complex result = csqrt(z);
printf("Square root: %.2f + %.2fin", creal(result), cimag(result));
return 0;
}
4. Ruutjuurte arvutamine ilma standardraamatukoguta
Samuti on võimalik arvutada ruutjuureid ilma standardse sqrt funktsiooni kasutamata, rakendades oma algoritmi. Siin tutvustame rakendusnäidet Newtoni meetodi abil.
Kohandatud teostus Newtoni meetodi abil
Newton’s method (the Newton–Raphson method) is a well-known technique in numerical computing to find roots including square roots. Below is an example of computing a square root using Newton’s method.
#include <stdio.h>
double mySqrt(double num) {
double x = num;
double dx;
if (num == 0) return 0;
while (1) {
dx = (x * x - num) / (2.0 * x);
if (fabs(dx) < 0.00001) break;
x -= dx;
}
return x;
}
int main() {
double num = 9.0;
printf("Square root: %lfn", mySqrt(num));
return 0;
}
This code computes the square root of a given number using Newton’s method. It repeats the loop until the condition is met and gradually approaches the solution.

5. Ruutjuurte arvutamise eelised ja piirangud
sqrt funktsiooni kasutamine pakub palju eeliseid, kuid peate mõistma ka mõningaid piiranguid.
sqrt funktsiooni eelised
- Standardteegist : täiendavat paigaldamist ei nõuta, keskkonnast sõltumatu.
- Efektiivsus : optimeeritud numbrilisele arvutamisele, seega on töötlemiskiirus kiire.
- Täpsus : täpsus on garanteeritud ujukomaarvude arvutustes.
sqrt funktsiooni piirangud ja leevendused
- Negatiivsete arvudega piirang : negatiivse arvu ruutjuure arvutamine tekitab vea. Kui vajate kompleksarvude ruutjuuri, kasutage
csqrtfunktsiooni failistcomplex.h. - Ujukomaarvude täpsus : väga väikeste või suurte väärtuste arvutamisel võivad tekkida vead. Sellistel juhtudel tuleb välja töötada algoritmilised kohandused.
6. Kokkuvõte
Selles artiklis käsitlesime, kuidas arvutada ruutjuure C-s, alustades standardteegi sqrt funktsioonist, seejärel tutvustasime rakendusi nagu eukleidiline kaugus ja graafikaprogrammeerimine. Selgitasime ka kohandatud ruutjuure arvutust Newtoni meetodiga, hõlmates seeläbi mitmesuguseid meetodeid ja nende rakendusi.
Ruutjuure arvutamine on üks põhilisi numbrilise töötlemise ülesandeid C-s, kuid selle rakenduste ulatus on väga lai.



