关于实数的实数幂
  • 板块学术版
  • 楼主Heyf
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/10/9 21:32
  • 上次更新2023/11/2 14:44:23
查看原帖
关于实数的实数幂
452544
Heyf楼主2023/10/9 21:32

大部分数据没有问题,但输入 0.01 1 的时候就错误了,求大佬解决

#include <stdio.h>

//用牛顿迭代法实现ln 
double my_ln(double x){
    double epsilon=1e-30;  //迭代的误差限制
    double result=0.0;
    double term=(x-1.0)/(x+1.0);
    double currentTerm=term;
    int n=1;
	while(currentTerm>epsilon||currentTerm<-epsilon){
        result+=currentTerm;
        currentTerm*=term*term*(2*n-1)/(2*n+1);
        n++;
    }
	return 2*result;
}

//用牛顿迭代法实现exp 
double my_exp(double x){
    double epsilon=1e-30;  //精度
    double exp=1.0,term=1.0;
    int n=1;
	while(term>epsilon){
        term*=x/n;
        exp+=term;
        n++;
    }
	return exp;
}

double my_pow(double x, double y){
	return my_exp(y*(my_ln(x)));
}

int main() {
    double x,y;
    scanf("%lf%lf",&x,&y); 
    printf("%.10lf\n",my_pow(x,y));
    return 0;
}

2023/10/9 21:32
加载中...