一元三次方程

这篇博客介绍了两种解一元三次方程的方法:遍历-100~100并结合二分法,以及通过求导数确定根的区间再进行二分查找。在遍历中,注意避免重复验证,控制精度;在导数法中,通过一阶导数找到极大值和极小值点,然后在限定区间内二分查找根。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 洛谷p1024

有两种解法:

一、遍历-100~100

因为根的范围给了我们,并且根于根之差绝对值>=1,我们可以用遍历的方法。如果遇到整数卡恰好是根,输出,如果根不是整数(必定在两个相差1得整数之间),就在两整数之间用二分法,控制精度后输出。

需要注意,为避免重复验证(i与i+1,i++后可能重复)需要在输出后添加一步处理。

#include<stdio.h>
double f(double a,double b,double c,double d,double x){
	double f=(((a*x+b)*x)+c)*x+d;
	return f;
}
int main(){
	double a,b,c,d,i,f1,f2,f3;
	scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
	for(i=-100;i<=100;i++){
		f1=f(a,b,c,d,i);
		f2=f(a,b,c,d,i+1);
		if(f1*f2<=0){
			if(f1==0){
				printf("%.2lf ",i);
			}
			else if(f2==0){
				printf("%.2lf ",
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值