【C语言】用牛顿迭代(切线)法/二分法求下面方程的根:

导读:本篇文章讲解 【C语言】用牛顿迭代(切线)法/二分法求下面方程的根:,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

方程:2x³-4x²+3x-6=0;

切线法_百度百科

#include<stdio.h>
#include<math.h>
int main(){
	float x=1.5,x1,y,k;
	//牛顿迭代法(牛顿切线法) 
	while(1){
		y=x*(2*x*(x-2)+3)-6;//求该点纵坐标值 
		if(y==0)break;		//若该点纵坐标值为0即得到零点,结束循环 
		k=2*x*(3*x-4)+3;	//求该点斜率 
		x1=x-y/k;			//求得切线与横坐标的交点 
		x=x1;				//重新赋值进行迭代 
	}
	printf("方程在1.5附近的根为:%f",x1);
	return 0;
}

二分法:二分法(数学领域术语)_百度百科

#include<stdio.h>
int main(){
	float x1=-10,x2=10,x;
	float y1,y2,y;;
	while(1){
		x=(x1+x2)/2;		//计算区间中点 
		y=x*(2*x*(x-2)+3)-6;	//计算中点函数值 
		y1=x1*(2*x1*(x1-2)+3)-6;	//计算原区间左端函数值 
		y2=x2*(2*x2*(x2-2)+3)-6;	//计算原区间右端函数值
		if(y==0)break;		//如果函数值为零(即找到了零点)跳出循环 
		else if(y*y1>0) x1=x;	//如果中点函数值和左端函数值同号则将中点作为新区间的左端 
		else if(y*y2>0) x2=x;	//如果中点函数值和右端函数值同号则将中点作为新区间的右端 
	}
	printf("方程在(-10,10)内的根为:%f",x);
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82664.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!