牛顿迭代(开方,板子)

就是正常的牛顿迭代求开方,牛顿迭代日后更新

开方:

#include <bits/stdc++.h>
using namespace std;
const double eps=1e-9;
double sqr(double x)
{
    double k=x;
    while(k*k-x>eps)
        k=0.5*(k+x/k);
    return k;
}

int main()
{
    double x;
    while(cin>>x)
        printf("%.9f\n",sqr(x));
    return 0;
}

原文地址:https://www.cnblogs.com/lalalatianlalu/p/8543503.html

时间: 2024-10-12 15:19:06

牛顿迭代(开方,板子)的相关文章

平方开根 - 牛顿迭代(板子整理)

long long 范围内的开根 int Sqrt(int x) { if (x == 0) return 0; double last = 0; double res = 1; while (res != last) { last = res; res = (res + x / res) / 2; } return int(res); } 浮点数的开根 double fun(double x) { if (x == 0) return 0; double last = 0.0; double

求方程解,牛顿迭代和二分

牛顿迭代 #include<iostream> #include<string.h> #include<math.h> using namespace std; float f(float x){ return (pow(x,3)-5*pow(x,2)+16*x+80); } float f1(float x){ return (3*pow(x,2)-5*x+16); } int main(){ // x*x*x-5*x*x+16*x+80; float x=1,x1,

poj 3111 K Best ,二分,牛顿迭代

poj 3111  K Best 有n个物品的重量和价值分别是wi和vi.从中选出k个物品使得单位重量的价值最大. 题解: 1.二分做法 2.牛顿迭代 效率比较: 二分做法: 转换成判断是否存在选取K个物品的集合S满足下面的条件: sigma(vi) / sigma(wi) >= x   {vi∈S, wi∈S} -->   simga(vi - x*wi) >= 0 这样我们对  yi= vi - x*wi {1<=i<=n}从大到小排序,计算sum(yi) {1<=

【XSY2680】玩具谜题 NTT 牛顿迭代

题目描述 小南一共有\(n\)种不同的玩具小人,每种玩具小人的数量都可以被认为是无限大.每种玩具小人都有特定的血量,第\(i\)种玩具小人的血量就是整数\(i\).此外,每种玩具小人还有自己的攻击力,攻击力可以是任意非负整数,且两种不同的玩具小人的攻击力可以相同.我们把第\(i\)种玩具小人的血量和攻击力表示成\(a_i\)和\(b_i\). 为了让玩具小人们进行战斗,小南打算把一些小人选出来,编成队伍.一个队伍可以表示成一个由玩具小人组成的序列:\((p_1,p_2,\ldots,p_l)\)

HDU 2899 Strange fuction(牛顿迭代)

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9333    Accepted Submission(s): 6352 Problem Description Now, here is a fuction:  F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)Can you find

求平方根的算法 牛顿迭代法和二分法

牛顿法: public double sqr(double n){ double x=n,y=0.0; while (Math.abs(x-y)>0.0001){ y=x; x=(x+n/x)/2; } return x; } 设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值. 过点(x1,

【loj6538】烷基计数 加强版 加强版 Burnside引理+多项式牛顿迭代

别问我为啥突然刷了道OI题,也别问我为啥花括号不换行了... 题目描述 求含 $n$ 个碳原子的本质不同的烷基数目模 $998244353$ 的结果.$1\le n\le 10^5$ . 题解 Burnside引理+多项式牛顿迭代 不考虑同构的话,很容易想到dp方程 $\begin{cases}f_0=1\\f_i=\sum\limits_{j+k+l+1=i}f_jf_kf_l\end{cases}$ . 考虑同构,可以通过容斥原理,大力讨论一下容斥系数.一个更简单的方法是考虑Burnside

【XSY3344】连续段 DP 牛顿迭代 NTT

题目大意 对于一个长度为 \(n\) 的排列 \(p\),我们称一个区间 \([l,r]\) 是连续的当且仅当 \((\max_{l\leq i\leq r}a_i)-(\min_{l\leq i\leq r}a_i)=r-l\). 对于两个排列 \(p_1,p_2\),我们称这两个排列是等价的,当且仅当他们的长度相同且连续区间的集合相同. 给你 \(n\),对于 \(1\leq i\leq n\),所有求 \(i\) 阶排列形成的等价类个数对 \(p\) 取模的值. \(n\leq 10000

c# 开根号 牛顿迭代

double n = 1,m;               Console.WriteLine("请输入您要开根号的数:");               m = Convert.ToDouble(Console.ReadLine());               for (int i = 0; 1==1; i++)               {                   n = (n + m / n) /2;