二分法のプログラム
関数x^3-7x^2-6x+2を二分法で解くプログラムを作ったのですが、エラーが出てコンパイルできません。訂正箇所を教えて下さい。
宜しくお願い致します。
#include<stdio.h>
#include<math.h>
#define EPSILON 0.1E-5
#define TURE 1
#define FALSE 0
int kansu(int x);
void Nibunho(left,right,sol,flag);
double left,right;
int flag;
int main(void)
{
printf("区間の左端と右端は?\n");
scanf("%lf %lf",&left,&right);
flag=FALSE;
Nibunho(left,right,&root,&flag);
if(flag)
printf("解 = %e (繰り返し回数 = %d)\n",root,k);
else
{
printf("入力した範囲で解は求まりませんでした。\n");
printf("f(%e) = %e \n",root,k);
}
return 0;
}
int kansu(int x)
{
int f(double x)
f(x)=x*x*x-7.0*x*x-6.0*x+2.0;
return(f(x));
}
void Nibunho(left,right,sol,flag)
{
double left,right,*sol;
int *flag;
double a,b,c,fa,fb,fc;
k=0;
a=left;
b=right;
do
{
k++;
c=(a+b)/2.0;
fc=f(c);
fa=f(a);
fb=f(b);
if(fabs(fc)<1.0e-10)
{
a=c;
b=c;
*flag=TRUE;
}
else
{
if( (fa * fc < 0.0) || (fb * fc < 0.0) )
{
*flag = TRUE;
if( (fa*fc) < 0.0 )
b=c;
else
a=c;
}
else
{
if( fabs(fa) > fabs(fb) )
a=c;
else
b=c;
}
}
}
while((b-a)>EPSILON)
*sol=(a+b)/2.0;
}
お礼
丁寧なご回答ありがとうございました!