c语言程序设计中常用计算方法(未完)

上完课过来整理一下笔记

1、穷举法

//百钱买百鸡问题(简化后)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,k;
    for(i=0; i<20; i++)
    {
        for(j=0; j<34; j++)
        {
            k=100-i-j;
            if(i*15+j*9+k==300)
            {
                printf("%d %d %d\n",i,j,k);
            }
        }
    }
    return 0;
}

2、迭代法

//求解一元三次方程指定范围的根
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double biroot(double,double);
double foo(double);

int main()
{
        double x1,x2;
        do
        {
            scanf("%lf%lf",&x1,&x2);
        }while(foo(x1)*foo(x2)>0);

    printf("%.2f\n",biroot(x1,x2));
    return 0;
}
double biroot(double x1,double x2)
{
    double ret;
    do
    {
        ret=(x1+x2)/2;
        if(foo(ret)*foo(x1)>0)
        {
            x1=ret;
        }
        else
        {
            x2=ret;
        }
    }while(fabs(x1-x2)>=1e-7);
    ret=(x1+x2)/2;
    return ret;
}
double foo(double x)
{
    return(x*x*x-7.7*x*x+19.2*x-15.3);
}

3、牛顿迭代(牛顿切线法)

//求解一元三次方程在1.0附近的根

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

double ntroot(double);
double foo(double);
double dfoo(double);

int main()
{
    double x0;
    scanf("%lf",&x0);
    printf("%.2f\n",ntroot(x0));
    return 0;
}
double ntroot(double x)
{
    double x0;
    double f,df;
    do
    {
        x0=x;
        f=foo(x0);
        df=dfoo(x0);
        x=x0-f/df;
    }
    while(fabs(x-x0)>=1e-7);
    return x;
}
double foo(double x)
{
    return (x*x*x-7.7*x*x+19.2*x-15.3);
}
double dfoo(double x)
{
    return(3.0*x*x-15.4*x+19.2);
}

4、递推法(归纳法)

//累加和累乘

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

double getSum(int);

int main()
{
int n;
scanf("%d",&n);
    printf("%f\n",getSum(n));
    return 0;
}
double getSum(int n)
{
    
}

猜你喜欢

转载自www.cnblogs.com/calm-blogme/p/12020570.html