ページ 11

3次関数の問題

Posted: 2009年10月31日(土) 01:37
by MASAMI
数学の3次関数 y = 3 * x * x * x - 0.2 * x * x + 0.3 * x -
0.7 に関し、xの定義域 [-1.5 : 1.5] において、xを0.1刻みで増加させてyの値を求めて小数点以5桁までを表示するプログラムを作成せよという問題がわかりません。

特に定義域をどうするかがわかりません。

どなたか力添えお願いします。

Re:3次関数の問題

Posted: 2009年10月31日(土) 04:32
by Ma
for(double x = -1.5; x < 1.5; x += 0.5){
		double value = 3 * x * x * x - 0.2 * x * x + 0.3 * x - 0.7;
		printf("%.5f\n",value);
	}
こんなんでいいのかな?

Re:3次関数の問題

Posted: 2009年10月31日(土) 07:23
by box
> xの定義域 [-1.5 : 1.5] において、xを0.1刻みで増加

整数値の-15から+15までを1刻みで増加させるようなfor文を作ります。
その中で、「-15から+15まで1刻みで増加」する数値を
10で割ったものをxとすれば、より正確な結果が出ることでしょう。

for文の制御変数にdouble型を使うと、浮動小数点数が含む誤差の関係で
-1.5~+1.5の範囲を0.1ごとに「正確に」増加させることができるかどうかは
疑問です。

Re:3次関数の問題

Posted: 2009年10月31日(土) 20:12
by Hermit
>その中で、「-15から+15まで1刻みで増加」する数値を
>10で割ったものをxとすれば、より正確な結果が出ることでしょう。
やってみて、小数部と整数部に分けて表示しようとして
答えが、-0.????? とかの表示が面倒でした(^^;

Re:3次関数の問題

Posted: 2009年10月31日(土) 20:19
by box
> やってみて、小数部と整数部に分けて表示しようとして
> 答えが、-0.????? とかの表示が面倒でした(^^;

小数部と整数部に分けるとは、何のことですか?

-15から+15まで1ずつ増加する変数をfor文の制御用に使います。
for文のループの中で、その制御変数を10で割った値をxとします。
そのxをくだんの式に当てはめて"%.5f"の書式で出力するだけです。