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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yyy

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

#1

投稿記事 by yyy » 9年前

不適切箇所の改善よろしくお願いします。

#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
}

box
記事: 2002
登録日時: 14年前

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

#2

投稿記事 by box » 9年前

そもそも、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言語の文法をやり直す方がいいような気がします。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#3

投稿記事 by みけCAT » 9年前

yyy さんが書きました:不適切箇所の改善よろしくお願いします。
まずソースコードをcodeタグで囲まずに貼り付けているのが不適切です。
残念ながら、このサイトではStack Overflowと違って他人の投稿を編集することができないので、改善はできません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#4

投稿記事 by みけCAT » 9年前

C言語では、関数は使う前に定義または宣言をしなければいけません。【追記】よく見たら、今回はこれに違反している場所は無いですね。
また、標準規格では処理系依存なものを使わない場合、int main()ではなくint main(void) (またはint main(int argc, char* argv[])および等価なもの)としなければいけません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#5

投稿記事 by みけCAT » 9年前

yyy さんが書きました:return x*x*x-4x*x+x+12;
4xは不正なトークンです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る