【代码+详解】算法题 : 二分法求函数零点

【代码+详解】算法题 : 二分法求函数零点算法题 二分法求函数零点 不会就看这篇文章就够了 代码 详解 二分法求函数零点代码

大家好,欢迎来到IT知识分享网。

❗❗❗必看:
下列题我全部都使用 Java 语言写的,并且均可以提交成功,获得Accepted 结果的. 如果代码和详解看了之后,对答案有任何疑问,都可以在评论区提出来,我都会一个一个回答.

❗❗❗感谢大家的支持,如果喜欢我的博客,关注 点赞 收藏 评论一波,非常感谢!!!

题目:二分法求函数零点

有函数:

f(x) = x^5 – 15 * x^4+ 85 * x^3- 225 * x^2+ 274 * x – 121

已知 f(1.5) > 0 , f(2.4) < 0 且方程 f(x) = 0 在区间 [1.5,2.4] 有且只有一个根,请用二分法求出该根。

Input

无。

Output

该方程在区间[1.5,2.4]中的根。要求四舍五入到小数点后6位。

代码

import java.util.*; import java.util.Scanner; //f(x) = x^5 - 15 * x^4+ 85 * x^3- 225 * x^2+ 274 * x - 121 public class Main03{ 
    //先把函数模拟出来 public static double f(double mid) { 
    return Math.pow(mid,5)-15*Math.pow(mid,4)+85*Math.pow(mid,3)-225*Math.pow(mid,2)+274*mid-121; } public static void main(String[] args) { 
    double a = 1.5;//左边边界 double b = 2.4;//右边边界 double precision = 1e-7;//精确值 //调用求根的方法 double root = findRoot(a,b,precision); System.out.print(root); } //计算根的方法 public static double findRoot(double a,double b,double precision) { 
    double mid = 0.0; while((b-a)>precision) { 
   //如果规定精度以内都无法找到根就可以结束找了 mid = (a+b)/2;//mid每次都要更新 if(f(mid)==0.0) { 
    break;//直接结束了,因为mid就已经符合要求了 }else if(f(a)*f(mid)<0) { 
    b = mid; }else { 
    a = mid; } } return Math.round(mid*1e6)/1e6; } } 

初步思路

通过不断地将区间一分为二,找到函数 ( f(x) ) 在给定区间内的零点。

具体步骤

  1. 定义函数
    • 模拟函数 ( f(x) ) 的表达式: ( f(x) = x^5 – 15x^4 + 85x^3 – 225x^2 + 274x – 121 )。
  2. 初始化边界和精度
    • 左边界 a = 1.5
    • 右边界 b = 2.4
    • 精度 precision = 1e-7
  3. 求根方法
    • 计算区间中点 mid: mid = (a + b) / 2
    • 根据函数值判断根的位置:
      • 如果f(mid) == 0.0,则 mid 就是根。
      • 如果 f(a) * f(mid) < 0,说明根在左半区间 [a, mid],更新右边界 b = mid。
      • 否则,根在右半区间 [mid, b],更新左边界 a = mid。
    • 重复上述过程,直到 (b – a) <= precision,表示找到的根在精度范围内。
  4. 返回结果
    • 将找到的根 mid 四舍五入到小数点后6位: Math.round(mid * 1e6) / 1e6

总结方法

二分法通过不断缩小区间范围,逐步逼近函数的零点。关键是每次迭代都将当前区间分为两半,并根据函数值判断根所在的区间。这个方法适用于在确定的区间内有且只有一个根的单调函数。通过严格控制区间的精度,可以保证结果的准确性,适合求解数值精确度要求高的问题。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/155558.html

(0)
上一篇 2025-02-18 17:15
下一篇 2025-02-18 17:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信