『C言語及びプログラム設計』実践参考——二分法解方程式

1291 ワード

戻ってきます:賀先生の課程の教育のリンクのプロジェクトの要求
【項目2-二分法解方程式】二分法はコンピュータ科学において重要な方法であり、二分法を生成するアルゴリズムを探索するために用いられ、多くの場合に用いられる.二分法で方程式を解くことができる.区間[a,b]において連続してf(a)・f(b)<0の関数y=f(x)については、関数f(x)の零点が存在する区間を絶えず二分することにより、区間の2つの端点を徐々に零点に近づけ,さらに零点近似値を得る方法を二分法と呼ぶ.要求方程式f(x)=0の解を仮定し,精度を与えるξ.アルゴリズムは次のとおりです.
1     [a,b],  f(a)·f(b)<0
2    (a,b)   c
3   
(1)  f(a)·f(c)<0,  b=c;
(2)  f(c)·f(b)<0,  a=c.
4   f(c)       ξ:  ┃f(c)┃<ξ, x=c   f(x)        ,    2-4.
上記のアルゴリズムに従って、プログラムは方程式f(x)=2 x^3-5 x^2+3 x-6=0を解いて、0.00001まで正確であることを求めます
[参考解答]
#include <stdio.h>
double f(double); //f(x)  
int main()
{
    double a,b,c;
    do
    {
        printf("       x0 x1:");
        scanf("%lf %lf", &a, &b); //    a b  ,           

    }
    while(f(a)*f(b)>=0); //            ,    [a, b]    
            printf(" [%.2f, %.2f] ,       
",a, b); do { c=(a+b)/2; if(f(a)*f(c)<0) // 0 X { b=c; } else { a=c; } } while((f(c)>1e-5)||(f(c)<-1e-5));// c 0 printf(" :%.5f
",c); return 0; } double f(double x) { return(3*x*x*x-5*x*x+3*x-6); }