『C言語及びプログラム設計』実践参考——二分法解方程式
1291 ワード
戻ってきます:賀先生の課程の教育のリンクのプロジェクトの要求
【項目2-二分法解方程式】二分法はコンピュータ科学において重要な方法であり、二分法を生成するアルゴリズムを探索するために用いられ、多くの場合に用いられる.二分法で方程式を解くことができる.区間[a,b]において連続してf(a)・f(b)<0の関数y=f(x)については、関数f(x)の零点が存在する区間を絶えず二分することにより、区間の2つの端点を徐々に零点に近づけ,さらに零点近似値を得る方法を二分法と呼ぶ.要求方程式f(x)=0の解を仮定し,精度を与えるξ.アルゴリズムは次のとおりです.
[参考解答]
【項目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);
}