3,881
社区成员
发帖
与我相关
我的任务
分享
double fun(double a ,double b, double c, double d, double x)
{
return a*x*x*x + b*x*x + c*x + d;
}
double F(double a ,double b, double c, double d, double y)
{
double x0=1.0, x, f, f1;
int t;
t=0;
d-=y;
do
{
x = x0;
f = a*x*x*x + b*x*x + c*x + d;
f1 = 3*a*x*x + 2*b*x + c;
x0 = x-f/f1;
t++;
}
while(fabs(x-x0) >= 1e-5);
return x;
}
void main()
{
double x,y,y2;
double a,b,c,d;
a = 3.0,b=2.0,c=5.0,d=6.0;
x = F(a,b,c,d, 25.0);
y2 = fun(a,b,c,d,x);
}
#include <iostream>
#include <cmath>
template<typename F, typename D>
double newton_raphson(F func, D derivative, double x0)
{
double temp, f=0, fd;
while (!isnan(x0)) {
temp = x0;
f = func(x0);
if(fabs(f) < 1e-10)
break;
fd = derivative(x0);
x0 = x0 - f/fd;
if (fabs(temp - x0) < 1e-10)
break;
}
std::cout << "f(x)=" << f << std::endl;
return x0;
}
int main()
{
double root = newton_raphson(
[](double x)->double{ return 3*x*x*x + 2*x*x +5*x - 15;}, //函数, y = 15
[](double x)->double{ return 9* x * x + 4*x + 5;}, //导函数
10
);
std::cout << "root:" << root<< std::endl;
return 0;
}