C言語の3次方程式
Posted: 2013年9月16日(月) 12:08
A.
#include <stdio.h>
main()
{
float xa,xb,xc;
float ya,yb,yc;
float initial_delta,dx;
printf(" Xa Xc Xb 誤差 Ya Yc Yb\n");
initial_delta=1.0;
xa = 0.0;
xb = xa + initial_delta;
dx = initial_delta / 2.0;
xc = xa + dx;
ya = xa*xa*xa - 0.5;
yb = xb*xb*xb - 0.5;
yc = xc*xc*xc - 0.5;
printf("%10.7f %10.7f %10.7f %10.7f %10.7f %10.7f %10.7f\n",xa,xc,xb,dx,ya,yc,yb);
/* ----- ここから ----- */
if ( ( ya * yc ) < 0 ) {
xb = xc;
} else {
xa = xc;
}
dx /= 2.0;
xc = xa + dx;
ya = xa*xa*xa - 0.5;
yb = xb*xb*xb - 0.5;
yc = xc*xc*xc - 0.5;
printf("%10.7f %10.7f %10.7f %10.7f %10.7f %10.7f %10.7f\n",xa,xc,xb,dx,ya,yc,yb);
/* ----- ここまでをコピーする ----- */
}
B.Aで作ったプログラムを,while あるいは for 文による繰り返し処理を使って,同じ文がなるべくプログラム中に重複して出てこないように修正し,解を誤差 0.0001 以内で求めよ.その際,同じ意味を持つ定数がなるべく重複して出てこないようにする等,わかり易く効率的なプログラムにする修正も含めるものとする(スペースを適当に入れるだけでもわかり易さは格段に向上する).出力の形式は自由で良いが,見やすいものにすること.さらに,プログラムにはある程度のコメントを入れること.元から入っているコメントは削除して構わない.
C.Bで作ったプログラムを参考にし,「0.83X^3+4.55x^2+5.19x+2.45=0」の実数解を,誤差 0.00002 以内で求めるプログラムを作れ(保存するディレクトリは ~/win_home 以下の任意のディレクトリとし,ファイル名は各自で適当に決めること).出力の形式は自由で良いが,見やすい出力とすること.プログラムにはある程度のコメントを入れること.
という大学の課題が出たのですが、さっぱりです。C言語の授業5回目のレポートで10時間粘ってみたのですが、何にも解決出来なかったため、ここで質問させて頂きます。どなたか助言をして頂けると助かります。
#include <stdio.h>
main()
{
float xa,xb,xc;
float ya,yb,yc;
float initial_delta,dx;
printf(" Xa Xc Xb 誤差 Ya Yc Yb\n");
initial_delta=1.0;
xa = 0.0;
xb = xa + initial_delta;
dx = initial_delta / 2.0;
xc = xa + dx;
ya = xa*xa*xa - 0.5;
yb = xb*xb*xb - 0.5;
yc = xc*xc*xc - 0.5;
printf("%10.7f %10.7f %10.7f %10.7f %10.7f %10.7f %10.7f\n",xa,xc,xb,dx,ya,yc,yb);
/* ----- ここから ----- */
if ( ( ya * yc ) < 0 ) {
xb = xc;
} else {
xa = xc;
}
dx /= 2.0;
xc = xa + dx;
ya = xa*xa*xa - 0.5;
yb = xb*xb*xb - 0.5;
yc = xc*xc*xc - 0.5;
printf("%10.7f %10.7f %10.7f %10.7f %10.7f %10.7f %10.7f\n",xa,xc,xb,dx,ya,yc,yb);
/* ----- ここまでをコピーする ----- */
}
B.Aで作ったプログラムを,while あるいは for 文による繰り返し処理を使って,同じ文がなるべくプログラム中に重複して出てこないように修正し,解を誤差 0.0001 以内で求めよ.その際,同じ意味を持つ定数がなるべく重複して出てこないようにする等,わかり易く効率的なプログラムにする修正も含めるものとする(スペースを適当に入れるだけでもわかり易さは格段に向上する).出力の形式は自由で良いが,見やすいものにすること.さらに,プログラムにはある程度のコメントを入れること.元から入っているコメントは削除して構わない.
C.Bで作ったプログラムを参考にし,「0.83X^3+4.55x^2+5.19x+2.45=0」の実数解を,誤差 0.00002 以内で求めるプログラムを作れ(保存するディレクトリは ~/win_home 以下の任意のディレクトリとし,ファイル名は各自で適当に決めること).出力の形式は自由で良いが,見やすい出力とすること.プログラムにはある程度のコメントを入れること.
という大学の課題が出たのですが、さっぱりです。C言語の授業5回目のレポートで10時間粘ってみたのですが、何にも解決出来なかったため、ここで質問させて頂きます。どなたか助言をして頂けると助かります。