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

خرید بک لینک

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

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

برای نوشتن برنامه یافتن ریشه سوم یک عدد، میتوانیم از جستوجوی باینری استفاده کنیم. ابتدا خطای $$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; 

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

// Retus 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 retu mid 
		if (error <= e) 
			retu 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 %lfn", 
		n, cubicRoot(n)); 
	retu 0; 
}

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

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

class GFG 
{ 
	// Retus the absolute value of n-mid*mid*mid 
	static double diff(double n,double mid) 
	{ 
		if (n > (mid*mid*mid)) 
			retu (n-(mid*mid*mid)); 
		else
			retu ((mid*mid*mid) - n); 
	} 
	
	// Retus 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 retu mid 
			if (error <= e) 
				retu 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 

# Retus the absolute value of 
# n-mid*mid*mid 
def diff(n, mid) : 
	if (n > (mid * mid * mid)) : 
		retu (n - (mid * mid * mid)) 
	else : 
		retu ((mid * mid * mid) - n) 
		
# Retus 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 retu mid 
		if (error <= e) : 
			retu 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 { 
	
	// Retus the absolute value 
	// of n - mid * mid * mid 
	static double diff(double n, double mid) 
	{ 
		if (n > (mid * mid * mid)) 
			retu (n-(mid * mid * mid)); 
		else
			retu ((mid * mid * mid) - n); 
	} 
	
	// Retus 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 retu mid 
			if (error <= e) 
				retu 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 

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

// Retus 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 retu mid 
		if ($error <= $e) 
			retu $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. 
?>
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:

^^

telegram
twitter

سید سراج حمیدی

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

نوشته یافتن ریشه سوم یک عدد — به زبان ساده اولین بار در مجله فرادرس. پدیدار شد.

مطالب درسی...

ما را در سایت مطالب درسی دنبال می‌کنید

برچسب: نویسنده: خنجی بازدید: 381 تاريخ: چهارشنبه 2 بهمن 1398 ساعت: 11:58

صفحه بندی