1. Kuidas C-keeles ruutjuurt leida: ülevaade ja põhifunktsioon „sqrt“
C-keeles on standardteegis olemas sqrt
-funktsioon, mis võimaldab hõlpsalt arvutada arvu ruutjuurt. See võimaldab tõhusalt leida ruutjuure, mis muidu võib olla keeruline arvutus. Selles artiklis selgitame üksikasjalikult sqrt
-funktsiooni põhilist kasutamist ja selle rakendusstsenaariume. Lisaks tutvustame ka ruutjuure leidmist omaloodud algoritmide abil, mistõttu on see kasulik nii algajatele kui ka edasijõudnutele.
2. Ruutjuure leidmise põhilised meetodid
Esiteks selgitame, kuidas C-keeles ruutjuurt arvutada põhilisel viisil.
sqrt-funktsiooni ülevaade ja kasutamine
sqrt
-funktsioon kuulub teeki math.h
ja võimaldab arvutada suvalise arvu ruutjuure. Funktsiooni vorm on järgmine:
#include <math.h>
double sqrt(double x);
See funktsioon tagastab argumendina antud x
ruutjuure.
Põhiline näide kasutamisest
Alljärgnevalt on toodud programm, mis arvutab ja kuvab kasutaja sisestatud arvu ruutjuure.
#include <stdio.h>
#include <math.h>
int main() {
double num;
printf("Sisesta arv: ");
scanf("%lf", &num);
if (num < 0) {
printf("Negatiivse arvu ruutjuurt ei saa arvutada.\n");
} else {
printf("Ruutjuur: %lf\n", sqrt(num));
}
return 0;
}
Selles programmis arvutatakse ja kuvatakse kasutaja sisestatud arvu ruutjuur. Kui sisestatakse negatiivne arv, kuvatakse veateade ja programm lõpetatakse.
Negatiivsete arvude käsitlemine ja tähelepanekud
Kuna sqrt
-funktsioon ei ole määratletud negatiivsete arvude jaoks, tekib sellise argumendi korral viga. Seetõttu tuleb enne arvutamist kontrollida, kas sisend ei ole negatiivne. Kui on vaja arvutada negatiivse arvu ruutjuurt, tuleb kasutada teegi complex.h
funktsiooni csqrt
, mis töötab kompleksarvudega.
3. Ruutjuure arvutamise erinevad kasutusviisid
sqrt
-funktsiooni kasutatakse sageli igapäevases andmeanalüüsis ja teaduslikes arvutustes. Järgnevalt mõned tüüpilised näited.
Eukleidese kauguse arvutamine
Eukleidese kaugus näitab kahe punkti vahelist kaugust 2D- või 3D-ruumis ning see arvutatakse ruutjuure abil. Näiteks kahe punkti (x1, y1)
ja (x2, y2)
vaheline kaugus 2D-tasandil leitakse 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("Eukleidese kaugus: %lf\n", distance);
return 0;
}
Kasutamine graafikaprogrammeerimises
Ka vektori pikkuse arvutamisel kasutatakse sqrt
-funktsiooni. Näiteks 2D-vektori (vx, vy)
pikkus leitakse 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("Vektori pikkus: %lf\n", length);
return 0;
}
Kompleksarvu ruutjuur
Kompleksarvu ruutjuurt ei saa arvutada tavalise sqrt
-funktsiooniga, selleks tuleb kasutada teegi complex.h
funktsiooni csqrt
. Näide:
#include <stdio.h>
#include <complex.h>
int main() {
double complex z = -4.0 + 0.0 * I;
double complex result = csqrt(z);
printf("Ruutjuur: %.2f + %.2fi\n", creal(result), cimag(result));
return 0;
}
4. Ruutjuure arvutamine ilma standardteegita
Ruutjuurt on võimalik arvutada ka ilma sqrt
-funktsiooni kasutamata, näiteks omaloodud algoritmiga. Järgnevalt näide Newtoni meetodi kasutamisest.
Newtoni meetodi oma teostus
Newtoni (Newton–Raphsoni) meetod on tuntud numbriline meetod ruutjuure leidmiseks. Näide:
#include <stdio.h>
double mySqrt(double num) {
double x = num;
double dx;
while (1) {
dx = (x * x - num) / (2.0 * x);
if (dx * dx < 0.00001) break;
x -= dx;
}
return x;
}
int main() {
double num = 9.0;
printf("Ruutjuur: %lf\n", mySqrt(num));
return 0;
}
See kood arvutab antud arvu ruutjuure Newtoni meetodi abil, korrates tsüklit kuni lahendus on piisavalt täpne.

5. Ruutjuure arvutamise eelised ja piirangud
sqrt
-funktsioonil on palju eeliseid, kuid on ka piiranguid, mida tasub teada.
sqrt-funktsiooni eelised
- Standardteegi osa: Ei vaja lisainstallatsiooni ja ei sõltu keskkonnast.
- Tõhusus: Optimeeritud numbriliste arvutuste jaoks, seega kiire.
- Täpsus: Tagab täpsuse ujukoma-arvutustes.
sqrt-funktsiooni piirangud ja lahendused
- Negatiivsete arvude piirang: Negatiivse arvu ruutjuure arvutamisel tekib viga. Kui on vaja leida kompleksarvu ruutjuur, kasuta
complex.h
teegicsqrt
-funktsiooni. - Ujukoma täpsus: Väga väikeste või suurte väärtuste puhul võib tekkida arvutusviga. Sel juhul on vaja algoritmilisi täiustusi.
6. Kokkuvõte
Selles artiklis käsitlesime C-keeles ruutjuure leidmist, alustades standardteegi sqrt
-funktsioonist ning tutvustades selle kasutusnäiteid, nagu Eukleidese kaugus ja graafikaprogrammeerimine. Lisaks selgitasime Newtoni meetodi abil ruutjuure leidmist, hõlmates erinevaid tehnikaid ja rakendusi.
Ruutjuure arvutamine on üks C-keele põhialustest numbrilistest töötlustest, kuid selle rakendusvaldkond on väga lai.