二分法求多项式的一个根

2024-05-12 17:48
文章标签 多项式 二分法

本文主要是介绍二分法求多项式的一个根,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数学原理

二分法求根的数学原理:如果连续函数f(x)在区间[a,b]的两个端点上取值异号,则在该该函数在该区间上必有一个根。

解步骤

二分法求解步骤与二分查找非常相似。具体如下:
1.检查区间的长度,如果小于阈值,则返回中间值,mid=(a+b)/2。
2.求中间值对应的函数值,f(mid)。
3.如果f(mid)==0,返回mid。
4.如果f(mid)与f(a)同号,即f(mid)*f(a)>0,则令a=mid。返回步骤一。
5.如果f(mid)与f(b)同号,即f(mid)*f(b)>0,则令b=mid。 返回步骤一。

代码

#include<iostream>
using namespace std;
double THRESHOLD=0.001;
int coefficients[100];
int n=2;//系数个数-1 
double f(double x){double res=0;double temp=1;for(int i=0;i<n;i++){res+=res+coefficients[i]*temp;temp*=x;}return res;
}
double root(double a, double b){if(f(a)==0)return a;if(f(b)==0)return b;double mid;while(b-a>=THRESHOLD){mid=(a+b)/2;if(f(mid)==0)return mid;if(f(a)*f(mid)>0)a=mid;else if(f(b)*f(mid)>0)b=mid;                             }return (a+b)/2;
}
int main()
{double a, b;for(int i=0; i<n; ++i ) {cin>>coefficients[i];}cin>>a>>b;printf( "%.2lf", root( a, b ) );return 0;
}

算法流程很简单,要做到bug-free。


这篇关于二分法求多项式的一个根的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983310

相关文章

机器学习算法(二):1 逻辑回归的从零实现(普通实现+多项式特征实现非线性分类+正则化实现三个版本)

文章目录 前言一、普通实现1 数据集准备2 逻辑回归模型3 损失函数4 计算损失函数的梯度5 梯度下降算法6 训练模型 二、多项式特征实现非线性分类1 数据准备与多项式特征构造2 逻辑回归模型 三、逻辑回归 --- 正则化实现1 数据准备2 逻辑回归模型3 正则化损失函数4 计算损失函数的梯度5 梯度下降6 训练模型 总结 前言 今天我们开始介绍逻辑回归的从零开始实现代码了,

【C++实验】多项式加减

题目:一元多项式运算 基本要求:     (1) 输入并建立多项式;     (2) 输出多项式;     (3) 多项式加法     (4) 多项式减法。 测试数据:  代码展示: #include<iostream>using namespace std;class LinkedNode{public:LinkedNode(double COEF, doub

AI学习指南机器学习篇-多项式朴素贝叶斯算法简介

AI学习指南机器学习篇-多项式朴素贝叶斯算法简介 前言 随着人工智能技术的快速发展,机器学习作为其中的一个重要分支已经成为各个领域的热门话题。而在机器学习算法中,朴素贝叶斯算法因其简单易懂、效果不俗而备受青睐。本文将针对多项式朴素贝叶斯算法展开详细介绍,包括原理、应用、优缺点分析等内容,帮助读者更好地理解和运用这一经典的机器学习算法。 多项式朴素贝叶斯算法的原理 多项式朴素贝叶斯算法是一种

二分法的专题总结——到底应该写小于还是小于等于、两个判断还是三个判断

二分法的专题总结 二分法的本质是:寻找序列中第一个满足某条件的元素的位置。 二分法中通常让人迷惑的地方不外乎 (1)while中什么时候写小于等于,什么时候不写等于; (2)while内部是写两个条件还是三个条件。 首先考虑升序排列的元素(降序等价),应当分为两种情况:(1)没有重复元素;(2)有重复元素。后者是前者的一般化,也就是说后者的算法也同样适用于前者。 (1)没有重复元素 这种情

二分法查找数字--算法分析和源码

采用二分法查找数字是用的比较多的一种方法 其算法思想可以这样理解: 比如有一行数:1 6 9 10 15  要找到其中某一个数的位置,最简单的一种算法是穷举法,顾名思义,就是遍历这一行所有的数,比较,最后找到这个数,然后输出位置,如果到最后还是没有,就打印说没有找到该数 这里涉及到一个概念,就是算法时间复杂度(好像是这样称呼的) 穷举算法的复杂度是和n成一次函数的,所以复杂度是n,这样没

Java和c++中二分法查找数组元素的实现机制

Java和c++中二分法查找数组元素的实现机制 在数据结构和算法中,我们会见到二分法查找数组元素这个经典的算法。事实上,二分法也称为折半查找法。该算法的主要机制是: **(1)**先将数组元素从小到大排列(或者从大到小排列,下面算法是基于小到大排序) **(2)**有一维数组arr1D[len],len为数组的长度,首先定义int low =0,int high = len;确定该数组区间的中间

多元多项式的特征列与零点的关系定理

下面这个定理来自《计算机代数》6.1三角列与特征列(王东明、夏壁灿著) 【定理】 设 C = [ C 1 , … , C r ] \mathbb{C =}\left\lbrack C_{1},\ldots,C_{r} \right\rbrack C=[C1​,…,Cr​]为多项式组 P ⊂ K [ x ] \mathbb{P \subset}\mathcal{K\lbrack}\mathbf

分治 —— 二分法

【概述】 二分法,是十分常见的问题,其在一个单调有序的集合或函数中查找一个解,每次分为左右两部分,通过判断解在哪部分来调整上下界,直到找到目标元素,其与各种算法的结合比较密切,关于其原理:点击这里 若求解的问题的定义域为整数域,对于长度为 n 的求解区间,算法需要 logn 次来确定分界点;若求解的问题的定义域是实数域,由于实数运算的精度问题,则判定 R-L 的精度是否达到要求是问题的关键,即

1071: 数据结构作业01 -- 一元多项式的求积

1071: 数据结构作业01 -- 一元多项式的求积 时间限制: 1 Sec   内存限制: 128 MB 提交: 48   解决: 8 [ 提交][ 状态][ 论坛] 题目描述 一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表。请编写程序对输入的两个一元多项式求积,并输出求积的结果。 输入 输入为两个一元多项式,每个一元多项式输入一行,按照降幂依次输入每个

求两个多项式的和

题目1472:求两个多项式的和 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:842 解决:138 题目描述: 输入两个多项式,计算它们的和。 每个多项式有若干对整数表示,每组整数中,第一个整数表示系数(非0),第二个整数表示该项的次数。 如由3 3 5 -2 1 4 0表示3x^5 - 2 * x + 4其中第一个3表示该多项式由三个整数对表示。 输