یافتن ریشه سوم یک عدد — به زبان ساده
در آموزشهای قبلی مجله فرادرس، با روش محاسبه ریشه دوم یک عدد آشنا شدیم. در این آموزش، با نحوه یافتن ریشه سوم یک عدد آشنا میشویم. همچنین، برنامه مربوط به آن را در زبانهای برنامهنویسی مختلف را ارائه خواهیم کرد.
الگوریتم یافتن ریشه سوم یک عدد با جستوجوی باینری
برای نوشتن برنامه یافتن ریشه سوم یک عدد، میتوانیم از جستوجوی باینری استفاده کنیم. ابتدا خطای $$e$$ را تعریف میکنیم.
برای مثال، مقدار خطا را $$10^ { - 7 } $$ قرار میدهیم. گامهای اصلی الگوریتم محاسبه ریشه سوم عدد $$n$$ به صورت زیر است:
- شروع را برابر با صفر (start=0) و پایان را برابر با $$n$$ (end = n) قرار میدهیم.
- میانگین mid = (start + end)/2 را محاسبه میکنیم.
- قدر مطلق n – mid*mid*mid را بررسی میکنیم که کوچکتر از e باشد. اگر شرط n – mid*mid*mid) < e) برقرار باشد، آنگاه جواب همان mid خواهد بود.
- اگر mid*mid*mid)>n) باشد، آنگاه این تساوی end = mid را قرار میدهیم.
- اگر mid*mid*mid)<n) باشد، آنگاه این تساوی start = mid را قرار میدهیم.
مثال
به عنوان یک مثال ساده، فرض کنید میخواهیم ریشه سوم عدد 10 را به دست آوریم. با قرار دادن start = 0 و end = 10، مقدار mid = 5 به دست میآید. قدر مطلق خطا برابر با 10 - ۱۲۵ = ۱۱۵ است. با توجه به اینکه این مقدار بیشتر از خطای قابل قبول (مثلاً 0٫1) است و mid*mid*mid)>n) تساوی end = mid را قرار میدهیم. اکنون end = 5 و در نتیجه mid = 2٫۵ است. قدر مطلق خطا در این حالت ۱۰ - ۱۵٫۶۳۵ = ۵٫۶۳۵ است و از آنجایی که mid*mid*mid)>n) است، تساوی end = ۲٫۵ را قرار میدهیم. اکنون start = 0 و end = ۲٫۵ است. همینگونه، محاسبات را ادامه میدهیم تا به مقدار خطای مطلوب برسیم.
کدهای مربوط به این الگوریتم، در زبانهای برنامهنویسی مختلف، در ادامه ارائه شده است. هدف از این برنامهها، این است که برای مثال، ورودی و خروجیهای زیر را داشته باشیم:
Input: n = 3 Output: Cubic Root is 1.442250 Input: n = 8 Output: Cubic Root is 2.000000
برنامه یافتن ریشه سوم یک عدد در ++C
1// C++ program to find cubic root of a number
2// using Binary Search
3#include <bits/stdc++.h>
4using namespace std;
5
6// Returns the absolute value of n-mid*mid*mid
7double diff(double n,double mid)
8{
9 if (n > (mid*mid*mid))
10 return (n-(mid*mid*mid));
11 else
12 return ((mid*mid*mid) - n);
13}
14
15// Returns cube root of a no n
16double cubicRoot(double n)
17{
18 // Set start and end for binary search
19 double start = 0, end = n;
20
21 // Set precision
22 double e = 0.0000001;
23
24 while (true)
25 {
26 double mid = (start + end)/2;
27 double error = diff(n, mid);
28
29 // If error is less than e then mid is
30 // our answer so return mid
31 if (error <= e)
32 return mid;
33
34 // If mid*mid*mid is greater than n set
35 // end = mid
36 if ((mid*mid*mid) > n)
37 end = mid;
38
39 // If mid*mid*mid is less than n set
40 // start = mid
41 else
42 start = mid;
43 }
44}
45
46// Driver code
47int main()
48{
49 double n = 3;
50 printf("Cubic root of %lf is %lf\n",
51 n, cubicRoot(n));
52 return 0;
53}
برنامه یافتن ریشه سوم یک عدد در Java
1// Java program to find cubic root of a number
2// using Binary Search
3import java.io.*;
4
5class GFG
6{
7 // Returns the absolute value of n-mid*mid*mid
8 static double diff(double n,double mid)
9 {
10 if (n > (mid*mid*mid))
11 return (n-(mid*mid*mid));
12 else
13 return ((mid*mid*mid) - n);
14 }
15
16 // Returns cube root of a no n
17 static double cubicRoot(double n)
18 {
19 // Set start and end for binary search
20 double start = 0, end = n;
21
22 // Set precision
23 double e = 0.0000001;
24
25 while (true)
26 {
27 double mid = (start + end)/2;
28 double error = diff(n, mid);
29
30 // If error is less than e then mid is
31 // our answer so return mid
32 if (error <= e)
33 return mid;
34
35 // If mid*mid*mid is greater than n set
36 // end = mid
37 if ((mid*mid*mid) > n)
38 end = mid;
39
40 // If mid*mid*mid is less than n set
41 // start = mid
42 else
43 start = mid;
44 }
45 }
46
47 // Driver program to test above function
48 public static void main (String[] args)
49 {
50 double n = 3;
51 System.out.println("Cube root of "+n+" is "+cubicRoot(n));
52 }
53}
54
55// This code is contributed by Pramod Kumar
برنامه یافتن ریشه سوم یک عدد در Python
1# Python 3 program to find cubic root
2# of a number using Binary Search
3
4# Returns the absolute value of
5# n-mid*mid*mid
6def diff(n, mid) :
7 if (n > (mid * mid * mid)) :
8 return (n - (mid * mid * mid))
9 else :
10 return ((mid * mid * mid) - n)
11
12# Returns cube root of a no n
13def cubicRoot(n) :
14
15 # Set start and end for binary
16 # search
17 start = 0
18 end = n
19
20 # Set precision
21 e = 0.0000001
22 while (True) :
23
24 mid = (start + end) / 2
25 error = diff(n, mid)
26
27 # If error is less than e
28 # then mid is our answer
29 # so return mid
30 if (error <= e) :
31 return mid
32
33 # If mid*mid*mid is greater
34 # than n set end = mid
35 if ((mid * mid * mid) > n) :
36 end = mid
37
38 # If mid*mid*mid is less
39 # than n set start = mid
40 else :
41 start = mid
42
43# Driver code
44n = 3
45print("Cubic root of", n, "is",
46 round(cubicRoot(n),6))
47
48
49# This code is contributed by Nikita Tiwari.
برنامه یافتن ریشه سوم یک عدد #C
1// C# program to find cubic root
2// of a number using Binary Search
3using System;
4
5class GFG {
6
7 // Returns the absolute value
8 // of n - mid * mid * mid
9 static double diff(double n, double mid)
10 {
11 if (n > (mid * mid * mid))
12 return (n-(mid * mid * mid));
13 else
14 return ((mid * mid * mid) - n);
15 }
16
17 // Returns cube root of a no. n
18 static double cubicRoot(double n)
19 {
20
21 // Set start and end for
22 // binary search
23 double start = 0, end = n;
24
25 // Set precision
26 double e = 0.0000001;
27
28 while (true)
29 {
30 double mid = (start + end) / 2;
31 double error = diff(n, mid);
32
33 // If error is less than e then
34 // mid is our answer so return mid
35 if (error <= e)
36 return mid;
37
38 // If mid * mid * mid is greater
39 // than n set end = mid
40 if ((mid * mid * mid) > n)
41 end = mid;
42
43 // If mid*mid*mid is less than
44 // n set start = mid
45 else
46 start = mid;
47 }
48 }
49
50 // Driver Code
51 public static void Main ()
52 {
53 double n = 3;
54 Console.Write("Cube root of "+ n
55 + " is "+cubicRoot(n));
56 }
57}
58
59// This code is contributed by nitin mittal.
برنامه یافتن ریشه سوم یک عدد در PHP
1<?php
2// PHP program to find cubic root
3// of a number using Binary Search
4
5// Returns the absolute value
6// of n - mid * mid * mid
7function diff($n,$mid)
8{
9 if ($n > ($mid * $mid * $mid))
10 return ($n - ($mid *
11 $mid * $mid));
12 else
13 return (($mid * $mid *
14 $mid) - $n);
15}
16
17// Returns cube root of a no n
18function cubicRoot($n)
19{
20
21 // Set start and end
22 // for binary search
23 $start = 0;
24 $end = $n;
25
26 // Set precision
27 $e = 0.0000001;
28
29 while (true)
30 {
31 $mid = (($start + $end)/2);
32 $error = diff($n, $mid);
33
34 // If error is less
35 // than e then mid is
36 // our answer so return mid
37 if ($error <= $e)
38 return $mid;
39
40 // If mid*mid*mid is
41 // greater than n set
42 // end = mid
43 if (($mid * $mid * $mid) > $n)
44 $end = $mid;
45
46 // If mid*mid*mid is
47 // less than n set
48 // start = mid
49 else
50 $start = $mid;
51 }
52}
53
54 // Driver Code
55 $n = 3;
56 echo("Cubic root of $n is ");
57 echo(cubicRoot($n));
58
59// This code is contributed by nitin mittal.
60?>
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای محاسبات عددی
- آموزش محاسبات عددی با MATLAB
- مجموعه آموزشهای دروس ریاضیات
- آموزش ریاضی پایه دانشگاهی
- روش نیوتن — به زبان ساده
- دستگاه معادلات خطی — به زبان ساده
- روش ژاکوبی — به زبان ساده
^^
def rooting_fringe_n(num, fringe):
return num ** (fringe ** -1)
rooting_fringe_n(8, 3)
<<<2.0