خب اینم جواب مساله البته برای مثال اگر به این برنامه 2^2 را بدهید خروجی :
4.0002000098880535
که خب دقت خوبیه باز ولی در عوض حتی توان های غیر صحیح هم می تواند حساب کند
public static double Power(double Number,double Power){
double lnHasel = ln(Number);
return exponential(Power*lnHasel);
}
private static double ln(double Input){
Input--;
double retu=0;
for(int count=1;count<20000;count++){
retu+=Alamat(count) *BasePower(Input,count)/count;
}
return retu;
}
private static double exponential(double Input){
double retu=0;
for(int count=0;count<15;count++){
retu+=BasePower(Input, count)/Fact(count);
}
return retu;
}
private static long Fact(int Input){
if(Input>1)
return Input*Fact(Input-1);
else
return 1;
}
private static double BasePower(double Number,int Power){
if(Power>0)
return Number*BasePower(Number, Power-1);
else
return 1;
}
private static double Alamat(int Input){
if(Input%2 ==0)return -1;
else return 1;
}
توضیح کلی راه حل برنامه هم فرمول های زیر هست اگر توضیح بیشتری می خواین بگین
http://mymathforum.com/cgi-bin/mimetex.cgi?x^y=\exp(y\log%20x).