微分係数を求めるプログラムを作っています

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

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 微分係数を求めるプログラムを作っています

Re: 微分係数を求めるプログラムを作っています

#8

by masuter » 7年前

コード:

#include <stdio.h>

double power(double x, int n) {
	double r = 1;
	for (int i = 1; i <= n; i++)
		r = r*x;
	return r;
}
double diff(double x, int n) {
	double r = 0;
	r = n*power(x, n-1);
	return r;
}
int main() {
	double num1 = 0;
	int num2 = 0;
	double result1 = 0;
	double result2 = 0;
	printf_s("xを入力してください\n>");
	scanf_s("%lf", &num1);
	printf_s("nを入力してください(nは自然数)\n>");
	scanf_s("%d", &num2);

	result1 = power(num1, num2);
	result2 = diff(num1, num2);
	printf_s("%f^%d = %f です。\n", num1, num2, result1);
	printf_s("(%f^%d)' = %f です。\n", num1, num2, result2);

	return 0;
}
できました!ありがとうございました。

Re: 微分係数を求めるプログラムを作っています

#7

by みけCAT » 7年前

box さんが書きました:
みけCAT さんが書きました: どうしてわざわざ質問にほとんど関係ない上に苦手な数学の話に寄ったのですか?
数学があまり得意でない方が数学に関する投稿をしてもいっこうに差し支えないのでは?
ここの掲示板には、ある分野があまり得意ではない方がその分野に関する投稿をしていけないという
ルールでもあるんですか?
なんでわざわざ苦手だと宣言しながら関係なさそうな投稿をするのか不思議だっただけで、いけないとは言っていないです。

Re: 微分係数を求めるプログラムを作っています

#6

by box » 7年前

masuter さんが書きました: (1) 引数 x (double型)と n (int型)を与えて x^n の値を返すdouble型の関数 powerを定義。
(2) 引数 x (double型)と n (int型)を与えて x^n の微分係数((x^n)’の値,n x^(n -1)を計算してxの値を入れる)を返すdouble型の関数 diff を定義。ただし(1)の関数powerを呼び出して使うこと。
まず、「ただし(1)の関数powerを呼び出して使うこと。」とありますが、違う計算をするのになぜ呼び出すのですか?呼び出す意味はありますか?
この疑問に対する答えは、別の回答者さんからの回答のとおりです。
(2)においてべき乗を求める必要があります。その、べき乗を求める関数powerは、
(1)において自作されています。それを呼び出しましょう、ということです。

Re: 微分係数を求めるプログラムを作っています

#5

by box » 7年前

みけCAT さんが書きました: どうしてわざわざ質問にほとんど関係ない上に苦手な数学の話に寄ったのですか?
数学があまり得意でない方が数学に関する投稿をしてもいっこうに差し支えないのでは?
ここの掲示板には、ある分野があまり得意ではない方がその分野に関する投稿をしていけないという
ルールでもあるんですか?

Re: 微分係数を求めるプログラムを作っています

#4

by purin52002 » 7年前

、、、完全に勘違いしていました^^;

てっきり微分を数値計算するためにpower関数を使え、ということかと思ったのですが
xの(n-1)乗を計算するために使えってことなんですね^^;

masuterさん、余計な話をして申し訳ないです<(__)>

Re: 微分係数を求めるプログラムを作っています

#3

by みけCAT » 7年前

masuter さんが書きました:まず、「ただし(1)の関数powerを呼び出して使うこと。」とありますが、違う計算をするのになぜ呼び出すのですか?呼び出す意味はありますか?
ここで呼び出す主な意味は、関数呼び出しの練習でしょう。
xの(n-1)乗を計算するので、power関数を使うといいでしょう。
オフトピック
purin52002 さんが書きました:数学の話に寄っていきます。
数学は苦手ですのでご了承ください^^;
どうしてわざわざ質問にほとんど関係ない上に苦手な数学の話に寄ったのですか?

Re: 微分係数を求めるプログラムを作っています

#2

by purin52002 » 7年前

数学の話に寄っていきます。
数学は苦手ですのでご了承ください^^;

今回は微分がわかっているので手打ちで計算すればいい気もしますが、
微分がわからない関数を微分する必要が出てくることがあります。

そういうときに導関数の公式を使います。

公式
(f(x+h)-f(x))/h (lim h->0)

プログラムでもこの公式を使うことで微分ができます。
(hは適当に小さい値にする)

微分係数を求めるプログラムを作っています

#1

by masuter » 7年前

こんばんは。
高校生でC言語でプログラミングを学んでいます。
先日学校で、以下のような課題が出ました。

以下を満たすプログラムを完成させよ。
(1) 引数 x (double型)と n (int型)を与えて x^n の値を返すdouble型の関数 powerを定義。
(2) 引数 x (double型)と n (int型)を与えて x^n の微分係数((x^n)’の値,n x^(n -1)を計算してxの値を入れる)を返すdouble型の関数 diff を定義。ただし(1)の関数powerを呼び出して使うこと。
(3) main関数で 値 x と n を入力させ,関数 power と diff を呼び出し,それぞれの値を例のように表示させる。
  (注) 数学用ライブラリ関数(math.hのpowなど)は使えないとする。
<実行例>
x を 入力してください: 4.2
n を 入力してください(n>0): 5
x^n = 1306.912320
(x^n)' = 1555.848000

(1)は自分でできました。お聞きしたいのは(2)です。
まず、「ただし(1)の関数powerを呼び出して使うこと。」とありますが、違う計算をするのになぜ呼び出すのですか?呼び出す意味はありますか?

コード:

#include <stdio.h>

double power(double x, int n) {
	double y = 1;
	for (int i = 1; i <= n; i++)
		y = y*x;
	return y;
}
int main() {
	double num1 = 0;
	int num2 = 0;
	double d = 0;
	printf_s("xを入力してください\n>");
	scanf_s("%lf", &num1);
	printf_s("nを入力してください(nは自然数)\n>");
	scanf_s("%d", &num2);

	d = power(num1, num2);
	printf_s("%f^%d = %f です。\n", num1, num2, d);
	return 0;
}

ページトップ