zoukankan      html  css  js  c++  java
  • 这是一个什么用也没有的模板

    貌似牛顿迭代快如闪电,吊打二分。

    虽然二次函数可以直接求根公式,,,但是我只是想练练牛顿迭代。

    (要是以后考数学的时候我能直接用这个程序求零点就爽了Hhhh)

    #include<bits/stdc++.h>
    #define ll long long
    #define newton 100
    using namespace std;
    double a,b,c;
    double x,y;
    
    inline bool zero(double k){
        return k>-0.00000001&&k<0.00000001;
    }
    
    inline void solve(int t){
        double k,d;
        //t==1时是求左零点,否则是右零点 
        if(t==1) x=-b/(2*a)-1;
        else x=-b/(2*a)+1;
        //迭代次数 
        int tmp=newton;
        while(tmp--){
            //算出当前点的切线方程,a*x^2+b*x+c的在(x0,y0)处的斜率就是2*a*x0+b 
            k=x*a*2+b,d=y-k*x;
            //求切线与x轴交点 
            x=-d/k;
            y=x*x*a+x*b+c;
        }
    }
    
    int main(){
        scanf("%lf%lf%lf",&a,&b,&c);
        if(b*b-4*a*c<-0.00000001){
            puts("-1");
            return 0;
        }
        
        solve(1);
        if(zero(x)) x=0;
        if(zero(y)) y=0;
        printf("%.6lf %.6lf
    ",x,y);
        
        if(!zero(b*b-4*a*c)){
            solve(2);
            if(zero(x)) x=0;
            if(zero(y)) y=0;
            printf("%.6lf %.6lf
    ",x,y);
        }
        return 0;
    }

    然后这个是求A的k次方根的

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    double a,b,c,d;
    double x,y,A;
    int k;
    
    inline void solve(){
        x=1.00,y=1-A;
        int tmp=1000;
        while(tmp--){
            printf("%lf %lf
    ",x,y);
            //求一下导 
            b=(double)k*pow(x,k-1);
            //确定点和斜率就可以确定切线方程了 
            d=y-b*x;
            //然后就可以找到和x轴的交点了 
            x=-d/b;
            //再找到y=x^k上横坐标是x的点 
            y=pow(x,k)-A;
        }
    }
    
    int main(){
        //求A的k次方根 
        scanf("%d%lf",&k,&A);
        solve();
        printf("%.6lf
    ",x);
        return 0; 
    }
  • 相关阅读:
    [ZJOI2010]基站选址
    [SDOI2008]Sue的小球
    访问计划
    奥义商店
    codeforces 809E Surprise me!
    codeforces 888G Xor-MST
    [HAOI2015]数字串拆分
    小奇分糖果
    小奇的花园
    BZOJ4711 小奇挖矿
  • 原文地址:https://www.cnblogs.com/JYYHH/p/8334312.html
Copyright © 2011-2022 走看看