- ベストアンサー
帰納法の途中計算
(1) (1+2+・・・+n)の2乗=1の3乗+2の3乗+・・・+nの3乗 が成り立つことを数学的帰納法で示せ。 という問題なのです。 それで、n=kの時上式が成り立つとする。 次にn=k+1の時…と考えるわけですが、 この部分を解くのにふさわしい解法が思いつきません。 (2) 加算+を用いて、自然数の乗算m*nを機能的に定義せよ。 考え方からしてわかりません…。 この2点に関して、アドバイスをお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
(1)は帰納法でなくても証明できますが、やってみます。 n=kのときに以下が成立すると仮定 (1+2+、、、k)^2 =1^3+2^3+、、、k^3 いま1+2+、、k=Mとする つまりM^2=1^3+2^3+、、、k^3 またM=(1/2)k(k+1) {M+(k+1)}^2=M^2+2M(k+1)+ (k+1)^2 ←甲 2M(k+1)+(k+1)^2=2×(1/2)k(k+1)^2 +(k+1)^2=k(k+1)^2+(k+1)^2=(k+1)^2(k+1)=(k+1)^3←乙 甲に乙を代入。 つまりM^2+(k+1)^3 =1^3+2^3、、、+(k+1)^3 つまり (1+2+、、K+1)^2=1^3+2^3、、(k+1)^3が成立。 わかりづらくてすいません!! (2)mをn回足したときにm*nが成立するとして m*(n+1)=mn+mが成立することを証明するのかな? たぶん、、 m+m、、m=m*nが成立すると仮定 m+m、、m+m=m*n+m=m(n+1)が成り立つ?でいいのかな?なんか簡単すぎるような。そもそも積の定義がなくてもいいのかな?
その他の回答 (3)
- masterasia1919
- ベストアンサー率40% (29/72)
ふと思ったのですが、(2)ってプログラム言語でのことですか?もしC言語で書くなら int func(int m,int n){ int sum=0,i; for(i=n;i>=0;n--){ if(n==0){ return sum; } sum=sum+m; } } かな、Javaでもおんなじ要領ですよね。ただ、上のプログラムはmをn回足しただけでいいのかな?
- Tacosan
- ベストアンサー率23% (3656/15482)
(2) の方だけ: 「乗算」は 2引数関数 mult(x, y) と考えられます. これを単純に帰納的に定義するには (1) x = y = 0 のとき (2) x = 0 かつ y ≠ 0 のとき (3) x ≠ 0 かつ y = 0 のとき (4) x ≠ 0 かつ y ≠ 0 のとき のそれぞれを考えます. ここで (1)-(3) は帰納法における基底になりますので直接定義してしまい, (4) だけ「x, y の値がより小さな場合の結果」を用いて定義することになります. もっとも, これはこれで対称的な定義になっていてきれいですが, 実際にはもうちょっと短く定義することも可能です. でも, ここであえて「帰納的に定義させる」ことを考えると, そのあとで交換法則とか分配法則とかを帰納的に証明させるって問題があるような....
- debut
- ベストアンサー率56% (913/1604)
(1)について n=kで成り立つと仮定した式の両辺に(k+1)^3を加え、左辺を 変形します。 左辺は[初項1公差1の等差数列の初項からk項までの和]の2乗+(k+1)^3 [ ]内に公式を使い {k(k+1)/2}^2+(k+1)^3=k^2(k+1)^2/4+(k+1)^3 として、これを通分して因数分解すれば、n=k+1で成り立つこと がいえる式が出るので、左辺は(1+2+・・+(k+1))の2乗と なることがいえます。