这是将网上的C++版的改写成Java的
理论上把函数f()改一下就可以计算任意方程的0点。
仅供参考,可以将其写成递归的。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ErFenFa {
static int m;
static double x1, x2, x3;
public static double f(double x) {
double y;
y = x * x * x - x - 1;
return y;
}
public static void main(String[] args) throws NumberFormatException,
IOException {
double a, b;
System.out.println("please input two number a,b");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
a = Double.valueOf(br.readLine());
b = Double.valueOf(br.readLine());
double x1 = a;
double x2 = b;
double x3;
for (int i = 1;; i++) {
if (f(x1) == 0) {
m = (int) (x1 * 100);
x1 = m / 100;
System.out.println("方程的根是x=" + x1 + ",迭代次数=" + i);
}
if (f(x2) == 0) {
m = (int) (x2 * 100);
x2 = m / 100;
System.out.println("方程的根是x=" + x2 + ",迭代次数=" + i);
}
if (f(x1) * f(x2) > 0) {
System.out.println("方程无解!" + ",迭代次数=" + i);
return;
} else if (f(x1) * f(x2) < 0) {
x3 = (x1 + x2) / 2; // return 1;
if (f(x3) == 0) {
m = (int) (x3 * 100);
x3 = m / 100;
System.out.println("方程的根是x=" + x3 + ",迭代次数=" + i);
}
if (f(x3) * f(x1) < 0) {
x2 = x3;
if (Math.abs(x1 - x3) < 0.00001) {
m = (int) (x2 * 100);
x2 = m / 100;
System.out.println("方程的根是x=" + x2 + ",迭代次数=" + i);
break;
}
}
if (f(x3) * f(x2) < 0) {
x1 = x3;// f(x3)*f(x2)
if (Math.abs(x2 - x3) < 0.00001) {
m = (int) (x1 * 100);
x1 = m / 100;
System.out.println("方程的根是x=" + x1 + ",迭代次数=" + i);
break;
}
}
}
}
}
}
分享到:
相关推荐
本实验主要探讨了一种高效查找算法——折半查找(Binary Search),并将其与线性查找等其他查找方法进行了对比。 折半查找,也称为二分查找,是一种基于排序数组的查找算法。它的基本思想是在已知目标值与数组中...
本实验主要探讨了三种基本的查找算法:顺序查找、折半查找(二分查找)和索引查找,这些算法都是在数组或集合中寻找特定元素的重要方法。下面将详细解释这三种查找算法,并结合C语言编程环境进行深入分析。 1. **...
有序数组允许采用更高效的搜索算法,比如二分查找,其时间复杂度为O(log n),这比在无序数组中进行线性搜索(O(n))要快得多。 在本部分内容的最后,书中提到了停机问题(halting problem),这是一个在计算机科学...
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
查找算法包括顺序查找、二分查找和哈希查找,其中哈希表提供了近乎常数时间的查找效率。此外,高级算法如贪心算法,通常用于求解优化问题,每次做出局部最优选择,期望全局最优;动态规划则通过将大问题分解为子问题...
一、实验目的: 熟悉各种查找算法及其复杂性,能够根据实际情况选择合适的存储结构。 二、实验要求: 1、掌握查找的基本方法。 2、提交实验报告,报告...编程分别对有序顺序表的顺序查找,二分查找算法进行实现。
常见的算法包括排序(如冒泡排序、快速排序、归并排序)、搜索(如二分查找、深度优先搜索、广度优先搜索)、图算法(如Dijkstra最短路径算法、Floyd-Warshall所有对最短路径算法)等。在C++中,我们可以利用模板类...
3. **排序与搜索算法**:书中可能会讲解各种排序算法(冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等)和搜索算法(顺序搜索、二分搜索、深度优先搜索、广度优先搜索等)。排序算法用于整理数据,而...
查找算法中,二分查找适用于有序数据,而哈希查找则提供近乎恒定的时间复杂度。递归是解决复杂问题的有效工具,如在树的遍历和动态规划问题中。 此外,C++中的STL(Standard Template Library,标准模板库)也是...
本篇文章将深入探讨两种常见的查找算法:顺序查找和二分查找,并通过实例来帮助你理解它们的工作原理和实际应用。 首先,我们来讨论顺序查找。顺序查找是最基础的查找方法,适用于任何线性数据结构,如数组或链表。...
Python搜索算法——二分查找算法详解
常见算法包括排序(如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序)、搜索(如线性搜索、二分搜索)、图算法(如深度优先搜索、广度优先搜索、最短路径算法Dijkstra、Floyd-Warshall)、动态规划等。...
本文将详细介绍非递归实现的二分查找算法,并通过一个Java程序进行示例说明。 首先,我们要明确二分查找的前提条件:待查找的数组必须是有序的,通常为升序排列。如果数组无序,那么二分查找将无法正常工作。接下来...
《数据结构——JAVA版》这本书的描述指向了Mark Allen Weiss所著的《数据结构与算法分析——Java语言描述》第2版的中文翻译版。该书在IT专业领域内被广泛认可,是学习Java语言以及数据结构与算法分析的优秀教材。书...
常见的排序算法(如冒泡排序、快速排序、归并排序、堆排序)和查找算法(如线性查找、二分查找)都有详尽的解释和实例。此外,还包括动态规划、贪心算法、回溯法等高级算法思想。算法分析不仅关注实现,更强调时间...
算法分析与设计——二分搜索 本文档将详细介绍算法分析与设计中的二分搜索算法,涵盖其基本概念、实现步骤、优缺点分析等方面,旨在帮助算法初学者深入了解二分搜索的原理和应用。 一、基本概念 二分搜索是一种...