【无标题】

文章详细介绍了使用C语言实现牛顿法求解平方根和n次方根的方法,通过循环迭代计算逼近解,并设置了误差阈值确保精度。
摘要由CSDN通过智能技术生成

牛顿法求方程的解

#include <stdio.h>
#include <math.h>

#define F(x) ((x)*(x)*(x)-3*(x)*(x)+9*(x)-8)
#define G(x) (3*(x)*(x)-6*(x)+9)

int main(void) {
    double x = 2;
    // 出发点
    double xn = 0;
    // 第 n 回的近视值
    double e = 0.000001;
    // 解的精度
    int n = 0;
    // 回数

    while (1) {
        n++;
        /* 计算牛顿迭代式 */
        xn = x - F(x) / G(x);
        printf("%d:x%d=(%.7lf),x%d=(%.7lf)\n", n, n, xn, n - 1, x);
        if (fabs(xn - x) < e) {
            break;
        }
        x = xn;
    }
    printf("在第 %d 回取到满足精度(%lf)的解:\n x = %.6lf\n", n, e, xn);

    return 0;
}


牛顿法求平方根n次方根

#include <stdio.h>
#include <math.h>

// 牛顿法求平方根可拓展
double mySqrt(int x) {
    double t=1.0;         //初始迭代值
    double cheak;    //误差
    double p = 1e-2;        //误差上限
    do
    {
        t = (x / t + t) / 2.0;
        cheak = t * t - x;
    } while((cheak >= 0 ? cheak : -cheak) > p);
    return t;
}

double myCube(int x) {
    double t=1.0;
    double cheak;
    double p = 1e-5;
    do
    {
        t = (x / pow(t,2) + 2*t) / 3.0;
        cheak = pow(t,3) - x;
    } while((cheak >= 0 ? cheak : -cheak) > p);
    return t;
}

// 牛顿法求n次方根可拓展
double nthRoot(int num,int n) {
	double t=1.0;
    double cheak;
    double p = 1e-5;
    do
    {
        t = (num / pow(t,(n-1)) + (n-1)*t) / n;
        cheak = pow(t,n) - num;
    } while((cheak >= 0 ? cheak : -cheak) > p);
    return t;	
}
	
	
int main () {
    printf("mySqrt:2的平方根 = %f",mySqrt(2));
    putchar(10);
    printf("myCube:2的立方根 = %f",myCube(2));
    putchar(10);
    printf("nthRoot:2的平方根 = %f",nthRoot(2,2));
    putchar(10);
    printf("nthRoot:2的立方根 = %f",nthRoot(2,3));
    return 0;
}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陇院第一Sweet Baby

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值