java求解立方根_java 利用牛頓迭代法求平方根和立方根,不使用Math類
最近遇到一個題目,就是不使用Math方法去求解一個數的立方根和平方根,搜索了好多,現在記錄下自己掌握的方法。
首先,在編碼之前,我們得熟悉 什么是牛頓迭代法。下面我為大家找了兩處鏈接。大家可以去看一下,然后我再說我的程序編寫,如果只看程序,不熟悉這個算法的人是看不懂的。
下面 我來說說 我所理解的: 經過以上參考 以立方根舉例 我們求a的立方根 首先列式 a=x^3 (a等於x的3次方) 。根據牛頓迭代法 我們把它轉成 f(x) = x^3-a; 那么 f'(x) =3*x^2;
則 x1 = x0-f(x0)/f'(x0); (我們求次方就是:x1 = x0 -(x0^3-a)/(3*x0^2); 化簡可得 :x1 = (2*x0+a/x0^2)/3。) x0怎么來的呢? 我們可以先假設一個x0 = a; 然后計算得出的x1-x0是否小到極致。例如 x1-x0<0.0000000001時,x1就是那個立方根。
我來寫一個總的例子: 求6的平方根
1. 6 = x^3;
2. f(x) = x^3-6;
3.f'(x) = 3*x^2;
4.假設答案是x0=6;
5 . 求一波 x1 = x0-f(x0)/f'(x0); 下一步:x1 = x0 -(x0^3-a)/(3*x0^2);下一步:x1 = (2*x0+a/x0^2)/3;(這一步式子我用在了代碼中)
6. 解得 x1 = 4.055555555555555;(小數位多吧,用計算機算又不是你算)
7.剛才猜的答案x0是6 ,x0-x1>0.0000000001 (精度自己設) 了, 不夠准確啊這答案,怎么辦 木有事
8. 讓 x0=4.055555555555555; 再求一遍x1
9。此時 求得x1=2.825302502727911; x0-x1>0.0000000001 還是不准確 繼續求
10。。。。不斷求 終於 x0-x1<0.0000000001,結束 x1就是最終答案。
說了這么多 上代碼:
import java.util.Scanner;
/*
* 牛頓迭代法
*
* 求解立方根
*計算一個數字的立方根,不使用Math方法
*/
public class ClassTest09 {
public static void main(String[] args) {
System.out.println("請輸入一個數字");
Scanner sc= new Scanner(System.in);
double a= sc.nextDouble();
double num =getLiFangGen(a);
System.out.println(a+"的立方根為:"+num);
double num1 = getPingFangGen(a);
System.out.println(a+"的平方根為:"+num1);
}
private static double getLiFangGen(double num){
if(num==0){
return 0;
}
double num1 = num;
double num2 = ((2*num1)+(num/(num1*num1)))/3;
System.out.println(num2);
while(num1-num2>0.0000001 || num1-num2
num1 = num2;
num2 = ((2*num1)+(num/(num1*num1)))/3;
System.out.println(num2);
}
return num2;
}
private static double getPingFangGen(double num){
if(num==0){
return 0;
}
if(num<0){
System.out.println(num+"沒有平方根");
System.exit(0);
}
double num1 = num;
double num2 = (num1+(num/num1))/2;
while(num1-num2>0.0000001){
num1 = num2;
num2 = (num1+(num/num1))/2;
}
return num2;
}
}
java求解立方根_java 利用牛頓迭代法求平方根和立方根,不使用Math類相关推荐
- java bigdecimal 开方_JAVA BigDecimal使用牛顿迭代法计算平方根(开方)
Java中虽然可以用Math.sqrt获得某值的平方根,但是该值必须是double类型的.可是有些项目对数值精度要求比较高,我们一般会用BigDecimal来存储,BigDecimal并不提供计算平方 ...
- 牛顿迭代法求平方根、立方根
牛顿迭代公式 平方根迭代公式:a(n+1)=( a(n) + num/a(n) )/2,a(0) 初始化为1: 立方根迭代公式:a(n+1)=( 2a(n) + num/( (a(n))^2 ) )/ ...
- 牛顿迭代法求平方根、立方根(计算一个数字的平方根、立方根,不使用库函数)
求Y的平方根 公式 C++代码 #include <iostream> #include <cmath> using namespace std; double getSqua ...
- python求解立方根,python环境下使用牛顿迭代法求任意实数立方根
https://images1.tqwba.com/20200918/xx0b50i53j4 推导过程如下: 一般牛顿迭代法的图名都叫做Newton-Raphson.也就是牛顿-拉弗森法 二.使用牛顿 ...
- 141. Sqrt(x)【牛顿迭代法求平方根 by java】
Description Implement int sqrt(int x). Compute and return the square root of x. Example sqrt(3) = 1 ...
- 牛顿迭代法求平方根原理
牛顿迭代法可以求解n次方的根,但这里只讨论用它来求平方根. 牛顿迭代法求平方根过程 Java代码实现 /*** 求一个数的平方根* @param number* @return*/public sta ...
- 【算法】牛顿迭代法求平方根的原理和误差分析
前言 在<算法(第四版)>中的P23页,给出了经典的利用牛顿迭代法求平方根的算法,牛顿迭代法在数值计算中应用十分广泛,但是在看书中的代码时,我最困惑的是其中对收敛条件的判断,经过查阅资料和 ...
- 迭代公式求平方根c语言程序设计,迭代法求平方根C语言实验报告
与<迭代法求平方根C语言实验报告>相关的范文 西安交通大学实验报告 课程_ c++ __ 实验名称_迭代公式求平方根_ 第1页 共2页 系 别__ 土木工程 ____ 实 验 日 期 20 ...
- 平方根和立方根怎么用计算机,用计算器探究平方根和立方根
用计算器探究平方根和立方根 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 用计算器探究平方根和立方根人教版<义务教育教科书· ...
最新文章
- WPF 3D中多个模型如何设置某一个在最前?
- 网易云信入选《2021 年浙江省首版次软件产品应用推广指导目录》
- Nacos与Eureka的区别有哪些?
- 【qduoj - 1121】小明的贪心题(Dijkstra最短路 + 最短路条数)
- 字符串上的简单动态规划
- mysql docker还是rds_容器化RDS:计算存储分离还是本地存储?
- for相关 java_用java编写一个程序,求2到100之间的偶数和(使用for循环)
- 2018.12.31 NOIP训练 czy的后宫5(树形dp)
- VS2008文档自动生成
- 文本前后空格去除工具
- 判断一个树是否是平衡二叉树
- java基于JSP+Servlet的员工绩效考核系统
- t-SNE非线性降维
- android电商平台,基于Android的电商平台通用客户端的设计与实现
- mysql 分组统计 及 统计结果横向展示
- Nature子刊:AI技术从零开始设计具有生物活性的蛋白质
- 视频编解码标准情况概述
- 玩一玩Android下载框架
- 【路径规划】基于蚁群算法求解运钞车路径规划VRPSD问题matlab代码
- 【手把手带你Godot游戏开发】出道即巅峰,先做个盈利千万的小项目