View Full Version : محاسبه جذر یک عدد اعشاری
eamaster
پنج شنبه 22 اسفند 1392, 17:24 عصر
سلام خدمت اساتید گرامی
محاسبه ی جذر یک عدد double بدون استفاده از کتابخانه Math.abs به چه صورته؟
لطفا راهنمایی کنید
eamaster
پنج شنبه 22 اسفند 1392, 21:16 عصر
کسی نبود کمک کنهههههههه؟؟؟؟؟؟؟/
sajjad4563
پنج شنبه 22 اسفند 1392, 22:27 عصر
/*
* Returns the absolute value of a {@code float} value.
* If the argument is not negative, the argument is returned.
* If the argument is negative, the negation of the argument is returned.
* Special cases:
* <ul><li>If the argument is positive zero or negative zero, the
* result is positive zero.
* <li>If the argument is infinite, the result is positive infinity.
* <li>If the argument is NaN, the result is NaN.</ul>
* In other words, the result is the same as the value of the expression:
* <p>{@code Float.intBitsToFloat(0x7fffffff & Float.floatToIntBits(a))}
*
* @param a the argument whose absolute value is to be determined
* @return the absolute value of the argument.
*/
public static float abs(float a) {
return (a <= 0.0F) ? 0.0F - a : a;
}
vahid-p
دوشنبه 04 فروردین 1393, 15:37 عصر
شما جذر میخواین یا قدر مطلق؟ چون جذر که از Math.sqrt میتونی استفاده کنی ( برای غیر از ریشه دوم از Math.pow استفاده میشه ). کدی که دوست عزیز sajjad نوشتن کد قدر مطلق هست.
اما برای جذر گرفتن، روش های مختلفی وجود داره. از روش نیوتون بگیر تا تخمین متوالی و سری و روش های مختلف دیگه که شاید کارایی زیادی نداشته باشند.
اما من روش ساده ای رو پیشنهاد میکنم که هم کارایی بالایی داره و هم دفت خیلی خوبی. همچنین با افزایش عدد n یعنی تعداد تکرار، دقت افزایش پیدا میکنه. ولی من فکر میکنم n=10 دقت مطلوبی رو بهت میده که با ماشین حساب ویندوز چک کنی تقریبا جوابها یکی است.
در این روش یک t داریم که هر بار با نصف خودش و عدد زیر رادیکال تقسیم بر t جایگزین میشه و n بار اینکار رو تکرار میکنیم.
مخلص کلام یعنی :
public static double sqrt(double a){
int n=10;
double t=1;
while(n>0){
t=0.5*(t+(a/t));
n--;
}
return t;
}
همچنین میتونید n رو به صورت آرگومان بگیرید، که دیگه تعیین n هم به انتخاب خود کاربر باشه. این دلخواه است.
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.