ページ 11

2分法を使ってf(x)=0の解を求めるプログラムについて、間違っている箇所がわからないので訂正お願いします。

Posted: 2016年6月23日(木) 21:06
by yyy
不適切箇所の改善よろしくお願いします。

#include <stdio.h>

int main()
{
double eps=0.00001;
printf("%lf %lf\n",(-2,0,eps),(0,2,eps));
double f(double x)
{
return x*x*x-4x*x+x+12;
}
double (double x1,double x2,double eps)
{
double x;
while(x2-x1>=eps)
{
x=(x1+x2)/2.0;
if(f(x1)*f(x)>0.0)
{
x1=x;
}
else
{
x2=x;
}
}
return (x1+x2)/2.0
}

Re: 2分法を使ってf(x)=0の解を求めるプログラムについて、間違っている箇所がわからないので訂正お願いします。

Posted: 2016年6月23日(木) 21:55
by box
そもそも、f(x)は何ですか?
yyy さんが書きました:不適切箇所の改善よろしくお願いします。

コード:

int main()
main関数の範囲はどこからどこまでですか?
yyy さんが書きました:

コード:

  printf("%lf %lf\n",(-2,0,eps),(0,2,eps));
余分な-2, 0, 0, 2を付けている意図は何ですか?
yyy さんが書きました:

コード:

double (double x1,double x2,double eps)
関数名は何ですか?
yyy さんが書きました:

コード:

  return (x1+x2)/2.0
セミコロンがありません。

二分法の前に、C言語の文法をやり直す方がいいような気がします。

Re: 2分法を使ってf(x)=0の解を求めるプログラムについて、間違っている箇所がわからないので訂正お願いします。

Posted: 2016年6月23日(木) 21:59
by みけCAT
yyy さんが書きました:不適切箇所の改善よろしくお願いします。
まずソースコードをcodeタグで囲まずに貼り付けているのが不適切です。
残念ながら、このサイトではStack Overflowと違って他人の投稿を編集することができないので、改善はできません。

Re: 2分法を使ってf(x)=0の解を求めるプログラムについて、間違っている箇所がわからないので訂正お願いします。

Posted: 2016年6月23日(木) 22:01
by みけCAT
C言語では、関数は使う前に定義または宣言をしなければいけません。【追記】よく見たら、今回はこれに違反している場所は無いですね。
また、標準規格では処理系依存なものを使わない場合、int main()ではなくint main(void) (またはint main(int argc, char* argv[])および等価なもの)としなければいけません。

Re: 2分法を使ってf(x)=0の解を求めるプログラムについて、間違っている箇所がわからないので訂正お願いします。

Posted: 2016年6月23日(木) 22:06
by みけCAT
yyy さんが書きました:return x*x*x-4x*x+x+12;
4xは不正なトークンです。