函数零点

02:二分法求函数的零点

喜你入骨 提交于 2020-01-23 16:53:38
总时间限制: 1000ms 内存限制: 65536kB 描述 有函数: f(x) = x5 - 15 * x4+ 85 * x3- 225 * x2+ 274 * x - 121 已知 f(1.5) > 0 , f(2.4) < 0 且方程 f(x) = 0 在区间 [1.5,2.4] 有且只有一个根,请用二分法求出该根。 输入 无。 输出 该方程在区间[1.5,2.4]中的根。要求四舍五入到小数点后6位。 样例输入 无 样例输出 不提供 # include <iostream> # include <math.h> using namespace std ; double f ( double x ) { return x * x * x * x * x - 15 * x * x * x * x + 85 * x * x * x - 225 * x * x + 274 * x - 121 ; } int main ( ) { double low = 1.5 ; double high = 2.4 ; double mid = ( low + high ) / 2 ; while ( fabs ( f ( mid ) - 0 ) >= 0.000001 ) { if ( f ( mid ) > 0 ) low = mid ; else high = mid ; mid = (

零点和极值点

戏子无情 提交于 2019-12-04 06:27:51
前言 虽说零点和极值点都叫点,但是她们和我们平常所说的点 \(A(1,2)\) 是不一样的,零点和极值点其实都是实数; 区别 零点:是针对函数 \(f(x)\) 而言的,意思是使得 \(f(x)=0\) 的 \(x\) 的取值;比如二次函数 \(f(x)=x^2-3x+2\) ,由于 \(f(x)=x^2-3x+2=0\) ,解得 \(x=1\) 或者 \(x=2\) ,故其零点为 \(x=1\) 和 \(x=2\) ,有两个零点。也就是说零点其实是函数 \(y=f(x)\) 图像与直线 \(y=0\) 交点的横坐标。她又可以分为变号零点和不变号零点。比如函数 \(f(x)=x^2\) 的零点为 \(x=0\) ,这个零点就是不变号零点;而刚才 \(f(x)=x^2-3x+2\) 的两个零点 \(x=1\) 和 \(x=2\) 就叫变号零点, 联系 来源: https://www.cnblogs.com/wanghai0666/p/11837576.html

[作业]如何二分法求函数零点

时间秒杀一切 提交于 2019-12-03 00:21:30
代码如下: #include <bits/stdc++.h> using namespace std; typedef long double dl; dl ansl,ansr; map <dl,dl> vis; //一个小优化,没有多大作用 dl cal(dl n) //计算f(n)的函数值 { if(vis[n]) return vis[n]; return vis[n]=((pow(2.0,n))+(3.0*n)-6.0); } void solve(dl l,dl r,dl exp)//当前二分区间及精度 { if(r-l<exp) //区间长度小于给定精度 { ansl=l,ansr=r; return; } dl mid=(l+r)/2; dl a=cal(l),b=cal(r),c=cal(mid); if(c==0) //区间中点就是零点 solve(mid,mid,exp); if(a*c<0) //零点位于左半区间 solve(l,mid,exp); if(b*c<0) solve(mid,r,exp); //零点位于右半区间 return; } int main(int argc, char const *argv[]) { vis.clear(); dl a,b,exp; cin>>a>>b>>exp; solve(a,b,exp); cout<<fixed