परिचय
सेकेंट विधि का उपयोग गैर-रैखिक समीकरणों को हल करने के लिए भी किया जाता है। यह विधि न्यूटन-रैफसन विधि के समान है, लेकिन यहाँ हमें फंक्शन f(x) का अवकलन ज्ञात करने की आवश्यकता नहीं है। केवल f(x) का उपयोग करके, हम न्यूटन के विभाजित अंतर सूत्र का उपयोग करके संख्यात्मक रूप से f'(x) ज्ञात कर सकते हैं।
न्यूटन-रैफसन सूत्र से, हम जानते हैं कि:

अब, विभाजित अंतर सूत्र का उपयोग करके, हमें मिलता है:



न्यूटन-रैफसन सूत्र के f'(x) को नए f'(x) से प्रतिस्थापित करके, हम गैर-रैखिक समीकरणों को हल करने के लिए सेकेंट सूत्र प्राप्त कर सकते हैं।

नोट: इस विधि के लिए, हमें गैर-रैखिक समीकरणों के मूल को खोजने के लिए कोई भी दो प्रारंभिक अनुमान चाहिए।
इनपुट और आउटपुट
इनपुट: फंक्शन f(x) = (x*x) - (4*x) - 10 आउटपुट: मूल है: -1.74166
एल्गोरिदम
secant(x1, x2)
इनपुट: मूल के लिए दो प्रारंभिक अनुमान
आउटपुट: गैर-रैखिक समीकरण f(x) का सन्निकट मूल
Begin
f1 := f(x1)
f2 := f(x2)
x3 := ((f2*x1) – (f1*x2)) / (f2 – f1)
जब तक x3 और x2 की सापेक्ष त्रुटि > परिशुद्धता, करें
x1 := x2
f1 := f2
x2 := x3
f2 := f(x2)
x3 := ((f2*x1) – (f1*x2)) / (f2 – f1)
done
root := x3
root लौटाएं
End
उदाहरण (C++ कोड)
#include <iostream>
#include <cmath>
using namespace std;
double absolute(double value) {
// मान का परिमाण ज्ञात करने के लिए
if (value < 0)
return (-value);
return value;
}
double f(double x) {
// दिया गया फंक्शन x^2 - 4x - 10
return ((x*x) - (4*x) - 10);
}
double secant(double x1, double x2) {
double x3, root;
double f1, f2;
f1 = f(x1);
f2 = f(x2);
x3 = (f2*x1 - f1*x2) / (f2 - f1);
while (absolute((x3 - x2) / x3) > 0.00001) {
// x3 की सटीकता की जांच
x1 = x2; // x मानों को शिफ्ट करें
f1 = f2;
x2 = x3;
f2 = f(x2); // नया x2 खोजें
x3 = (f2*x1 - f1*x2) / (f2 - f1); // x3 की गणना करें
}
root = x3;
return root; // समीकरण का मूल
}
int main() {
double a, b, res;
a = 0.5;
b = 0.75;
res = secant(a, b);
cout << "The root is: " << res;
}
आउटपुट
The root is: -1.74166