前言:
眼前看官们对“c语言的开方如何表示”大概比较关怀,小伙伴们都想要知道一些“c语言的开方如何表示”的相关内容。那么小编在网络上汇集了一些有关“c语言的开方如何表示””的相关内容,希望我们能喜欢,各位老铁们一起来学习一下吧!牛顿法,也称为牛顿-拉弗森方法,是一种迭代逼近的数值计算方法,可用于求解方程的根。牛顿法也可以用来求平方根。
设要求解的数的平方根为x,则可以将问题转化为求方程f(x) = x^2 - n = 0的根,其中n为待求平方根的数。
牛顿法的迭代公式为:
x_(k+1) = x_k - f(x_k) / f'(x_k)
其中,x_k表示第k次迭代的近似解,f'(x_k)表示f(x)在x_k处的导数。
对于求平方根的问题,可以令f(x) = x^2 - n,则f'(x) = 2x。
将上述表达式代入迭代公式中,求解平方根的过程如下:
1、选择初始的近似解x_0。
2、使用迭代公式计算下一个近似解:
x_1 = x_0 - (x_0^2 - n) / (2 * x_0)
3、重复步骤2直到收敛,即达到预定的精度要求。
数学原理图示如下:
以下是C语言实现代码:
#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;}
实现效果如下:
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #c语言的开方如何表示 #开根号的c语言 #c语言求立方根的代码 #c语言求立方根的代码是什么 #c语言算平方根代码