编程题 7-18 二分法求多项式单根【PAT】

文章目录

  • 题目
    • 输入格式
    • 输出格式
    • 输入样例
    • 输出样例
  • 题解
    • 解题思路
    • 完整代码

编程练习题目集目录

题目

  二分法求函数根的原理为:如果连续函数 f ( x ) f(x) f(x) 在区间 [ a , b ] [a,b] [a,b] 的两个端点取值异号,即 f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0,则它在这个区间内至少存在 1 1 1 个根 r r r,即 f ( r ) = 0 f(r)=0 f(r)=0
  二分法的步骤为:

  • 检查区间长度,如果小于给定阈值,则停止,输出区间中点 ( a + b ) / 2 (a+b)/2 (a+b)/2;否则
  • 如果 f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0,则计算中点的值 f ( ( a + b ) / 2 ) f((a+b)/2) f((a+b)/2)
  • 如果 f ( ( a + b ) / 2 ) f((a+b)/2) f((a+b)/2) 正好为 0 0 0,则 ( a + b ) / 2 (a+b)/2 (a+b)/2 就是要求的根;否则
  • 如果 f ( ( a + b ) / 2 ) f((a+b)/2) f((a+b)/2) f ( a ) f(a) f(a) 同号,则说明根在区间 [ ( a + b ) / 2 , b ] [(a+b)/2,b] [(a+b)/2,b],令 a = ( a + b ) / 2 a=(a+b)/2 a=(a+b)/2,重复循环;
  • 如果 f ( ( a + b ) / 2 ) f((a+b)/2) f((a+b)/2) f ( b ) f(b) f(b) 同号,则说明根在区间 [ a , ( a + b ) / 2 ] a,(a+b)/2] a,(a+b)/2],令 b = ( a + b ) / 2 b=(a+b)/2 b=(a+b)/2,重复循环。

本题目要求编写程序,计算给定 3 3 3 阶多项式 f ( x ) = a 3 x 3 + a 2 x 2 + a 1 x + a 0 f(x)=a_3x^3+a_2x^2+a_1x+a_0 f(x)=a3x3+a2x2+a1x+a0,在给定区间 [ a , b ] [a,b] [a,b] 内的根。

输入格式

  输入在第 1 1 1 行中顺序给出多项式的 4 4 4 个系数 a 3 、 a 2 、 a 1 、 a 0 a_3、a_2、a_1、a_0 a3a2a1a0,在第 2 2 2 行中顺序给出区间端点 a a a b b b。题目保证多项式在给定区间内存在唯一单根。

输出格式

  在一行中输出该多项式在该区间内的根,精确到小数点后 2 2 2 位。

输入样例

3 -1 -3 1
-0.5 0.5

输出样例

0.33

题解

解题思路

  先输入多项式的 4 4 4 个系数,然后输入区间 a 、 b a、b ab。然后 w h i l e while while 循环判断 a 、 b a、b ab 是否相同且异号,如果不成立则说明在该区间内没有根;如果成立则继续判断 f ( ( a + b ) / 2 ) f((a+b)/2) f((a+b)/2) 是否等于 0 0 0,如果等于则直接输出答案;如果不等于则判断 f ( ( a + b ) / 2 ) f((a+b)/2) f((a+b)/2) f ( a ) f(a) f(a) 或者 f ( b ) f(b) f(b) 中一个同号,根据不同情况对区间进行缩小,直到算出答案或者判断出在该区间内没有根即可。

完整代码

#include <math.h>
#include<iostream>
using namespace std;double a, b, c, d;
double f(double A)								// 计算多项式的值
{return a * pow(A, 3) + b * pow(A, 2) + c * A + d;
}
int main(void)
{double A, B;cout << "请输入多项式的 4 个系数:";              // 提交时注释此行cin >> a >> b >> c >> d;cout << "请输入区间端点:";                     // 提交时注释此行cin >> A >> B;while ((B - A) > 0.0001 && f(A) * f(B) <= 0)	// 判断是否异号和相等,等于0是区间端点{if (f((A + B) / 2) == 0){cout.precision(2);cout << fixed << (A + B) / 2 << endl;return 0;}else if (f((A + B) / 2)*f(A) > 0)		// 和 f(A)同号A = (A + B) / 2;else									// 和 f(B)同号:f((A + B) / 2) * f(B) > 0B = (A + B) / 2;}cout.precision(2);                      // 控制小数点位输出cout << fixed << (A + B) / 2 << endl;return 0;
}

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

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

相关文章

前端笔记(二):svg图标;git

一、svg图标 原视频 注意&#xff1a;图片是使用的png但是图标是使用的svg&#xff1b; &#xff08;1&#xff09;配置svg ①main.js里引入icons目录 ②调用函数遍历使用svg ③配置symbolId前都加了icon-&#xff0c;所以引用时应该加icon- ④但是使用时没有加因为组件里…

2024.10.15 sql

刷题网站&#xff1a; 牛客网 select device_id as user_infos_example from user_profile where id < 2 select device_id, university from user_profile where university"北京大学" select device_id, gender, age, university from user_profile where ag…

计算机毕业设计Django+Vue.js豆瓣图书推荐系统 图书评论情感分析 豆瓣图书可视化大屏 豆瓣图书爬虫 数据分析 图书大数据 大数据毕业设计 机器学习

《DjangoVue.js豆瓣图书推荐系统》开题报告 一、研究背景与意义 1. 研究背景 随着数字化时代的来临&#xff0c;图书资源日益丰富&#xff0c;用户面临着信息过载的问题。如何在海量图书中快速找到符合个人兴趣和需求的书籍成为了亟待解决的问题。传统的图书检索方式往往基于…

javaweb以html方式集成富文本编辑器TinyMce

前言&#xff1a; 单一的批量图片上传按钮&#xff0c;禁用tinymce编辑器&#xff0c;但是还可以操作图片编辑&#xff1b; 多元化格式的富文本编辑要求&#xff1b; 采用tinymce实现。 附&#xff1a; tinymce中文手册网站&#xff1a; http://tinymce.ax-z.cn/download-all.…

空间解析几何 3:空间点到线段和平面的距离【附MATLAB代码】

目录 空间中点到线段的距离 空间中点到平面的投影和距离 matlab代码 空间中点到线段的距离 空间中点到平面的投影和距离 matlab代码 function [dis,P2,t] point2Line (A1,B1,C1) %求空间一点到一线段的最短距离 %[dis,P2,Q2]pointSegmentDistance(A,B,C) %A B为线段首末端…

使用LlamaFactory进行模型微调

使用LlamaFactory进行模型微调 简介 论文地址&#xff1a;https://arxiv.org/pdf/2403.13372 仓库地址&#xff1a;https://github.com/hiyouga/LLaMA-Factory/tree/main 名词解释 1. 预训练 (Pre-training, PT) 预训练是指模型在大规模无监督数据集上进行初步训练的过程…

最强 OpenAI o1 逻辑推理正确率仅 50%!清华、智谱推出「大模型逻辑推理新基准」

9.11 和 9.9 哪个大&#xff1f; 这一连人类幼儿园儿童都能回答的问题&#xff0c;曾经&#xff08;至今&#xff09;难倒了众多大语言模型&#xff08;LLM&#xff09;。 然而&#xff0c;要想达到通用人工智能&#xff08;AGI&#xff09;的水平&#xff0c;LLM 不仅要完成“…

居民小区的有序充电策略及解决方案

0引言 全球经济增长导致化石能源过度消耗&#xff0c;加剧环境污染。电动汽车因其环保优势迅速崛起&#xff0c;预计到2030年中国电动汽车保有量将达到6000万辆。这有助于减少化石能源依赖&#xff0c;推广绿色出行&#xff0c;但也对电网稳定性构成挑战。因此&#xff0c;研究…

2.1 HTML5 - Canvas标签

文章目录 引言Canvas标签概述定义实例&#xff1a;创建画布 理解Canvas坐标系概述实例&#xff1a;获取Canvas坐标 获取Canvas环境上下文概述实例&#xff1a;获取Canvas上下文设置渐变色效果 结语 引言 大家好&#xff0c;今天我们要一起探索HTML5中一个非常有趣且强大的特性…

001 Hadoop安装、Spring整合测试

Hadoop安装、整合测试 文章目录 Hadoop安装、整合测试1.简介1.优点2.组成 2.安装1.安装jdk&#xff08;如已安装可跳过&#xff09;2.安装hadoop1.安装2. 修改配置文件core-site.xml3. 修改配置文件hdfs-site.xml4.启动hadoop5.启动yarn6.执行jps查看7.相关端口及配置位置8.访问…

python中不变的数据类型有哪些

在Python中&#xff0c;不可变&#xff08;immutable&#xff09;数据类型是指一旦创建了这些类型的对象后&#xff0c;就不能改变其值。Python中的不可变数据类型包括以下几种&#xff1a; 数字 (int, float, complex): 这些类型的数值一旦创建就不能更改。例如&#xff0c;如…

Flutter 与 React Native - 详细深入对比分析(2024 年)

超长内容预警&#xff0c;建议收藏后阅。 Flutter 和 React Native 是跨平台应用程序开发的两个领先工具。了解它们的差异以及各自的最佳用例。 什么是Flutter&#xff1f; Flutter 是 Google 于 2018 年发布的用户界面 (UI) 软件开发套件。Flutter 可让您为多种平台和操作系统…

在线深度学习:爱奇艺效果广告分钟级模型优化

01# 背景 在效果广告投放场景中&#xff0c;媒体侧需要准确衡量每次请求的价值&#xff0c;模型预估值在广告竞价中扮演着核心角色。模型预估精度的提升&#xff0c;是改善媒体侧变现效率、提升广告收益的核心技术驱动力。 此前&#xff0c;爱奇艺效果广告预估模型为小时级模型…

构建流媒体管道:利用 Docker 部署 Nginx-RTMP 从 FFmpeg RTMP 推流到 HLS 播放的完整流程

最近要实现一个类似导播台的功能&#xff0c;于是我先用 FFmpeg 实现一个参考对照的 Demo&#xff0c;我将其整理为一篇文章&#xff0c;方便后续大家或者和自己参考&#xff01; 1、软件工具介绍 本次部署相关软件 / 工具如下&#xff1a; FFmpeg&#xff1a;全称是 Fast Fo…

软件确认测试内容和方法分享,CMA、CNAS第三方软件检测机构推荐

在现代软件开发中&#xff0c;软件确认测试扮演着至关重要的角色。它不仅帮助开发团队识别系统中的缺陷&#xff0c;还确保软件产品符合用户需求和期望。 软件确认测试旨在验证软件系统的性能和功能是否符合设计规格和用户需求。它通常在软件开发的后期进行&#xff0c;以确保…

火语言RPA流程组件介绍--浏览器上传文件

&#x1f6a9;【组件功能】&#xff1a;在浏览器内自动点击上传功能按钮&#xff0c;选择本地文件完成文件网页上传 配置预览 配置说明 目标元素 支持T或# 通过捕获网页元素或填写css,xpath获取网页元素作为操作目标 上传文件路径 支持T或# 默认FLOW输入项 需要上传的文件…

从零开始构建:Python自定义脚本自动化你的日常任务

从零开始构建&#xff1a;Python自定义脚本自动化你的日常任务 Python 作为一种简洁且功能强大的编程语言&#xff0c;被广泛应用于各种自动化任务中。通过编写 Python 脚本&#xff0c;你可以轻松地将日常重复性工作自动化&#xff0c;例如文件操作、数据处理、网络爬虫、系统…

vue3--通用 button 组件实现

背景 在日常开发中,我们一般都是利用一些诸如:element-ui、element-plus、ant-design等组件库去做我们的页面或者系统 这些对于一些后台管理系统来说是最好的选择,因为后台管理系统其实都是大同小异的,包括功能、布局结构等 但是对于前台项目,比如官网、门户网站这些 …

【Linux驱动开发】嵌入式Linux驱动开发基本步骤,字符驱动和新字符驱动开发入门,点亮LED

【Linux驱动开发】嵌入式Linux驱动开发基本步骤&#xff0c;字符驱动和新字符驱动开发入门&#xff0c;点亮LED 文章目录 开发环境驱动文件编译驱动安装驱动自动创建设备节点文件 驱动开发驱动设备号地址映射&#xff0c;虚拟内存和硬件内存地址字符驱动旧字符驱动新字符驱动 …

live2d 实时虚拟数字人形象页面显示,对接大模型

live2dSpeek 测试不用gpu可以正常运行 https://github.com/lyz1810/live2dSpeek 运行的话还需要额外下载https://github.com/lyz1810/edge-tts支持语音 ## 运行live2dSpeek >npm install -g http-server >http-server . ## 运行edge-tts python edge-tts.py