假设要求立方根的数为num
则我们就是要求x^3=num的解
即 x^3-num=0的解
构造函数f(x)=x^3-num
在函数上任取一点(x1,y1)
此时y1 = f(x1) = x1^3 - num 而这一点的导数为 y1' = f'(x1) = 3x1^2
于是可以列出此处切线方程:y-y1 = y1' (x-x1)
当此切线与x轴相交时,即y=0时,可以求得此时 x = x1- y1/y1'
代入y1和y1‘的值,得到:x=x1- ( 1/3 - num/(3x1^2) ) = 2/3*x1 - num/(3x1^2)
此时我们得到的x即为切线与x轴交点的横坐标,接着就可以进行下一次迭代,直到得到x的值在误差范围内,就可以返回
我写的代码如下,大家可以参考参考:
#include<stdio.h>
#define abs(x) ((x)>0?(x):(-x))//绝对值函数
int main()
{
double num; //要求立方根的数
while (scanf_s("%lf", &num) != EOF)
{
double x1, x2;
if (num == 0)
printf("0\n"); //如果输入为0