در آموزش‌های قبلی مجله فرادرس، با روش محاسبه ریشه دوم یک عدد آشنا شدیم. در این آموزش، با نحوه یافتن ریشه سوم یک عدد آشنا می‌شویم. همچنین، برنامه مربوط به آن را در زبان‌های برنامه‌نویسی مختلف را ارائه خواهیم کرد.

الگوریتم یافتن ریشه سوم یک عدد با جست‌وجوی باینری

برای نوشتن برنامه یافتن ریشه سوم یک عدد، می‌توانیم از جست‌وجوی باینری استفاده کنیم. ابتدا خطای $$e$$ را تعریف می‌کنیم. برای مثال، مقدار خطا را $$10^ { – 7 } $$ قرار می‌دهیم. گام‌های اصلی الگوریتم محاسبه ریشه سوم عدد $$n$$ به صورت زیر است:

  1. شروع را برابر با صفر (start=0) و پایان را برابر با $$n$$ (end = n) قرار می‌دهیم.
  2. میانگین mid = (start + end)/2 را محاسبه می‌کنیم.
  3. قدر مطلق n – mid*mid*mid را بررسی می‌کنیم که کوچک‌تر از e باشد. اگر شرط n – mid*mid*mid) < e) برقرار باشد، آنگاه جواب همان mid خواهد بود.
  4. اگر mid*mid*mid)>n) باشد، آنگاه این تساوی end = mid را قرار می‌دهیم.
  5. اگر 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

// C++ program to find cubic root of a number 
// using Binary Search 
#include <bits/stdc++.h> 
using namespace std; 

// Returns the absolute value of n-mid*mid*mid 
double diff(double n,double mid) 
{ 
	if (n > (mid*mid*mid)) 
		return (n-(mid*mid*mid)); 
	else
		return ((mid*mid*mid) - n); 
} 

// Returns cube root of a no n 
double cubicRoot(double n) 
{ 
	// Set start and end for binary search 
	double start = 0, end = n; 

	// Set precision 
	double e = 0.0000001; 

	while (true) 
	{ 
		double mid = (start + end)/2; 
		double error = diff(n, mid); 

		// If error is less than e then mid is 
		// our answer so return mid 
		if (error <= e) 
			return mid; 

		// If mid*mid*mid is greater than n set 
		// end = mid 
		if ((mid*mid*mid) > n) 
			end = mid; 

		// If mid*mid*mid is less than n set 
		// start = mid 
		else
			start = mid; 
	} 
} 

// Driver code 
int main() 
{ 
	double n = 3; 
	printf("Cubic root of %lf is %lf\n", 
		n, cubicRoot(n)); 
	return 0; 
}

برنامه یافتن ریشه سوم یک عدد در Java

// Java program to find cubic root of a number 
// using Binary Search 
import java.io.*; 

class GFG 
{ 
	// Returns the absolute value of n-mid*mid*mid 
	static double diff(double n,double mid) 
	{ 
		if (n > (mid*mid*mid)) 
			return (n-(mid*mid*mid)); 
		else
			return ((mid*mid*mid) - n); 
	} 
	
	// Returns cube root of a no n 
	static double cubicRoot(double n) 
	{ 
		// Set start and end for binary search 
		double start = 0, end = n; 

		// Set precision 
		double e = 0.0000001; 

		while (true) 
		{ 
			double mid = (start + end)/2; 
			double error = diff(n, mid); 

			// If error is less than e then mid is 
			// our answer so return mid 
			if (error <= e) 
				return mid; 

			// If mid*mid*mid is greater than n set 
			// end = mid 
			if ((mid*mid*mid) > n) 
				end = mid; 

			// If mid*mid*mid is less than n set 
			// start = mid 
			else
				start = mid; 
		} 
	} 
	
	// Driver program to test above function 
	public static void main (String[] args) 
	{ 
		double n = 3; 
		System.out.println("Cube root of "+n+" is "+cubicRoot(n)); 
	} 
} 

// This code is contributed by Pramod Kumar

برنامه یافتن ریشه سوم یک عدد در Python

# Python 3 program to find cubic root 
# of a number using Binary Search 

# Returns the absolute value of 
# n-mid*mid*mid 
def diff(n, mid) : 
	if (n > (mid * mid * mid)) : 
		return (n - (mid * mid * mid)) 
	else : 
		return ((mid * mid * mid) - n) 
		
# Returns cube root of a no n 
def cubicRoot(n) : 
	
	# Set start and end for binary 
	# search 
	start = 0
	end = n 
	
	# Set precision 
	e = 0.0000001
	while (True) : 
		
		mid = (start + end) / 2
		error = diff(n, mid) 

		# If error is less than e 
		# then mid is our answer 
		# so return mid 
		if (error <= e) : 
			return mid 
			
		# If mid*mid*mid is greater 
		# than n set end = mid 
		if ((mid * mid * mid) > n) : 
			end = mid 
			
		# If mid*mid*mid is less 
		# than n set start = mid 
		else : 
			start = mid 
			
# Driver code 
n = 3
print("Cubic root of", n, "is", 
	round(cubicRoot(n),6)) 


# This code is contributed by Nikita Tiwari.

برنامه یافتن ریشه سوم یک عدد #C

// C# program to find cubic root 
// of a number using Binary Search 
using System; 

class GFG { 
	
	// Returns the absolute value 
	// of n - mid * mid * mid 
	static double diff(double n, double mid) 
	{ 
		if (n > (mid * mid * mid)) 
			return (n-(mid * mid * mid)); 
		else
			return ((mid * mid * mid) - n); 
	} 
	
	// Returns cube root of a no. n 
	static double cubicRoot(double n) 
	{ 
		
		// Set start and end for 
		// binary search 
		double start = 0, end = n; 

		// Set precision 
		double e = 0.0000001; 

		while (true) 
		{ 
			double mid = (start + end) / 2; 
			double error = diff(n, mid); 

			// If error is less than e then 
			// mid is our answer so return mid 
			if (error <= e) 
				return mid; 

			// If mid * mid * mid is greater 
			// than n set end = mid 
			if ((mid * mid * mid) > n) 
				end = mid; 

			// If mid*mid*mid is less than 
			// n set start = mid 
			else
				start = mid; 
		} 
	} 
	
	// Driver Code 
	public static void Main () 
	{ 
		double n = 3; 
		Console.Write("Cube root of "+ n 
					+ " is "+cubicRoot(n)); 
	} 
} 

// This code is contributed by nitin mittal.

برنامه یافتن ریشه سوم یک عدد در PHP

<?php 
// PHP program to find cubic root 
// of a number using Binary Search 

// Returns the absolute value 
// of n - mid * mid * mid 
function diff($n,$mid) 
{ 
	if ($n > ($mid * $mid * $mid)) 
		return ($n - ($mid * 
				$mid * $mid)); 
	else
		return (($mid * $mid * 
				$mid) - $n); 
} 

// Returns cube root of a no n 
function cubicRoot($n) 
{ 
	
	// Set start and end 
	// for binary search 
	$start = 0; 
	$end = $n; 

	// Set precision 
	$e = 0.0000001; 

	while (true) 
	{ 
		$mid = (($start + $end)/2); 
		$error = diff($n, $mid); 

		// If error is less 
		// than e then mid is 
		// our answer so return mid 
		if ($error <= $e) 
			return $mid; 

		// If mid*mid*mid is 
		// greater than n set 
		// end = mid 
		if (($mid * $mid * $mid) > $n) 
			$end = $mid; 

		// If mid*mid*mid is 
		// less than n set 
		// start = mid 
		else
			$start = $mid; 
	} 
} 

	// Driver Code 
	$n = 3; 
	echo("Cubic root of $n is "); 
	echo(cubicRoot($n)); 

// This code is contributed by nitin mittal. 
?>

اگر این مطلب برایتان مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای 30 نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

سید سراج حمیدی دانش‌آموخته مهندسی برق است و به ریاضیات و زبان و ادبیات فارسی علاقه دارد. او آموزش‌های مهندسی برق، ریاضیات و ادبیات مجله فرادرس را می‌نویسد.

یک نظر ثبت شده در “یافتن ریشه سوم یک عدد — به زبان ساده

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *