#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
double function(double x);
double diff(double (*f)(double), double x)
{
return (f(x+1.0E-6)-f(x)) / 1.0E-6;
}
double nt(double (*f)(double), unsigned int times = 1000)
{
srand(time(NULL));
double start_x = (double)rand();
for (unsigned int i = 0; i < times; ++i) {
double df = diff(f, start_x);
//printf("%f\n", df);
if (df - 0.0 < 1.0E-8) {
start_x = (double)rand();
continue;
}
start_x = -f(start_x) / df + start_x;
}
return start_x;
}
int main()
{
double x;
std::cout << "x = " << (x = nt(function)) << '\n';
std::cout << "y = " << function(x) << '\n';
return 0;
}
在GitHub上面,還有我撰寫的,透過Perl和Shell Script將函數轉換為C++程式碼,比較方便使用,但目前還沒有撰寫使用教學。詳情請看「JEI」。
👉【幫我們一個忙!】👈
👋如果您喜歡這篇文章,請在下方按5個Like!
❤您的支持是我們最大的動力!
您只要登入帳號(Facebook、Google),在下方按5個Like,我們就會收到來自LikeCoin基金會的贊助。
您只需要支持我們,完全不會花到錢!