Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不使用数学库求指数为浮点数的十进制数的幂 #包括 #包括 使用名称空间std; int main() { 双x,y,z; cin>>x>>y; z=exp(y*log(x)); cout_C++_Math - Fatal编程技术网

C++ 不使用数学库求指数为浮点数的十进制数的幂 #包括 #包括 使用名称空间std; int main() { 双x,y,z; cin>>x>>y; z=exp(y*log(x)); cout

C++ 不使用数学库求指数为浮点数的十进制数的幂 #包括 #包括 使用名称空间std; int main() { 双x,y,z; cin>>x>>y; z=exp(y*log(x)); cout,c++,math,C++,Math,可以对和使用泰勒级数展开: 可以将积分幂作为for循环来实现,并继续展开以获得所需的近似值。然后插入您的值和badda bing,badda boom。注意,上述收敛区域对于ln(x)为x>0,对于e^x为所有值。您始终可以实现exp()和log()你自己 而且更容易实现2x和log2x,并以与exp()和log()相同的方式使用 2x=2整数部分(x)+分数部分(x)=2整数部分(x)*2分数部分(x) 2部分(x)可以计算--这不是C,我删除了标签。我期待这个问题来提一些你不理解的东西,这样

可以对和使用泰勒级数展开:


可以将积分幂作为for循环来实现,并继续展开以获得所需的近似值。然后插入您的值和badda bing,badda boom。注意,上述收敛区域对于ln(x)为x>0,对于e^x为所有值。

您始终可以实现
exp()
log()
你自己

而且更容易实现2x和log2x,并以与
exp()
log()
相同的方式使用

2x=2整数部分(x)+分数部分(x)=2整数部分(x)*2分数部分(x)


2部分(x)可以计算--这不是C,我删除了标签。我期待这个问题来提一些你不理解的东西,这样你就可以得到解释。@放松,当问题带有一些C++装备时,问题的实质是C友好。CIN/CUT可以很容易地改变成Snf/Primf而不影响问题的要点。@rafa nadal,比你的log/exp行更简单的是pow(x,y)。如果不使用标准函数--z,给定x和y,你到底想计算什么?@metal“不使用任何数学库”泰勒级数通常不用于此类函数求值。工程极小极大多项式更好。泰勒级数需要太多项才能收敛,并且在远离其中心的地方存在误差问题。泰勒级数在微积分课程中用于解释概念和定义属性,但它们通常不适用于numerical work.@EricPostPhishil我不记得exp(x),但是当我为一个库编码log(x)时,通过计算(x-1)/(x+1)的一些多项式可以获得更好的收敛性所以,是的,也可以这样做,但为了解释这一点,泰勒就足够了。我知道我不想深入了解极大极小多项式的细节。但是,为了避免误导人们,我可能会用“一个准备好的逼近函数的多项式”来代替“泰勒级数展开”@EricPostpischil补充道,谢谢。泰勒级数通常不用于此类函数求值。工程极小极大多项式更好。泰勒级数需要太多的项才能收敛,并且在远离中心的地方存在误差问题。泰勒级数在微积分课上的特色是解释概念和定义属性,但它们是你通常不适合做数值计算。是的,但这是一个面试问题。我想他们不会太挑剔。
 #include<iostream>
 #include<cmath>
 using namespace std;
 int main()
 {
double x,y,z;
cin>>x>>y;
z=exp(y*log(x));
cout<<z;
system("pause");
return 0;
}
ln(x) = 2 * sum[ ((x-1)/(x+1))^(2n-1) / (2n-1), n=1..inf ]
      = 2 [ (x-1)/(x+1) + (1/3)( (x-1)/(x+1) )^3 + (1/5)( (x-1)/(x+1) )^5 + (1/7) ( (x-1)/(x+1) )^7 + ... ] 
e^x = sum(  x^n / n!, n = 0 .. inf ) 
    = 1/1 + x/1 + x^2 / 2 + x^3 / 6 + ...