二分法を用いて方程式を解きたいです。

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

二分法を用いて方程式を解きたいです。

#1

投稿記事 by unauna » 14年前

Visual C++ 2010で、二分法を用いて方程式を解きたいのですが、なかなかうまくいきません。

上記の方程式は、

y=x^2+a

というものです。aの値(0<a<5)は入力してもらう形です。

入力の無い方程式を解くプログラミングなら作れるのですが、これはできませんでした。

ご教授よろしくお願いします。

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

Re: 二分法を用いて方程式を解きたいです。

#2

投稿記事 by box » 14年前

unauna さんが書きました: y=x^2+a
というものです。aの値(0<a<5)は入力してもらう形です。
実数解を持たないため、二分法では解けないと思います。大丈夫ですか?
unauna さんが書きました: 入力の無い方程式を解くプログラミングなら作れるのです
どういうコードを書かれましたか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

Poco
記事: 161
登録日時: 14年前

Re: 二分法を用いて方程式を解きたいです。

#3

投稿記事 by Poco » 14年前

> 入力の無い方程式を解くプログラミングなら作れるのですが、これはできませんでした。

つまり、aを可変にする方法が分からない、aが2や3なら分かる、ということですよね?
入力の無い方程式を解くプログラム(例えば、aを3とした場合)を掲載していただけませんか?

unauna

Re: 二分法を用いて方程式を解きたいです。

#4

投稿記事 by unauna » 14年前

>box様

質問内容に間違いがありました。
y=-x^2+a
です。

>ぽこ様

その通りです。

このようなプログラミングで出来ました。

#include <stdio.h>
#include <math.h>
#define f(x)(x*x-3)
int main(void)
{
int i=0,a;
double m,Xmax=3.0,Xmin=0.0,eps=1.0e-3;
do{
++i;
m=(Xmax+Xmin)/2;
if (f(m)>0)
{
Xmax = m;
}
else
{
Xmin = m;
}
}
while (fabs(Xmax-Xmin)>eps);
printf("%f,%d\n",m,i);
return 0;
}

non
記事: 1097
登録日時: 14年前

Re: 二分法を用いて方程式を解きたいです。

#5

投稿記事 by non » 14年前

#define f(x)(x*x-a)
これでどうでしょう。
non

unauna

Re: 二分法を用いて方程式を解きたいです。

#6

投稿記事 by unauna » 14年前

>non様

#define f(x)(x*x-3)
をそのように変えた後、どこに何を付け加えればいいでしょうか?

non
記事: 1097
登録日時: 14年前

Re: 二分法を用いて方程式を解きたいです。

#7

投稿記事 by non » 14年前

scanfでaをdo~whileの前で読み込めばいいのでは?
non

unauna

Re: 二分法を用いて方程式を解きたいです。

#8

投稿記事 by unauna » 14年前

>non様

解決しました。ありがとうございました。

閉鎖

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