求立方根

求解立方根或者是平方根甚至是N次方根,均可用牛顿迭代法求解。

牛顿迭代法如下所示:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
double Lifanggen(double src)
{
	double curx,nextx;
	double fenzi,fenmu;
	const double  precision = 0.1; /* 精度 */
	int flag = 0;
	curx = src;

	if (src == 0)
	{
		return 0;
	}
	fenzi = curx*curx*curx-src;
	fenmu = 3*curx*curx;
	do
	{
		nextx = curx-fenzi/fenmu;       /* 牛顿迭代公式 */
		if (fabs(curx-nextx) <= precision)
		{
			flag = 1;
		}
		else
		{
			flag = 0;
			curx = nextx;
		}
		fenzi = curx*curx*curx-src;
		fenmu = 3*curx*curx;
     }while(flag == 0);

	return nextx;
}
int main()
{
//	fstream in("data.txt");
	double src,dst;

	cin>>src;
	dst = Lifanggen(src);
	printf("%.1f",dst);
	cout<<endl;
	return 0;
}

  

求立方根

时间: 2024-11-04 18:13:18

求立方根的相关文章

考察数据类型的掌握---题目1166:迭代求立方根 (2009年北京航空航天大学计算机研究生机试真题)

题目描述: 立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0=x.求给定的x经过n次迭代后立方根的值. 输入: 输入有多组数据.每组一行,输入x n. 输出: 迭代n次后的立方根,double精度,保留小数点后面六位. 样例输入: 3000000 28 样例输出: 144.224957 #include "stdio.h" int main(int argc, char* argv[]) {     long n;     dou

求立方根算法--个人对立方根算法的穷举和优化

在hpe实训中心学习,遇到了求立方根的题目,在此做一下算法笔记, 分析过程: 数n的立方根就是n=i*i**i;所以我们会优先想到一下方法. static double g32(double n){ //简易版 double i = 0, k = 0.0005f; if (n < 0) { //输入负数判断 k /= -1; } do{ i+=k; }while(abs(i*i*i)<abs(n)); //abs为自己写的求绝对值方法 return i; } 可以看出此方法的求解精度为0.00

Exercise 1.8 牛顿法求立方根

题目: Newton's method for cube roots is based on the fact that if y is an approximation to the cube root of x, then a better approximation is given by the value: (r/(y*y)+2*y)/3. Use this formula to implement a cube-root procedure analogous to the squa

利用牛顿迭代法求平方根

求n的平方根,先如果一推測值X0 = 1,然后依据下面公式求出X1,再将X1代入公式右边,继续求出X2…通过有效次迭代后就可以求出n的平方根,Xk+1 先让我们来验证下这个巧妙的方法准确性,来算下2的平方根 (Computed by Mathomatic) 1-> x_new = ( x_old + y/x_old )/2 y (x_old + -----) x_old #1: x_new = --------------- 2 1-> calculate x_old 1 Enter y: 2

手动开平方和立方

一.序言 初中的时候数学老师教我们手动开平方,当时觉着很震惊,验证了好几遍,发现方法真的很牛!如今上了研究生,回想起以前手动开平方的方法都已经很模糊了,今天查了下百度,才发现,这个方法出自<九章算术>!原来中国几千年前就已经找到这种方法了! 二.手动开平方 九章算术上是如此描述的: 开方术曰: 置积为实.借一算.步之.超一等.议所得.以一乘所借一算为法.而以除.除已.倍法为定法.其复除.折法而下.复置借算步之如初.以复议一乘之.所得副.以加定法.以除.以所得副从定法.复除折下如前. 若开之不尽

【自动语音识别课程】第二课 语音信号分析

[传送门] [自动语音识别课程]第一课 统计语音识别介绍 原文地址:http://blog.csdn.net/joey_su/article/details/36414877 转载请注明出处,欢迎交流. 概述 针对ASR的语音信号分析 特征 频谱分析 倒谱分析 标准特征:MFCC和PLP分析 动态特征 第一课的结尾提到了语音识别的框图,下图展示了信号分析技术在语音识别系统中的位置: 我们先来认识下语音的产生过程: 语音是在发音器官和声道共同作用下产生的.说话时,声带振动发出具有一定周期特性(基音

Oracle/Hive/Impala SQL比较(5)

5 Function 指数据库内置的function,不讨论UDF.另外,操作符都不比较了,区别不大. 5.1 数学函数 功能 Oracle Hive Impala ABS 绝对值,有 有 有 SIN/SINH/ASIN/COS/COSH/ACOS/TAN/TANH/ATAN/ATAN2 三角函数 其中ATAN2接受两个参数(二维平面中的坐标) 没有SINH/COSH/TANH/ATAN2 同hive BITAND 按位与,有 CEIL 天花板值,有 有,还有个别名CEILING 有,同hive

九度OJ&amp;北京航空航天大学2009机试题题解

题目一.jobdu1166:迭代求立方根 http://ac.jobdu.com/problem.php?pid=1166 题目描述: 立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0=x.求给定的x经过n次迭代后立方根的值. 输入: 输入有多组数据. 每组一行,输入x n. 输出: 迭代n次后的立方根,double精度,保留小数点后面六位. 样例输入: 3000000 28 样例输出: 144.224957 题目分析: 递归或者递推,个人

单例模式详解及java常用类

[单例模式] 确保某一个类,只能产生一个实例. 设计思路: ====将构造函数私有化,确保类外部,不能使用new关键字自行创建对象. ====在类内部实例化一个对象,并通过静态方法返回. (1)饿汉式单例模式 优点:线程安全 缺点:在类加载的时候,就实例化对象,提前占用系统资源 1 class Dog{ 2 3 private Dog(){ 4 5 System.out.println("小蠢狗"); 6 } 7 8 private static Dog cutedog=new Dog