फलन f(x) के साथ संख्याओं a और b के साथ दिया गया है, जहां f(a) * f(b)> 0 और फलन f(x) a और b के बीच होना चाहिए अर्थात f(x) =[a, b ]. कार्य द्विभाजन विधि का उपयोग करके फ़ंक्शन f(x) में अंतराल a और b के बीच स्थित रूट का मान ज्ञात करना है।
द्विभाजन विधि क्या है?
द्विभाजन विधि का प्रयोग 'a' और 'b' द्वारा परिभाषित दी गई सीमाओं के भीतर फलन f(x) में एक मूल का मान ज्ञात करने के लिए किया जाता है। फ़ंक्शन की जड़ को मान के रूप में परिभाषित किया जा सकता है जैसे कि f(a) =0.
उदाहरण
Quadratic equation F(x) = - 8 This equation is equals to 0 when the value of x will be 2 i.e. - 8 = 0 So, root of this quadratic function F(x) will be 2.
अब, यदि दिए गए अंतराल [a..b] में कोई फलन f(x) निरंतर है और f(a) का चिह्न f(b) का चिह्न भी है, तो एक मान m होगा जो अंतराल a से संबंधित है और b ऐसा है कि f(m) =0
मान m [a..b] ऐसा है कि f(m) =0
अर्थात। m रूट का मान है जो कई हो सकता है
नीचे दिया गया चित्र अंतराल f(a) और f(b) को दर्शा रहा है। इन अंतरालों के बीच के मूल को खोजने के लिए सीमा को भागों में विभाजित किया जाता है और चर m यानी
. में संग्रहीत किया जाता हैएम =(ए + बी) / 2
सीमाओं के विभाजन के बाद नया अंतराल उत्पन्न होगा जैसा कि नीचे दिए गए चित्र में दिखाया गया है
उदाहरण
Input-: x^3 - x^2 + 2 ; a =-500 and b = 100 Output-: The value of root is : -0.991821 Input-: x^3 - x^2 + 2 ; a =-200 and b = 300 Output-: The value of root is : -1.0025
नीचे दिए गए कार्यक्रम में हम जिस दृष्टिकोण का उपयोग कर रहे हैं वह इस प्रकार है -
- अंतराल a और b का समीकरण और मान दर्ज करें
- अंतरालों को इस प्रकार विभाजित करें:m =(a + b) / 2
- प्रिंट m जड़ है
- अगर एफ(एम) 0
- जांचें कि क्या f(a) * f(m) <0
- तब रूट a और m के बीच में होगा
- जांचें कि क्या f(b) * f(m) <0
- तब रूट b और m के बीच में होगा
एल्गोरिदम
Start Step 1-> In function double solution(double x) Return x*x*x - x*x + 2 Step 2-> In function bisection(double a, double b) If solution(a) * solution(b) >= 0 then, Print "You have not assumed right a and b " Return End If Set c = a Loop While (b-a) >= EP Set c = (a+b)/2 If solution(c) == 0.0 Break End If Else if solution(c)*solution(a) < 0 Set b = c End Else If Else Set a = c End Else End Print "The value of root” Step 3-> In function int main() Declare and Initialize inputs a =-500, b = 100 Call function bisection(a, b) Stop
उदाहरण
#include <iostream> using namespace std; #define EP 0.01 // An example function whose solution is determined using // Bisection Method. The function is x^3 - x^2 + 2 double solution(double x) { return x*x*x - x*x + 2; } // Prints root of solution(x) with error in EPSILON void bisection(double a, double b) { if (solution(a) * solution(b) >= 0) { cout << "You have not assumed right a and b\n"; return; } double c = a; while ((b-a) >= EP) { // Find middle point c = (a+b)/2; // Check if middle point is root if (solution(c) == 0.0) break; // Decide the side to repeat the steps else if (solution(c)*solution(a) < 0) b = c; else a = c; } cout << "The value of root is : " << c; } // main function int main() { double a =-500, b = 100; bisection(a, b); return 0; }
आउटपुट
The value of root is : -0.991821