P1024 [NOIP2001 提高组] 一元三次方程求解题解

题目

有形如:ax^{3}+bx^{2}+cx+d这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在−100至100之间),且根与根之差的绝对值≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。

提示:记方程f\left ( x \right )=0,若存在2个数x_{1}x_{2},且x_{1}< x_{2}​,f\left ( x_{1} \right )\times f\left ( x_{2} \right ),则在(x_{1},x_{2}​) 之间一定有一个根。

输入输出格式

输入格式

一行,4个实数a,b,c,d。

输出格式

一行,3个实根,从小到大输出,并精确到小数点后2位。

输入输出样例

输入样例

1 -5 -4 20

输出样例

-2.00 2.00 5.00

解析

此题目考虑使用二分的方法求解。使用零点存在性定理:对连续函数f(x)若有f(a)*f(b)<0(a<b)则f(x)在区间(a,b)上至少存在一个解。这样就可以判断在一个区间中是否有解。

令条件为f(x)>=0,显然在上述区间(a,b)上条件具有单调性:在根的一侧f(x)都是负数,另一侧f(x)都是正数。题目中说明了任意两根之差不小于1,那么可以把[-100,100]等分成若干份[i,i+1)(这里左闭右开是为了防止端点处是零点导致得到重复解)。在每个小段中至多只有一个零点,这意味着这个区间上的条件具有单调性。

于是一个定义在实数区间上的二分方法就得出:如果中点的函数值和某端点的正负性相同,那么零点一定在中点的另一侧。

注意:实数之间不能直接比较是否相等,而是判断之间的差值是否小于eps。

同时二分的次数和精度有关,但是考虑每次二分的区间都可以减少一半,缩减的速度还是很快的,因此也是对数级别。与整数区间二分有一点微妙的区别,实数区间上的二分需要确定好精度。题目要求输出与保留两位小数,那么可以在二分端点相差不超过10^{-4}时停止二分来确保精度。 

#include<iostream>
#include<cstdio>
#include<cmath>
#define eps 1e-4
using namespace std;
double a,b,c,d;
double f(double x){return a*pow(x,3)+b*pow(x,2)+c*x+d;//计算函数值
}
int main(){cin>>a>>b>>c>>d;for(int i=-100;i<=100;i++){double l=i,r=i+1,mid;if(fabs(f(l))<eps){//端点处处理,左闭右开printf("%.2lf ",l);}else if(fabs(f(r))<eps){continue;}else if(f(l)*f(r)<0){//在区间(l,r)上执行二分while(r-l>eps){mid=(l+r)/2;if(f(mid)*f(r)>0){//如果f(mid)和f(r)正负性相同,那么零点在mid左侧r=mid;}else{//否则在另一侧l=mid;}}printf("%.2lf ",l);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5代码解读[01] train.py

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license import argparse import math import os import random import sys import time from copy import deepcopy from datetime import datetime from pathlib import Path import numpy as np import yaml from tqdm import tqdmim…

文件包含+文件上传漏洞(图片马绕过)

目录 一.文件包含二.文件上传三.图片马四.题目 一.文件包含 将已有的代码以文件形式包含到某个指定的代码中&#xff0c;从而使用其中的代码或者数据&#xff0c;一般是为了方便直接调用所需文件&#xff0c;文件包含的存在使得开发变得更加灵活和方便&#xff08;若对用户输入…

网络安全-pikachu之文件上传漏洞1

文件上传漏洞是危害极大的&#xff0c;一旦成功&#xff0c;可以获取服务器的最高权限。 pikachu介绍&#xff1a; 文件上传功能在web应用系统很常见&#xff0c;比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后&#xff0c;后台会对上传的文件进行判…

☀️将大华摄像头画面接入Unity 【1】配置硬件和初始化摄像头

一、硬件准备 目前的设想是后期采用网口供电的形式把画面传出来&#xff0c;所以这边我除了大华摄像头还准备了POE供电交换机&#xff0c;为了方便索性都用大华的了&#xff0c;然后全都连接电脑主机即可。 二、软件准备 这边初始化摄像头需要用到大华的Configtool软件&#…

【知识点】CNN中concat与add的区别

cat操作经常用于将特征联合&#xff0c;多个卷积特征提取框架提取的特征融合或者是将输出层的信息进行融合&#xff1b;而add层更像是信息之间的叠加。 add是在一个特征上增加其语义信息&#xff0c;对最终的图像的分类是有益&#xff1b;cat导致的结果改进可能是由于cat操作通…

工业自动化部署选择主板的关键因素

**在构建任何计算机时&#xff0c;选择合适的主板至关重要。**对于游戏台式机&#xff0c;您需要选择能够支持您玩的游戏类型而不会出现任何问题的最新和最佳规格。当涉及工业应用时&#xff0c;影响您决策的变量变得更加重要。作为任何基于计算的应用中最关键的组件之一&#…

搜维尔科技:分析OptiTrack光学动作捕捉应用领域!

虚拟制作 当今虚拟制作阶段低延迟、超精确摄像机跟踪的事实上的标准。 用于运动科学的 OptiTrack OptiTrack 系统提供世界领先的测量精度和简单易用的工作流程&#xff0c;为研究人员和生物力学师的研究提供理想的 3D 跟踪数据。对所有主要数字测力台、EMG 和模拟设备的本机即…

trojan 突然无法上网

[ERROR] 2024/02/19 18:14:45 github.com/p4gefau1t/trojan-go/tunnel/tls.(*Server).acceptLoop.func1:server.go:140 tls handshake failed | remote error: tls: bad certificate 报证书问题&#xff0c;更新证书发现无法解决 最后突然客户端有一个配置 验证证书&#xf…

淘宝、1688以图搜图api使用示例

识图&#xff1f;当我们不知道图片内的信息时&#xff0c;可以通过以图识图的方式&#xff0c;找到对应的图片&#xff0c;以及对该图片的介绍。 识图工具是通过AI技术实现的&#xff0c;但其实识图并不需安装任何软件&#xff0c;在搜索引擎中就可以完成。“以图搜图”也可以…

组态软件行业分析:预计2025年市场空间可达数千亿元

组态软件可以对从控制系统得到的以及自身产生的数据进行记录存储。在系统发生事故和故障的时候&#xff0c;利用记录的运行工况数据和历史数据&#xff0c;可以对系统故障原因等进行分析定位&#xff0c;责任追查等。通过对数据的质量统计分析&#xff0c;还可以提高自动化系统…

[office] Excel中DCOUNT函数在复杂的数据中统计应用图解教程 #职场发展#其他#媒体

Excel中DCOUNT函数在复杂的数据中统计应用图解教程 Excel中DCOUNT函数返回数据库或数据区域的列中满足指定条件并且包含数字的单元格的个数。 在Excel中使用DCOUNT函数可以轻松地从数据库或数据区域中查找符合指定条件并且是数字的单元格的数量。 Excel中DCOUNT函数在复杂的…

佳能2580的下载手册

凡是和电子产品有关的产品其内部都开始不断地进行内卷&#xff0c;在不断地内卷背后&#xff0c;意味着科技更新和换代&#xff0c;自己也入手了一台佳能2580的打印机&#xff0c;一台相对比较老式的打印机&#xff0c;以此不断地自己想要进行打印的需要。 下载的基础步骤&…

Eureka注册中心:实现微服务架构下的服务发现与治理的艺术(一)

本系列文章简介&#xff1a; 在本系列文章中&#xff0c;我们将深入探讨Eureka注册中心在微服务架构中的应用和实践。我们将介绍Eureka的基本原理、关键特性以及配置和优化方法。同时&#xff0c;我们还将分享如何通过监控和日志分析来保障Eureka注册中心的稳定运行。希望通过本…

【ansible】认识ansible,了解常用的模块

目录 一、ansible是什么&#xff1f; 二、ansible的特点&#xff1f; 三、ansible与其他运维工具的对比 四、ansible的环境部署 第一步&#xff1a;配置主机清单 第二步&#xff1a;完成密钥对免密登录 五、ansible基于命令行完成常用的模块学习 模块1&#xff1a;comma…

【附代码】Python Excel合并单元格(OpenPyXL) Pandas.DataFrame groupby样式保存xlsx

文章目录 相关文献Excel合并单元格并居中Pandas.DataFrame groupby样式保存Excel 作者&#xff1a;小猪快跑 基础数学&计算数学&#xff0c;从事优化领域5年&#xff0c;主要研究方向&#xff1a;MIP求解器、整数规划、随机规划、智能优化算法 如有错误&#xff0c;欢迎指…

解释 C++ 中的静态成员变量和静态成员函数。

解释 C 中的静态成员变量和静态成员函数。 在C中&#xff0c;静态成员变量和静态成员函数都与类本身相关联&#xff0c;而不是与类的各个实例相关联。这意味着无论创建了多少个类的对象&#xff0c;静态成员变量和静态成员函数的存储空间只分配一次&#xff0c;并且它们可以被…

Bert基础(二)--多头注意力

多头注意力 顾名思义&#xff0c;多头注意力是指我们可以使用多个注意力头&#xff0c;而不是只用一个。也就是说&#xff0c;我们可以应用在上篇中学习的计算注意力矩阵Z的方法&#xff0c;来求得多个注意力矩阵。让我们通过一个例子来理解多头注意力层的作用。以All is well…

在本地计算机上运行Python程序

在本地计算机上运行Python程序的详细步骤&#xff1a; 第一步&#xff1a;安装Python解释器 Python解释器是运行Python程序所必需的。你可以从Python的官方网站&#xff08;https://www.python.org/downloads/&#xff09;下载最新版本的Python解释器。下载完成后&#xff0c…

linux监控系统资源命令

当前CPU内核版本 [rootVM-12-12-centos ~]# cat /proc/version Linux version 3.10.0-1160.11.1.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Fri Dec 18 16:34:56 UTC 2020 当前系统版本 [rootVM-12-1…

Python六级考试笔记

Python六级考试笔记【源源老师】 六级标准 一、 掌握文件操作及数据格式化。 二、 掌握数据可视化操作。 三、 理解类与对象的概念&#xff0c;初步掌握类与对象的使用。 四、 掌握SQLite数据库基础编程。 五、 掌握简单的使用tkinter的GUI设计。 ​ 1. 文件操作 &#xff0…