সিক্যান্ট পদ্ধতিও অ-লিনিয়ার সমীকরণ সমাধান করতে ব্যবহৃত হয়। এই পদ্ধতি নিউটন-রাফসন পদ্ধতির সাথে মিলিত, কিন্তু এখানে আমাদের ফাংশন f(x)-এর ডিফারেনশিয়েশন বের করতে হয় না। শুধু f(x) ব্যবহার করে, নিউটনের ভাগ পার্থক্য সূত্র ব্যবহার করে f'(x)-কে সাংখ্যিকভাবে বের করা যায়। নিউটন-রাফসন সূত্র থেকে,
আমরা জানি যে,

এখন, ভাগ পার্থক্য সূত্র ব্যবহার করে, আমরা পাই,



নিউটন-রাফসন সূত্রের f'(x)-কে নতুন f'(x)-দিয়ে প্রতিস্থাপন করে, আমরা অ-লিনিয়ার সমীকরণ সমাধানের সিক্যান্ট সূত্র পেতে পারি।

নোট: এই পদ্ধতির জন্য, অ-লিনিয়ার সমীকরণের মূল বের করা শুরু করার জন্য যেকোনো দুটি প্রাথমিক অনুমান প্রয়োজন।
ইনপুট এবং আউটপুট
ইনপুট: ফাংশন f(x) = (x*x) - (4*x) - 10 আউটপুট: মূলটি হল: -1.74166
অ্যালগরিদম
secant(x1, x2)
ইনপুট: মূলের জন্য দুটি প্রাথমিক অনুমান।
আউটপুট: অ-লিনিয়ার সমীকরণ f(x)-এর সন্নিকট মূল।
শুরু
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)
শেষ
root := x3
root ফেরত দিন
শেষউদাহরণ
#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; //সমীকরণের মূল } 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