بدست آوردن جذر عدد به کمک رابطه نيوتن رافسون

- 1 ماه پیش
توسط مازیار آپدیت شد
reza_yki ( 2135 تجربه )
1 ماه پیش

سلام
دوستان ممنون میشم کمکم کنید و این مسئله رو راهنماییم کنید

برنامه اي بنويسيد كه عدد مثبت A را خوانده و جذر آنرا از رابطه "نيوتن رافسون" تا زمانيكه قدر مطلق تفاضل دو ريشه متوالي آن عدد، كوچكتر از 0/0001 شود، محاسبه و نتيجه نهائي را چاپ كند.
و باید از رابطه زیر استفاده کنم:
http://s3.picofile.com/file/8363775818/1.png
من کدی پیدا کردم ولی متوجهش نشدم :(

public static float Compute(float Number)
{
    // define variable sqrRoot to hold the approximate square root
float sqrRoot = 0;
// define temporary variable temp to hold prior value of iteration
float temp = 0;
// divide variable num by 2 to start the iterative process
    // and assign the quotient to temp
temp = Number/2;

// open a while() loop that continues as long as num >= 0.0
while (Number >= 0.0)    // <<<< you might reconsider this condition: iteration count?
{
        // construct the main iterative statement
sqrRoot = temp - (temp * temp - Number) / (2 * temp);

// open an if block to check if the absolute value of the difference of
        // variables temp and sqrRoot is below a small sentinel value such as 0.0001
        // if this condition is true then break the loop
float value;
value = Math.abs(temp - sqrRoot);

        if (value < .0001)
            // return sqrRoot as the answer
return sqrRoot;  // <<<<< this is the line you needed to change
            // if this condition is not true then assign sqrRoot to temp
else temp = sqrRoot;
} // close the while() loop

return Number;  // <<<<< you will never reach this line
}
میلاد ( 62440 تجربه )
1 ماه پیش
تخصص : طراح رابط کاربری - Front-End

با سلام
اینطور که پیداس بیشتر سوال تون فهم ریاضی میخوادش تا دانش برنامه نویسی. چیز خاصی نداره.

چی رو می خواید متوجه بشید که متوجه نمیشید؟
یک فرمول دارید، اون رو ایجاد کردید. حالا تنها کافیه در آخر چندتا عدد بزارید و امتحانش کنید.
Number هم که معادل با همون عدد A هستش.

reza_yki ( 2135 تجربه )
1 ماه پیش

سلام @milad
بله بیشترش مفاهیم ریاضیه تا برنامه نویسی و مشکل منم همینه /:

  • اولا میخوام بدونم در کل درسته این کده؟ که با ورود عدد 8 نتیجه 2.828427 چاپ میشه
  • این خط کد رو اگه متوجه شدید توضیح بدید برام (sqrRoot = temp - (temp * temp - Number) / (2 * temp))
  • سوال دوم هم این که همین سوال با ریشه سوم محاسبه بشه
    حدودا 80 تا سواله که باید حلش کنم که 20-30 تاش این شکلیه و بیشتر مفاهیم ریاضیه که من مشکل دارم توش
میلاد ( 62440 تجربه )
1 ماه پیش
تخصص : طراح رابط کاربری - Front-End

اولا میخوام بدونم در کل درسته این کده؟ که با ورود عدد ۸ نتیجه ۲.۸۲۸۴۲۷ چاپ میشه

این مثال که کاملا درسته، کافیه با یک ماشین حساب هم کنارش بررسی کنید.
جذر 8 با ماشین حساب دقیقا همین عدد میشه.

میلاد ( 62440 تجربه )
1 ماه پیش
تخصص : طراح رابط کاربری - Front-End
sqrRoot = temp - (temp * temp - Number) / (2 * temp);

این بخش، دقیقا همون بخش ریاضیاتی برای این مسئله هستش.
در اینجا داره جذر عدد مورد نظر رو محاسبه میکنه، اما اینکه این فرمول از کجا اومده، با توجه به داده هایی که شما در ابتدای مسئله بیان کردید، من در نیافتم. مشخصا ً یک سری محاسبات از قبل صورت گرفته که این فرمول رو ایجاد کرده ولی برای من ناپیداست.
اما از کلیتش مشخصه که در اینجا داره یک ساختار تکرارشونده ایجاد میشه. که با حرکت حلقه مقدارش عوض میشه.

محاسبه جذر یک عدد روی کاغذ همینجوری ممکن نیستش، باید درک ریاضی داشته باشیم و فرمول های ریاضی رو بشناسیم.

reza_yki ( 2135 تجربه )
1 ماه پیش

@milad
ممنون
برای ریشه سوم هم اگه اطلاع دارید که چی کار کنم ممنون میشم

میلاد ( 62440 تجربه )
1 ماه پیش
تخصص : طراح رابط کاربری - Front-End

برای فهم ریاضی مطلب فکر کنم بهتره برید سراغ این نشانی:
http://www.cs.utsa.edu/~wagner/CS3343/newton/sqrt.html

مازیار ( 5495 تجربه )
1 ماه پیش

فرمولی که توی لینک زیر دادی گمراه کننده است .
http://s3.picofile.com/file/8363775818/1.png
اگر کسی ریاضی ندونه عدد 1 رو جمع جبری (Xi) (ایکس اندیس i) میخونه در صورتی که این متغیر بیانگر مقدار ایکس و اندیس (n+1) هست .

برای ارسال پاسخ باید وارد سایت شوید