T015 迭代求根

#include<stdio.h>
#include<math.h>

int main()
{
    double a, x0, x1;
    scanf("%lf", &a);
    if(a<0) printf("Error\n");
    else
    {
        x0=a/2;//设初值
        x1=(x0+a/x0)/2;
        do
        {
            x0=x1;
            x1=(x0+a/x0)/2;
        }   while(fabs(x0-x1)>1e-3);
    }
    printf("%.5lf\n", x1);
    return 0;
} 
时间: 2024-09-29 18:21:42

T015 迭代求根的相关文章

关于方程求根的解决方案

对于方程求根主要的思想主要采取迭代的思想,通过条件判断,循环执行直到满足条件以后直接跳出循环输出 下面以x-cos(x)=0:为例  采用do-while 循环,输出Root: #include "stdio.h"#include "math.h"#include "stdio.h"double fun(){ double x1=0,x0; do { x0=x1; x1=cos(x0); } while(fabs(x0-x1)>=1e-6)

R语言求根

求根是数值计算的一个基本问题,一般采用的都是迭代算法求解,主要有不动点迭代法.牛顿-拉富生算法.割线法和二分法. 不动点迭代法 所谓的不动点是指x=f(x)的那些点,而所谓的不懂点迭代法是指将原方程化为x=f(x)形式之后,下一步所用的x值为这一步的f(x),这样的话就可以一直逼近我们需         要的x,即方程的根,但是这种方法可能不会收敛到方程的根,随着初始值选定的大小,可能会有发散的情况,因此需要谨慎使用. ###不动点迭代法 func1 <- function(x){return(

方程求根——二分法

二分法求根主要应用了区间套定理,这一算法实现简单且结果也迭代的较好,但对于复杂函数其结果不理想 1.代码 %%二分法求根 %%f为函数表达式,interval0为初始区间,epsilon为控制精度 function RD = Roots_dichotomy(f,interval0,epsilon) x_low = interval0(1);x_up = interval0(2);x_ave = (x_low+x_up)/2; %%作图 t = x_low:(x_up-x_low)/1000:x_

[LeetCode] Sum Root to Leaf Numbers 求根到叶节点数字之和

Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number. An example is the root-to-leaf path 1->2->3 which represents the number 123. Find the total sum of all root-to-leaf numbers. For example, 1 / 2 3 T

考察数据类型的掌握---题目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

OJ刷题之《牛顿迭代法求根》

题目描述 用牛顿迭代法求根.方程为ax3+bx2+cx+d=0.系数a,b,c,d的值一次为1,2,3,4,由主函数输入.求x在1附近的一个实根.求出根后由主函数输出.结果保留两位小数. 输入 系数a,b,c,d的值 输出 x在1附近的一个实根 样例输入 1 2 3 4 样例输出 -1.65 提示 主函数已给定如下,提交时不需要包含下述主函数 /* C代码 */ int main() { double solut(double ,double ,double ,double ); double

链表实现二分法求根

#include<iostream>#include<iomanip>#include<cmath>using namespace std;class poly{public: double c; int e; poly*next;};poly*input();double f(poly*head,double x);double root(poly*head,double a, double b);int main(){ poly*head; double a, b;

方程式求根

1.solve() 求根 syms x;              %定义x为symbol,即所求的根为x y=x*sin(x)-x; solve(y,x);          %求 y=xsinx-x的根x %   x-2y=5 和 x+y=6 syms x y; eq1=x-2*y-5; eq2=x+y-6; A=solve(eq1,eq2,x,y);    %求二元一次方程的根x y 2.diff() 求函数的微分 syms x y=4*x.^5; yprime=diff(y);    %

计算方法-C语言二分法求根

问题: 给出方程f(x) = x^3+10x-20,求该方程在(1,2)上的根,其精度不小于10^-4 看似很简单的一个小问题,其实有很有细节值得注意,先给出代码 方法一: #include <stdio.h> #include <math.h> double f(double x) { return x*x*x+10*x-20; } int main() { double l,r,mid,ans; l = 1; r = 2; while(1) { mid = (l+r)/2; d