一元三次方程求解

一元三次方程求解

题目描述

有形如: a x 3 + b x 2 + c x + d = 0 ax^3+bx^2+c^x+d=0 ax3+bx2+cx+d=0一元三次方程。给出该方程中各项的系数 ( a a a, b b b, c c c, d d d 均为实数 ),并约定该方程存在三个不同实根 (根的范围在 − 100 -100 −100至 100 100 100之间 ),且根与根之差的绝对值 ≤ 1 ≤1 ≤1。要求由小到大依次在同一行上输出这三个实根。

提示

记方程 f ( x ) = 0 f(x)=0 f(x)=0,若存在两个数 x 1 x_1 x1和 x 2 x_2 x2,且 x 1 < x 2 x_1 < x_2 x1<x2, f ( x 1 ) × f ( x 2 ) < 0 f(x_1)×f(x_2)<0 f(x1)×f(x2)<0,则在 ( x 1 , x 2 ) (x_1,x_2) (x1,x2)之间一定有一个根。

输入输出格式

输入格式

输入 a , b , c , d a,b,c,d a,b,c,d

输出格式

三个实根(根与根之间留有空格)

输入输出样例

输入样例

1 -5 -4 20

输出样例

-2.00 2.00 5.00


算法分析

这是一道有趣的解方程题。为了便于求解,设方程 f ( x ) = a x 3 + b x 2 + c x + d = 0 f(x)=ax^3+bx^2+cx+d=0 f(x)=ax3+bx2+cx+d=0,设根的值域( − 100 -100 −100至 100 100 100之间)中有 x x x, 其左右两边相距 0.0005 0.0005 0.0005的地方有 x 1 x_1 x1和 x 2 x_2 x2两个数,即 x 1 = x − 0.0005 x_1=x-0.0005 x1=x−0.0005, x 2 = x + 0.0005 x_2=x+0.0005 x2=x+0.0005。 x 1 x_1 x1和 x 2 x_2 x2间的距离( 0.001 0.001 0.001)满足精度要求(精确到小数点后 2 2 2位)。


A C 代码

暴力出奇迹~~

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
double a,b,c,d;
int main()
{
	cin >>a >>b >>c >>d;
	for(double i=-100;i<=100;i+=0.001)
	{
		double j=i+0.001;
		double l=a*i*i*i+b*i*i+c*i+d;
		double r=a*j*j*j+b*j*j+c*j+d;
		if(l*r<=0)
		{
			printf("%.2lf ",(i+j)/2);
		}
	}
	return 0;
}
相关推荐
带土14 分钟前
8. C++ explicit 关键字
开发语言·c++
im_AMBER5 分钟前
Leetcode 103 反转链表 II
数据结构·c++·笔记·学习·算法·leetcode
rgeshfgreh9 分钟前
回溯算法精解:排列、子集与组合
python·算法·深度优先
rit843249930 分钟前
有限元算法求解铁木辛柯梁梁静力问题实例
算法
智驱力人工智能32 分钟前
矿山皮带锚杆等异物识别 从事故预防到智慧矿山的工程实践 锚杆检测 矿山皮带铁丝异物AI预警系统 工厂皮带木桩异物实时预警技术
人工智能·算法·安全·yolo·目标检测·计算机视觉·边缘计算
忆锦紫35 分钟前
图像降噪算法:中值滤波算法及MATLAB实现
图像处理·算法·matlab
知乎的哥廷根数学学派37 分钟前
基于多分辨率注意力脉冲神经网络的机械振动信号故障诊断算法(西储大学轴承数据,Pytorch)
人工智能·pytorch·深度学习·神经网络·算法·机器学习
十五年专注C++开发40 分钟前
CMake基础:foreach详解
linux·c++·windows·cmake·跨平台编译
kebijuelun1 小时前
Qwen 团队提出 ArenaRL:面向开放式 Agent RL 任务
人工智能·算法·语言模型·transformer
机器学习之心1 小时前
PSO优化的K-means++聚类算法用于用户用电行为分析的实现方案
算法·kmeans·聚类