我是一名有用的助手,可以为您翻译文本。
我正在尝试制作一个数学库,并且其中一个函数会找到一个浮点数的第n个根。
我的当前表达式为 -
我正在尝试制作一个数学库,并且其中一个函数会找到一个浮点数的第n个根。
我的当前表达式为 -
value = value ^ 1/rootValue
但我因为使用了浮点数而出现了错误。是否有其他的解决方法?
在C++中没有“power”运算符;^
是按位异或运算符,仅适用于整数。
相反,在标准库中有一个函数:
#include <cmath>
value = std::pow(value, 1.0/root);
^
在这里不是你想要的。它是按位异或运算符。
使用
#include <math.h>
然后
value = pow(value, 1/rootvalue)
#include <iostream>
using namespace std;
double exp(double, double);
double n_root_(double, double);
int main()
{
double v = n_root_(27,3);
cout << v << endl;
return 0;
}
double exp(double a, double b){
double t(1);
for(int i = 0;i<b;++i)
t *= a;
return t;
}
double n_root_(double num, double n_){
double x;
double A(num);
double dx;
double eps(10e-6);
double n(n_);
x = A * 0.5;
dx = (A/exp(x,n-1)-x)/n;
while(dx >= eps || dx <= -eps){
x = x + dx;
dx = (A/exp(x,n-1)-x)/n;
}
return x;
}
pow(x, 1/root)
的有效替代方案? - Tobi Akinyemi^ 是按位异或运算符。使用 pow() 函数进行计算。
K
的N
次方根是函数f(x) = x^N - K
的根。 - Łukasz Kidziński