質問編集履歴

2 b

EUROPEAN

EUROPEAN score 17

2018/09/27 13:45  投稿

f(x) = x^ 3 − 2 = 0 を二分法で解きたい
### 前提・実現したいこと
現在プログラミング言語について学習しています。まだまだ初心者で分からないことが多すぎて困っています。そこで二分法を用いたプログラムの課題を与えられたのですがどうプログラムを変更していいのかわかりません、詳しいかたお力添えお願いいたします。
問題.方程式f(x) = x^ 3 − 2 = 0 を二分法で解きたい。
### 該当のソースコード
```ここに言語名を入力
/* bisection.h */
#include <stdio.h>
#include <math.h>
#define EPS  1.0e-10
#define K_MAX    100
void input(double *pa, double *pb);
double f(double x);
double bisection(double a, double b);
void show_each_step(double a, double b, double c, int i);
int main(void) {
   double a, b, ans;
   input(&a,&b);
   ans = bisection(a,b);
   printf("f(%.16f) = %.16f\n",ans,f(ans));
   return 0;
}
void input(double *pa, double *pb) {
   double tmp;
   do {
       printf("input a: ");
       scanf("%lf",pa);
       printf("input b: ");
       scanf("%lf",pb);
   } while (f(*pa) * f(*pb) > 0.0);
   if (*pa > *pb) {
       tmp = *pa;
       *pa = *pb;
       *pb = tmp;
   }
}
double f(double x) {
   return (x * x - 2);
}
double bisection(double a, double b) {
   double c;
   int i;
   /*step3*/
   /* to be provided */
   for (i = 1; i <= K_MAX; i++) {
       c = (a + b) / 2.0;
       show_each_step(a,b,c,i);
       /*step4*/
       /*step4の後半,step5*/
       /* to be provided */
   }
   return c;
}
int dgtof(int m) {
   int ans = 1;
   while (m >= 10) {
       ans++;
       m = m / 10;
   }
   return ans;
}
void show_each_step(double a, double b, double c, int i) {
   int dgt = dgtof(K_MAX);
   printf("<%*d> [ %.16f, %.16f ], ",dgt,i,a,b);
   printf("f(%.16f) = % .16f\n",(a+b)/2.0,f(c));
}
```
### 補足情報(FW/ツールのバージョンなど)
/* to be provided */となっている部分を変更しなければなりません。
/*step3*/はもし |f(a)| < ε ならば a を解として終了.また,もし
|f(b)| < ε ならば b を解として終了.
/*step4*/はc = a+b/2 とし,もし |f(c)| < ε ならば c を解として終了です
/*step4*/はc = a+b/2 とし,もし |f(c)| < ε ならば c を解として終了.
step5はf(a)f(c) > 0 ならば a = c とし,そうでなければ b = c として
Step4 に戻る.
  • C

    6574 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • プログラミング言語

    1237 questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

1 文法の修正

EUROPEAN

EUROPEAN score 17

2018/09/27 13:32  投稿

f(x) = x^ 3 − 2 = 0 を二分法で解きたい
### 前提・実現したいこと
現在プログラミング言語について学習しています。まだまだ初心者で分からないことが多すぎて困っています。そこで二分法を用いたプログラムの課題を与えられたのですがどうプログラムを変更していいのかわかりません、詳しいかたお力添えお願いいたします。
問題.方程式f(x) = x^ 3 − 2 = 0 を二分法で解きたい。
### 該当のソースコード
```ここに言語名を入力
/* bisection.h */
#include <stdio.h>
#include <math.h>
#define EPS  1.0e-10
#define K_MAX    100
void input(double *pa, double *pb);
double f(double x);
double bisection(double a, double b);
void show_each_step(double a, double b, double c, int i);
int main(void) {
   double a, b, ans;
   input(&a,&b);
   ans = bisection(a,b);
   printf("f(%.16f) = %.16f\n",ans,f(ans));
   return 0;
}
void input(double *pa, double *pb) {
   double tmp;
   do {
       printf("input a: ");
       scanf("%lf",pa);
       printf("input b: ");
       scanf("%lf",pb);
   } while (f(*pa) * f(*pb) > 0.0);
   if (*pa > *pb) {
       tmp = *pa;
       *pa = *pb;
       *pb = tmp;
   }
}
double f(double x) {
   return (x * x - 2);
}
double bisection(double a, double b) {
   double c;
   int i;
   /*step3*/
   /* to be provided */
   for (i = 1; i <= K_MAX; i++) {
       c = (a + b) / 2.0;
       show_each_step(a,b,c,i);
       /*step4*/  
       /* to be provided */
   }
   return c;
}
int dgtof(int m) {
   int ans = 1;
   while (m >= 10) {
       ans++;
       m = m / 10;
   }
   return ans;
}
void show_each_step(double a, double b, double c, int i) {
   int dgt = dgtof(K_MAX);
   printf("<%*d> [ %.16f, %.16f ], ",dgt,i,a,b);
   printf("f(%.16f) = % .16f\n",(a+b)/2.0,f(c));
}
```
### 補足情報(FW/ツールのバージョンなど)
/* to be provided */となっている部分を変更しなければなりません。
/* to be provided */となっている部分を変更しなければなりません。
/*step3*/はもし |f(a)| < ε ならば a を解として終了.また,もし
|f(b)| < ε ならば b を解として終了.
/*step4*/はc = a+b/2 とし,もし |f(c)| < ε ならば c を解として終了です
  • C

    6574 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • プログラミング言語

    1237 questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る