• C语言求方程根


    1. 用迭代法求 x=√5

      	#include
      	#include
      	
      	/*
      	用迭代法求 x=√5
      	求平方根的迭代公式为:X(n+1)=(Xn+a/Xn)/2
      	*/
      	int algo01(){
      		float x1,x2;
      		float a=5;
      	    x2=a/2; //要先预估一个值x1,其实可以随便找,通常取x1=a/2
      		do{
      			x1=x2;  
      			x2=(x1+a/x1)/2; //平方根的迭代公式
      		}while(fabs(x1-x2)>=1e-5);  //如果不满足精确度则一直做
      		printf("迭代法求平方根,该数的平方根约为:%f\n",x2);
      	}
      	
      	int main(){
      		algo01();
      	}
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
    2. 牛顿迭代法求方程f(x)=2x ^ 3-4x ^ 2+3x-6=0在1.5附近的根

      	#include
      	#include
      	
      	/*
      	牛顿迭代法求方程f(x)=2x^3-4x^2+3x-6=0在1.5附近的根
      	对f(x)求导后f'(x)=6x^2-8x+3
      	*/
      	int algo02(){
      		float x1,x2;
      		float fx1,fx2;
      		x2=1.5;   //在1.5附近的根
      		do{
      			x1 = x2;
      			fx1 = 2*x1*x1*x1 - 4*x1*x1 + 3*x1 - 6;  //f(x)
      	        fx2 = 6*x1*x1 - 8*x1 + 3;               //f'(x)
      	        x2 = x1 - fx1/fx2;                      //x2 = x1 - f(x1)/f'(x)
      		}while(fabs(x1-x2)>=1e-5);   //如果不满足精确度则一直做
      		printf("牛顿迭代法求解方程,该方程的根约为:%f\n",x2);
      	}
      	
      	int main(){
      		algo02();
      	}
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
    3. 二分法求方程的根

      	#include
      	#include
      	
      	/*
      	二分法求方程的根
      	给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:
      	1 确定区间[a,b],验证f(a)•f(b)<0(这是前提,选取的区间必须满足这个条件),给定精确度ξ
      	2 求区间(a,b)的中点c
      	3 计算f(c)
      	  (1) 若f(c)=0,则c就是函数的零点;
      	  (2) 若f(a)•f(c)<0,则令b=c;
      	  (3) 若f(c)•f(b)<0,则令a=c.
      	  (4) 判断是否达到精确度ξ:即若|a-b|<ξ,则得到零点近似值a(或b),否则重复2-4.
      	*/
      	
      	float fx(float x){  //求出方程在x处的解
      	    return 2*x*x*x - 4*x*x + 3*x - 6;
      	}
      	
      	void algo03(){
      		float x1,x2;
      		float fx1,fx2;
      		float tmp;
      		float mid;
      		do{
      			printf("请输入x1和x2【可以输入-15和10】:\n");
      			scanf("%f%f", &x1,&x2);
      			if (x1>x2){                //令x1
      	            tmp = x1;
      	            x1 = x2;
      	            x2 = tmp;
      	        }
      		    fx1 = fx(x1);
      	        fx2 = fx(x2);
      		}while(fx1*fx2>0);            //确保fx1*fx2<0才可以用此方法
      		if(fabs(fx1)<=1e-5)           //如果满足精确度直接打印结果
      	        printf("二分法求解方程,该方程的根约为:%f\n", x1);
      		else if(fabs(fx2)<=1e-5)      //如果满足精确度直接打印结果
      	        printf("二分法求解方程,该方程的根约为:%f\n", x2);
      		else{
      	        while(fabs(x1-x2)>=1e-5){ //如果不满足精确度则一直做
      	            mid=(x1+x2)/2;        //求x1和x2的中点值mid
      	            if(fx(mid)*fx2<0)
      	                x1 = mid;         //在【mid,x2】中去找根
      	            else
      	                x2 = mid;         //在【x1,mid】中去找根
      	        }
      	        printf("二分法求解方程,该方程的根约为:%f\n", x2); //x1和x2相差很小
      	    }
      	}
      	
      	int main(){
      		algo03();
      	}
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
  • 相关阅读:
    Create a new window with NSWindow
    1064 Complete Binary Search Tree
    腾讯汤道生:大模型只是起点,产业落地是AI更大的应用场景
    Linux提权方法总结
    两个不起眼的站内小细节,决定你的独立站转化率
    【ROS2】Moveit2-humble 详细安装过程及问题解决
    2023年中国汽车塑料模具市场规模、竞争格局及行业趋势分析[图]
    SpringCloud集成Nacos
    快手开源LivePortrait,实现表情姿态极速迁移,GitHub 6.5K Star
    ssh免密登录远程服务器
  • 原文地址:https://blog.csdn.net/qq_41829337/article/details/126238107