ページ 1 / 1
二分法を用いて方程式を解きたいです。
Posted: 2011年5月04日(水) 19:13
by unauna
Visual C++ 2010で、二分法を用いて方程式を解きたいのですが、なかなかうまくいきません。
上記の方程式は、
y=x^2+a
というものです。aの値(0<a<5)は入力してもらう形です。
入力の無い方程式を解くプログラミングなら作れるのですが、これはできませんでした。
ご教授よろしくお願いします。
Re: 二分法を用いて方程式を解きたいです。
Posted: 2011年5月04日(水) 19:24
by box
unauna さんが書きました:
y=x^2+a
というものです。aの値(0<a<5)は入力してもらう形です。
実数解を持たないため、二分法では解けないと思います。大丈夫ですか?
unauna さんが書きました:
入力の無い方程式を解くプログラミングなら作れるのです
どういうコードを書かれましたか?
Re: 二分法を用いて方程式を解きたいです。
Posted: 2011年5月04日(水) 19:25
by Poco
> 入力の無い方程式を解くプログラミングなら作れるのですが、これはできませんでした。
つまり、aを可変にする方法が分からない、aが2や3なら分かる、ということですよね?
入力の無い方程式を解くプログラム(例えば、aを3とした場合)を掲載していただけませんか?
Re: 二分法を用いて方程式を解きたいです。
Posted: 2011年5月04日(水) 20:26
by unauna
>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;
}
Re: 二分法を用いて方程式を解きたいです。
Posted: 2011年5月04日(水) 20:32
by non
#define f(x)(x*x-a)
これでどうでしょう。
Re: 二分法を用いて方程式を解きたいです。
Posted: 2011年5月04日(水) 20:57
by unauna
>non様
#define f(x)(x*x-3)
をそのように変えた後、どこに何を付け加えればいいでしょうか?
Re: 二分法を用いて方程式を解きたいです。
Posted: 2011年5月04日(水) 21:08
by non
scanfでaをdo~whileの前で読み込めばいいのでは?
Re: 二分法を用いて方程式を解きたいです。
Posted: 2011年5月04日(水) 21:37
by unauna
>non様
解決しました。ありがとうございました。