محدودیتها و خطا در تابع sqrt()
اگر هنگام محاسبه رادیکال در سی پلاس پلاس، عدد منفی را وارد تابع sqrt() نمایید، برنامه دچار domain error میشود و مقدار NaN (Not a Number) را نشان خواهد داد. در برخی پیادهسازیها نیز ممکن است errno به EDOM تنظیم شده و تابع مقدار 0 را بازگرداند. مقدار دقیق رفتار تابع به پیادهسازی کامپایلر وابسته خواهد بود. ازاینرو توصیه میکنیم قبل از استفاده از تابع sqrt()، بررسی کنید که ورودی منفی نباشد. کدنویسی این تابع عبارتند از:
if (num < 0) {
// پیغام خطا یا استفاده از اعداد مختلط
} else {
double r = sqrt(num);
}
آموزش جذر گرفتن با استفاده از sqrt()
یکی از کاربردهای رایج تابعsqrt() در محاسبات هندسی و هنگام یافتن طول وتر با استفاده از قضیه فیثاغورث است.
c = √(a² + b²)
برای این منظور میتوانید از کدنویسی زیر استفاده نمایید:
double a = 3.0, b = 4.0;
double c = sqrt(a*a + b*b); // خروجی: 5.0
مثال دیگر: محاسبه جذر اعداد مختلف در یک برنامه ساده با استفاده از تابع sqrt() است:
cout << sqrt(16) << endl;
cout << sqrt(100.5) << endl;
خروجیها: 4 و مقدار تقریبی برای 100.5
روش باینری یا نیوتن برای محاسبه رادیکال در سی پلاس پلاس
برخی مواقع که تابع cmath در دسترس نیست یا میخواهید الگوریتم را دستی پیادهسازی کنید، میتوانید از روش باینری (Binary Search) استفاده نمایید. کدنویسی این روش به شرح زیر خواهد بود:
double root(double n) {
double lo = min(1.0, n), hi = max(1.0, n), mid;
for (int i = 0; i < 100; ++i) {
mid = (lo + hi) / 2;
if (mid*mid > n) hi = mid;
else lo = mid;
}
return mid;
}
استفاده از جذر در مجموعههای برداری (valarray)
کتابخانه
valarray
valarray
منبع: وبسایت anjamprozhe
محدودیتها و خطا در تابع sqrt()
اگر هنگام محاسبه رادیکال در سی پلاس پلاس، عدد منفی را وارد تابع sqrt() نمایید، برنامه دچار domain error میشود و مقدار NaN (Not a Number) را نشان خواهد داد. در برخی پیادهسازیها نیز ممکن است errno به EDOM تنظیم شده و تابع مقدار 0 را بازگرداند. مقدار دقیق رفتار تابع به پیادهسازی کامپایلر وابسته خواهد بود. ازاینرو توصیه میکنیم قبل از استفاده از تابع sqrt()، بررسی کنید که ورودی منفی نباشد. کدنویسی این تابع عبارتند از:
if (num < 0) {
// پیغام خطا یا استفاده از اعداد مختلط
} else {
double r = sqrt(num);
}
آموزش جذر گرفتن با استفاده از sqrt()
یکی از کاربردهای رایج تابعsqrt() در محاسبات هندسی و هنگام یافتن طول وتر با استفاده از قضیه فیثاغورث است.
c = √(a² + b²)
برای این منظور میتوانید از کدنویسی زیر استفاده نمایید:
double a = 3.0, b = 4.0;
double c = sqrt(a*a + b*b); // خروجی: 5.0
مثال دیگر: محاسبه جذر اعداد مختلف در یک برنامه ساده با استفاده از تابع sqrt() است:
cout << sqrt(16) << endl;
cout << sqrt(100.5) << endl;
خروجیها: 4 و مقدار تقریبی برای 100.5
روش باینری یا نیوتن برای محاسبه رادیکال در سی پلاس پلاس
برخی مواقع که تابع cmath در دسترس نیست یا میخواهید الگوریتم را دستی پیادهسازی کنید، میتوانید از روش باینری (Binary Search) استفاده نمایید. کدنویسی این روش به شرح زیر خواهد بود:
double root(double n) {
double lo = min(1.0, n), hi = max(1.0, n), mid;
for (int i = 0; i < 100; ++i) {
mid = (lo + hi) / 2;
if (mid*mid > n) hi = mid;
else lo = mid;
}
return mid;
}
استفاده از جذر در مجموعههای برداری (valarray)
کتابخانه
valarray
valarray
منبع: وبسایت anjamprozhe

بهترین نسخه سالیدورک کدام است | مقایسه جامع و دقیق نسخه ها