X



トップページ数学
1002コメント626KB

フェルマーの最終定理の証明

■ このスレッドは過去ログ倉庫に格納されています
0001日高
垢版 |
2020/11/14(土) 09:19:51.37ID:8XYDkgyN
【定理】n≧3のとき、x^n+y^n=z^nは自然数解x,y,zを持たない。
【証明】x^n+y^n=z^nを、z=x+rとおいてx^n+y^n=(x+r)^n…(1)とする。
(1)をr^(n-1){(y/r)^n-1}=an{x^(n-1)+…+r^(n-2)x}(1/a)…(2)と変形する。
(2)はa=1、r^(n-1)=nのとき、x^n+y^n=(x+n^{1/(n-1)})^n…(3)となる。
(2)はa=1以外、r^(n-1)=anのとき、x^n+y^n=(x+(an)^{1/(n-1)})^n…(4)となる。
(3)はrが無理数なので、有理数解を持たない。(4)の解は(3)の解のa^{1/(n-1)}倍となる。
∴n≧3のとき、x^n+y^n=z^nは自然数解x,y,zを持たない。

【定理】n=2のとき、x^n+y^n=z^nは自然数解x,y,zを持つ。
【証明】x^2+y^2=z^2を、z=x+rとおいてx^2+y^2=(x+r)^2…(1)とする。
(1)をr{(y/r)^2-1}=a2x(1/a)…(2)と変形する。
(2)はa=1、r=2のとき、x^2+y^2=(x+2)^2…(3)となる。
(2)はa=1以外、r=a2のとき、x^2+y^2=(x+a2)^2…(4)となる。
(3)はrが有理数なので、有理数解を持つ。(4)の解は(3)の解のa倍となる。
∴n=2のとき、x^n+y^n=z^nは自然数解x,y,zを持つ。
0799132人目の素数さん
垢版 |
2020/11/28(土) 00:02:56.56ID:wtlDa0yP
a^3=√(b^6+c^6+d^6+2*√(b^3*c^3+b^3*d^3+c^3*d^3))を満たす
整数a,b,c,d,の組み合わせは存在しない

a^3=√(b^6+c^6+d^6+e^6+2*√(b^3*c^3+b^3*d^3+c^3*d^3+a^6*e^6+b^6*e^6+c^6*e^6+d^6*e^6))を満たす
整数a,b,c,d,eの組み合わせは存在しない
0800132人目の素数さん
垢版 |
2020/11/28(土) 01:14:02.02ID:buCr9xZQ
>>759
> 「x^n +y^n=z^n 」ではなく
> の、「ではなく」とは、どういう意味でしょうか?

x,y,zに関する方程式(3)の満たすべき条件は
「x^n +y^n=z^n」だけではない。
という意味です。

x,y,zに関する方程式(3)の満たすべき条件は
「x^n +y^n=z^n」と「z-x= n^{1/(n-1)}」
の両方である。
ということをご理解、納得いただけましたか?
はい/いいえ でお答えください。
0801132人目の素数さん
垢版 |
2020/11/28(土) 03:51:12.12ID:80U/4l9f
>>759
> >746
> 「x^n +y^n=z^n 」ではなく
> の、「ではなく」とは、どういう意味でしょうか?
これはないわー
逃げ切る気満々じゃん。
0802132人目の素数さん
垢版 |
2020/11/28(土) 05:28:57.61ID:YJ1GAhwH
また日高のフニャフニャ回避が始まったわw
0803132人目の素数さん
垢版 |
2020/11/28(土) 05:32:19.64ID:YJ1GAhwH
自分の論理が破綻してしまうような質問には、明言を避けまくるw
0804132人目の素数さん
垢版 |
2020/11/28(土) 05:40:41.50ID:YJ1GAhwH
そういう事から日高は己の論理の穴をちゃんと認識しているという事だな。
それなのに正しいとゴリ押ししてるのだから悪質極まりない。
0805日高
垢版 |
2020/11/28(土) 06:26:14.07ID:0fpuH75L
(修正10)
【定理】n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
【証明】x^n+y^n=z^nを、z=x+rとおいてx^n+y^n=(x+r)^n…(1)とする。
(1)をr^(n-1){(y/r)^n-1}=an{x^(n-1)+…+r^(n-2)x}(1/a)…(2)と変形する。
(2)はa=1、r^(n-1)=nのとき、x^n+y^n=(x+n^{1/(n-1)})^n…(3)となる。
(2)はa=1以外、r^(n-1)=anのとき、x^n+y^n=(x+(an)^{1/(n-1)})^n…(4)となる。
(3)はn=2のとき、x,y,zは整数比となりえる。n>2のとき、x,y,zは整数比とならない。
(4)のx,y,zは(3)のx,y,zのa^{1/(n-1)}倍となる。
∴n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
0806日高
垢版 |
2020/11/28(土) 06:31:44.82ID:0fpuH75L
>795
> n=2の場合は、(3)の解は整数比となります。
それは
> (3)の解と、(4)の解の比は、同じです。
とは無関係な別の方法で証明できるからだろ
だからたとえばn=3の場合も
> (3)の解と、(4)の解の比は、同じです。
とは無関係な別の方法で証明しなければならないが
おまえは証明していないだろ

どうして別の方法で証明しなければならないのでしょうか?
0807日高
垢版 |
2020/11/28(土) 06:35:54.42ID:0fpuH75L
>796
式が同じか違うかを質問したのではありません。
この証明は正しいでしょうか? とお尋ねしています。
考えを述べてください。

式が違うので、自然数解を持ちます。
0808日高
垢版 |
2020/11/28(土) 06:46:56.30ID:0fpuH75L
>796
式が同じか違うかを質問したのではありません。
この証明は正しいでしょうか? とお尋ねしています。
考えを述べてください。

式が違うので、わかりません。
0809日高
垢版 |
2020/11/28(土) 06:56:12.09ID:0fpuH75L
>797
「解の比に関して不可分な一体性」といったのは以上の意味ですが,そう理解されているんですよね?
(修正10)ではyが有理数の場合・・・という中間過程も吹っ飛ばして,直接にx,y,zは整数比とならない,となっていますが,それは上の[a][b]から導かれるんですよね?

(3)の、「x,y,zは整数比とならない」は、
(sw)^n+(tw)^n=(uw)^nならば、s^n+t^n=u^nとなる。(s,t,uは有理数、wは無理数)
からです。
0810132人目の素数さん
垢版 |
2020/11/28(土) 07:19:19.57ID:ymvak4/C
日高さんが大学教授から返信してもらった内容教えてよ。
教授の名前とか言わなくていいからさ。

まー、もし日高さんの証明もどきが正しく教授に認められていたら、今頃その大学教授と連名で論文出して、ここでこんな事してないだろうけどな。

たぶん社交辞令的な残念メールの文言を日高脳内論理で変換して賞賛されたと思い込んでいる可能性大w
0811132人目の素数さん
垢版 |
2020/11/28(土) 07:23:31.39ID:g5JRJwZK
>>805
> (修正10)
> 【定理】n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
nが自然数でなければ明確に反例が知られている。なので、これは真っ赤な嘘。
そんなことも理解できず、正確な主張すら書けない日高の書いたものは、
全てが誤魔化し。証明とは呼べない。

証明とは、正確な記述と正しい論理に基づく正確な推論の積み重ねでなければならない。

根拠を聞かれても、どのような推論をしたのかを細かく分解して説明出来ないものは証明ではない。

自分が今まで嘘をつき通してきたことが理解できるまで勉強しろ。理解できなければ返信するな。ゴミ。
0812132人目の素数さん
垢版 |
2020/11/28(土) 07:38:16.83ID:7mUeoanL
>>806
> どうして別の方法で証明しなければならないのでしょうか?
整数比でも整数比でなくても(3)の解とその解をa^{1/(p-1)}倍した
(4)の解の比は同じだろ

p=2のとき
x^2+y^2=(x+2)^2…(3)
y^2=4x+4
2^2*(y/2)^2=(2^2)*(2(x/2)+1)
(y/2)^2=2(x/2)+1

x^2+y^2=(x+√3)^2…(4)
y^2=2√3x+3
√3^2*(y/√3)^2=(√3^2)*(2(x/√3)+1)
(y/√3)^2=2(x/√3)+1

x^2+y^2=(x+1)^2…(4)
y^2=2x+1

(3)と(4)の解の比が同じになることは
(y/2)^2=2(x/2)+1はY^2=2X+1にX=x/2,Y=y/2を代入したもの
(y/√3)^2=2(x/√3)+1はY^2=2X+1にX=x/√3,Y=y/√3を代入したもの
y^2=2x+1はY^2=2X+1にX=x,Y=yを代入したもの
と同じ式Y^2=2X+1で表せることであって
整数比になることはY^2=2X+1のX,Yがともに有理数にできることだから
別に証明しなければならない

s,tは有理数として
x^2+y^2=(x+2)^2…(3)でx=2s,y=2tならt^2=2s+1となって整数比になる
x^2+y^2=(x+1)^2…(4)でx=s,y=tならt^2=2s+1となって整数比になる
この2つはyを有理数としてxが有理数になるかを調べれば良いが
x^2+y^2=(x+√3)^2…(4)でx=s*√3,y=t*√3ならt^2=2s+1となって整数比になる
の場合はyを有理数にしたらt^2=2s+1とはならない(整数比にならない)
よってy=t*√3としてx=s*√3になるかどうかを調べなければならない

p=3のとき
t^2=2s+1ではないが考え方は同じで
x^3+y^3=(x+2)^2…(4)でx=2s,y=2tとできるか?
x^3+y^3=(x+1)^3…(4)でx=s,y=tとできるか?
この2つはyを有理数としてxが有理数になるかを調べれば良いが
x^3+y^3=(x+√3)^3…(3)でx=s*√3,y=t*√3とできるか?
の場合はy=t*√3としてx=s*√3になるかどうかを調べなければならない
0813132人目の素数さん
垢版 |
2020/11/28(土) 07:46:39.29ID:LpYp+oBb
悪霊退散!!!

君が行く海辺の宿に霧立たば我が立ち嘆く息と知りませ
0814日高
垢版 |
2020/11/28(土) 08:46:12.52ID:0fpuH75L
>810
日高さんが大学教授から返信してもらった内容教えてよ。
教授の名前とか言わなくていいからさ。

大学と教授の頭文字を書けば、すぐわかる人です。
内容は、整数比となることと、有理数解をもつことは、違うということでした。
理由は、教えてもらえませんでした。

なので、この部分以外は、正しいということになります。
私は、「整数比となることと、有理数解をもつこと」は、同じだと思います。
0815132人目の素数さん
垢版 |
2020/11/28(土) 08:51:45.33ID:LpYp+oBb
悪霊退散!!!

大阪府 70代女性 祖母と母の介護を経験
 以前、下半身が麻痺した母と、急激にぼけてしまった祖母とを介護しました。祖母は徘徊し、知らないお宅に上がり込んだり、工場の隅で寝ていたり、
裸で外に出て車を止めたりし、「ごはんを食べていない」と言ってご近所に行ったりしました。昼夜逆転した祖母のために睡眠はとれず、結婚した兄が
一人いましたが、離れたところに住んでいたために誰も助けてくれませんでした。私は自分で何かしようという勇気はありませんでしたが、家族を殺め
てしまうという精神状態は少し理解できます。ある時、祖母を抱っこして夕涼みに出ていたら、知らない人が車を停めて近づいてこられ、
  「あなた、幸せになりますよ」
と言われました。白い服を着た中年の男性でした。誰もわかってくれないと思っていた私に、一言声をかけてくださったその方のことが、心の中にずっと
あります。施設を充実させたり、ヘルパーさんを増やしたりすることも必要だと思いますが、周囲の人たちの気持ちも大事だと思います。話を聞いてくれ
る人がいたら、辛い事件は少し減るのではと思います。
0816132人目の素数さん
垢版 |
2020/11/28(土) 08:53:00.60ID:IDrQM9k5
>>814
大学教授の言うことは間違いで、自分が正しいと思ってるんですね。
なんの根拠もなく。
0817日高
垢版 |
2020/11/28(土) 08:55:19.26ID:0fpuH75L
>798
x^n+y^n=(x+n^{1/(n-1)})^n…(3)

(3)が有理数解を持たないことから,(3)の解x,y,zは整数比とならないという結論が直接導ける。
上の結論が導けることはわざわざ証明の過程を明示するまでもなく一目瞭然である。

そのように理解されているんですよね。

はい。その通りです。
0818132人目の素数さん
垢版 |
2020/11/28(土) 08:58:04.23ID:LpYp+oBb
悪霊退散!!!

procedure Sosu(var intArr :array of Integer);
var
sosuflag:array[word]of boolean; //素数かどうかを判定するフラグ
i,j :Integer;
begin
fillchar(sosuflag,SizeOf(Sosuflag),1);
  //まずすべての数を素数と見なしてから後で、割り切れるものをはじく。
i := 2; //素数の最小値
repeat
j := i ; inc(j,i);
while j <= $FFFF do begin
sosuflag[j] := false; //iの倍数なので素数ではない
Inc(J,I);
end;
repeat
Inc(i);
until sosuflag[i]; //次に小さい素数を探す
until i > $8FFF;
j := 1;
for i := 0 to High(IntArr) do begin
repeat
inc(j);
if j > $FFFF then
raise Exception.Create('大きすぎて素数が求められません');
until sosuflag[j];
IntArr[i] := J;
end;
end;
0819132人目の素数さん
垢版 |
2020/11/28(土) 08:59:49.93ID:LpYp+oBb
悪霊退散!!!


  「フェルマーの定理 日高 迷惑 メール」 でググる。
0820日高
垢版 |
2020/11/28(土) 09:01:26.28ID:0fpuH75L
>799
a^3=√(b^6+c^6+d^6+2*√(b^3*c^3+b^3*d^3+c^3*d^3))を満たす
整数a,b,c,d,の組み合わせは存在しない

わかりません。
0821132人目の素数さん
垢版 |
2020/11/28(土) 09:04:00.71ID:LpYp+oBb
悪霊退散!!!

LET n = 100
DIM s(n)
MAT s = ZER ! 配列 s の全要素に 0(zero) を代入 ※s = 0 ではダメ
LET k = 0
FOR i = 2 TO n
  IF s(i) = 0 THEN
   PRINT USING "####":i;
   LET k = k + 1
   IF MOD(k,10) = 0 THEN
     PRINT
   END IF
   FOR j = i^2 TO N STEP i
     LET s(j) = 1
   NEXT j
  END IF
NEXT i
0822日高
垢版 |
2020/11/28(土) 09:04:47.02ID:0fpuH75L
(修正10)
【定理】n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
【証明】x^n+y^n=z^nを、z=x+rとおいてx^n+y^n=(x+r)^n…(1)とする。
(1)をr^(n-1){(y/r)^n-1}=an{x^(n-1)+…+r^(n-2)x}(1/a)…(2)と変形する。
(2)はa=1、r^(n-1)=nのとき、x^n+y^n=(x+n^{1/(n-1)})^n…(3)となる。
(2)はa=1以外、r^(n-1)=anのとき、x^n+y^n=(x+(an)^{1/(n-1)})^n…(4)となる。
(3)はn=2のとき、x,y,zは整数比となりえる。n>2のとき、x,y,zは整数比とならない。
(4)のx,y,zは(3)のx,y,zのa^{1/(n-1)}倍となる。
∴n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
0823132人目の素数さん
垢版 |
2020/11/28(土) 09:10:01.88ID:LpYp+oBb
悪霊退散!!!

REM 既約なピタゴラス数
FUNCTION gcd(a,b)
  DO WHILE b <> 0
   LET r = MOD(a,b)
   LET a = b
   LET b = r
  LOOP
  LET gcd = a
END FUNCTION

LET LAST = 200

REM ピタゴラス数を求める
FOR x = 1 TO LAST
  FOR y = x + 1 TO LAST
   LET z = SQR(x^2+y^2)
   IF INT(z) = z THEN
     IF gcd(x,y) = 1 AND gcd(x,z) = 1 AND gcd(y,z) = 1 THEN
      PRINT USING "##### ##### #####": x,y,z
     END IF
   END IF
  NEXT y
NEXT x

END
0824日高
垢版 |
2020/11/28(土) 09:11:49.19ID:0fpuH75L
>800
x,y,zに関する方程式(3)の満たすべき条件は
「x^n +y^n=z^n」だけではない。
という意味です。

「(3)の満たすべき条件」とは、どういう意味でしょうか?
0825132人目の素数さん
垢版 |
2020/11/28(土) 09:13:34.90ID:LpYp+oBb
悪霊退散!!!
//2階線形微分方程式( second order differential equation )
procedure TForm1.SLDifEq;
var
 i:       Integer;
 Ex, Ey, h:   Extended;
 Ev, Et:     Extended;
 k1, k2, k3, k4: Extended;
 m1, m2, m3, m4: Extended;

function DFunc1(t, x, v: Extended):Extended;
begin
 Result := CalcEG(EdFuncV.Text, 'v', v);
end;

function DFunc2(t, x, v: Extended):Extended;
begin
 Result := CalcEG(EdFuncDV.Text, 'v', v) + CalcEG(EdFuncX.Text, 'x', x)
                     + CalcEG(EdFuncT.Text, 't', t);
end;
0826日高
垢版 |
2020/11/28(土) 09:16:02.64ID:0fpuH75L
>801
> 「x^n +y^n=z^n 」ではなく
> の、「ではなく」とは、どういう意味でしょうか?
これはないわー
逃げ切る気満々じゃん。

違います。逃げ切るつもりは、ありません。
0827日高
垢版 |
2020/11/28(土) 09:20:11.27ID:0fpuH75L
>802
また日高のフニャフニャ回避が始まったわw

どの部分が、フニャフニャ回避でしょうか?
0828132人目の素数さん
垢版 |
2020/11/28(土) 09:21:50.04ID:LpYp+oBb
悪霊退散!!!
begin
 with PaintScreen1 do
 begin
  OffBmp.Canvas.Pen.Width := SubWidth;
  OffBmp.Canvas.Pen.Color := TColor($971D4F);

  //初期値
  h := StrToFloat(Edh.Text);
  Et := StrToFloat(Edt0.Text);
  Ev := StrToFloat(Edv0.Text);
  Ex := StrToFloat(Edx0.Text);
  OffBmp.Canvas.MoveTo( RealToDispX(Et),RealToDispY(Ex) );
  for i := 0 to 100 do
  begin
0829132人目の素数さん
垢版 |
2020/11/28(土) 09:22:24.03ID:LpYp+oBb
悪霊退散!!!
   //ルンゲ・クッタ
   k1 := h*DFunc1(Et, Ex, Ev);
   m1 := h*DFunc2(Et, Ex, Ev);

   k2 := h*DFunc1(Et+0.5*h, Ex+0.5*k1, Ev+0.5*m1);
   m2 := h*DFunc2(Et+0.5*h, Ex+0.5*k1, Ev+0.5*m1);

   k3 := h*DFunc1(Et+0.5*h, Ex+0.5*k2, Ev+0.5*m2);
   m3 := h*DFunc2(Et+0.5*h, Ex+0.5*k2, Ev+0.5*m2);

   k4 := h*DFunc1(Et+h, Ex+k3, Ev+m3);
   m4 := h*DFunc2(Et+h, Ex+k3, Ev+m3);

   Et := Et + h;
   Ex := Ex + (k1 + 2*k2 + 2*k3 + k4)/6;
   Ev := Ev + (m1 + 2*m2 + 2*m3 + m4)/6;

   OffBmp.Canvas.LineTo( RealToDispX(Et),RealToDispY(Ex) );
  end;
0830日高
垢版 |
2020/11/28(土) 09:22:54.98ID:0fpuH75L
>803
自分の論理が破綻してしまうような質問には、明言を避けまくるw

どの部分が、自分の論理が破綻してしまうような質問でしょうか?
0831132人目の素数さん
垢版 |
2020/11/28(土) 09:23:01.09ID:LpYp+oBb
悪霊退散!!!
  //初期値
  h := StrToFloat(Edh.Text);
  Et := StrToFloat(Edt0.Text);
  Ev := StrToFloat(Edv0.Text);
  Ex := StrToFloat(Edx0.Text);
  OffBmp.Canvas.MoveTo( RealToDispX(Et),RealToDispY(Ex) );
  for i := 0 to 100 do //負方向の計算
  begin
   k1 := -h*DFunc1(Et, Ex, Ev);
   m1 := -h*DFunc2(Et, Ex, Ev);

   k2 := -h*DFunc1(Et+0.5*h, Ex+0.5*k1, Ev+0.5*m1);
   m2 := -h*DFunc2(Et+0.5*h, Ex+0.5*k1, Ev+0.5*m1);
   k3 := -h*DFunc1(Et+0.5*h, Ex+0.5*k2, Ev+0.5*m2);
   m3 := -h*DFunc2(Et+0.5*h, Ex+0.5*k2, Ev+0.5*m2);

   k4 := -h*DFunc1(Et+h, Ex+k3, Ev+m3);
   m4 := -h*DFunc2(Et+h, Ex+k3, Ev+m3);
   Et := Et - h;
   Ex := Ex + (k1 + 2*k2 + 2*k3 + k4)/6;
   Ev := Ev + (m1 + 2*m2 + 2*m3 + m4)/6;

   //横軸変位t 縦軸速度 x
   OffBmp.Canvas.LineTo( RealToDispX(Et),RealToDispY(Ex) );
  end;
 end;
end;
0832日高
垢版 |
2020/11/28(土) 09:25:15.87ID:0fpuH75L
>804
そういう事から日高は己の論理の穴をちゃんと認識しているという事だな。

どの部分が、己の論理の穴をちゃんと認識していることに、なるのでしょうか?
0833132人目の素数さん
垢版 |
2020/11/28(土) 09:26:25.49ID:LpYp+oBb
悪霊退散!!!
procedure fft;
var K,L,KD : Integer ;
  wc,ws : Array of Extended ;
    procedure fftint ;
    var s : Integer ;
      wk : Extended ;
    begin
      For s := 0 to KD-1 do
      begin
       wk := 2.0 * Pi * s / K ;
       wc[s] := Cos(wk) ;
       ws[s] := -Sin(wk) ;
      end ;
    end ;
    function bitrev(ip : Integer) : Integer ;
    var i,w : Integer ;
    begin
      w := 0 ;
      For I := 1 to L do
      begin
       w := w * 2 + (ip mod 2) ;
       ip := ip div 2 ;
      end ;
      Result := w ;
    end ;
    procedure cfft(inv : Integer) ;
    var i,j,Li,sn,i0,i1,expon,iw : Integer ;
      wk,yr,yi,sign,wwc,wws : Extended ;
0834132人目の素数さん
垢版 |
2020/11/28(土) 09:27:01.68ID:LpYp+oBb
悪霊退散!!!
    begin
      if inv = 1 then sign := 1.0 else sign := -1.0 ;
      Li := K ;
      iw := 1 ;
      For I := 1 to L do
      begin
       iw := iw * 2 ;
       Li := Li div 2 ;
       sn := 0 ;
       while sn < K-1 do
       begin
         For J := 0 to Li-1 do
         begin
          expon := (bitrev(sn) mod iw) * Li ;
          wws := sign * ws[expon] ;
          wwc := wc[expon] ;
          i0 := sn ;
          i1 := i0 + Li ;
          yr := xr[i1] * wwc - xi[i1] * wws ;
          yi := xr[i1] * wws + xi[i1] * wwc ;
          xr[i1] := xr[i0] - yr ;
          xi[i1] := xi[i0] - yi ;
          xr[i0] := xr[i0] + yr ;
          xi[i0] := xi[i0] + yi ;
          Inc(sn) ;
         end ;
         Inc(sn,Li) ;
       end ;
      end ;
0835132人目の素数さん
垢版 |
2020/11/28(土) 09:27:27.58ID:LpYp+oBb
悪霊退散!!!
      For i := 0 to K-1 do
      begin
       j := bitrev(i) ;
       if inv = 1 then
       begin
         cr[j] := xr[i] / K ;
         ci[j] := xi[i] / K ;
       end else
       begin
         cr[j] := xr[i] ;
         ci[j] := xi[i] ;
       end ;
      end ;
    end ;
var
 s : Integer ;
begin
  //分割数を得る
  K := 1024 ; //2^nの形
  L := Trunc(log2(K)) ;
  KD := K div 2 ;
  //データはxr,xiで渡される。
  SetLength(wc,KD) ;
  SetLength(ws,KD) ;
  //手続き呼び出し
  fftint ;
  //以下で逆高速フーリエ変換ならば引数を-1にすれば大丈夫
  cfft(1) ;
end;
0836132人目の素数さん
垢版 |
2020/11/28(土) 09:29:56.61ID:LpYp+oBb
悪霊退散!!!
//ガウス・ジョルダン〜Pivot選択あり:逆行列ルーティン付き
function GaussJordanPv(N: Integer):Integer;
var
  pRow,pv, k, j: Integer;
  mMax,R_pivot, temp: Extended;
begin
 //単位行列の設定
 for k := 1 to N do
  for j := 1 to N do
   if k = j then RA[k][j] := 1.0
   else     RA[k][j] := 0.0;
 for pv := 1 to N do //行ループ
 begin
  mMax := 0.000001;
  for k := pv to N do //行ループ 最大値探索
  begin
   if Abs(A[k][pv]) > mMax then
   begin
    mMax := Abs(A[k][pv]);
    pRow := k;
   end;
  end;
  if mMax <= 0.000001 then //誤差対策
  begin
   MessageDlg('解が存在しないかまたは不定です!', mtwarning, [mbok], 0);
   Result := 0;
   Exit;
  end;
0837132人目の素数さん
垢版 |
2020/11/28(土) 09:30:39.38ID:LpYp+oBb
悪霊退散!!!
  //行の入れ替え
  if pv <> pRow then
  begin
   for k := 1 to N+1 do //列ループ
   begin
    temp := A[pv][k];
    A[pv][k] := A[pRow][k];
    A[pRow][k] := temp;
   end;
   for k := 1 to N do //列ループ 単位行列
   begin
    temp := RA[pv][k];
    RA[pv][k] := RA[pRow][k];
    RA[pRow][k] := temp;
   end;
  end;

  //ピボット行の処理   ⇒ 対角成分 = 1
  R_pivot := 1.0/A[pv][pv];//ピボットの逆数
  for j := 1 to N+1 do //列ループ
   A[pv][j] := A[pv][j]*R_pivot;
  for j := 1 to N do  //列ループ 単位行列
   RA[pv][j] := RA[pv][j]*R_pivot;
  //ピボット行以外の処理 ⇒ ピボット列 = 0
  for k := 1 to N do
  begin
   temp := A[k][pv];    //消去する係数
   begin
    for j := pv to N+1 do //ピボット列以降を処理
     if k <> pv then
      A[k][j] := A[k][j] - temp*A[pv][j];
    for j := 1 to N do  //全列処理(単位行列)
     if k <> pv then
      RA[k][j] := RA[k][j] - temp*RA[pv][j];
   end;
  end;
 end;
 Result := 1;
end;
0838日高
垢版 |
2020/11/28(土) 09:30:40.59ID:0fpuH75L
>811
nが自然数でなければ明確に反例が知られている。

nが無理数ならば、反例があります。
0839132人目の素数さん
垢版 |
2020/11/28(土) 09:33:10.91ID:LpYp+oBb
悪霊退散!!!
function Formalize(var S: String): Boolean;
var
 i : Integer;
 dmy: String;
begin
 Result := False;
 if S = '' then Exit;      // 空文字はエラー
 for i := 1 to Length(S) do   // 不正な文字があるとエラー
  if not ( S[i] in ['0'..'9', '+', '-', '*', '/',
           '(', ')', '.'] ) then Exit;
 dmy := S;  i := 1;
 while i <= Length(S) do
  if not ( S[i] in ['(', ')'] ) then Delete(S, i, 1)
  else Inc(i);
 while Pos('()', S) > 0 do
  Delete(S, Pos('()', S), 2);
 if Length(S) > 0 then Exit;
 S := dmy;
 if S[1]     in ['+', '-', '*', '/', ')', '.'] then Exit;
 if S[Length(S)] in ['+', '-', '*', '/', '(', '.'] then Exit;
 for i := 1 to Length(S) - 1 do
 begin
  if (S[i]  in ['+', '-', '*', '/', '.', '(']) and
    (S[i+1] in ['+', '-', '*', '/', '.', ')']) then Exit;
 end;
 for i := 2 to Length(S) - 1 do
  if (S[i] = '.') then
   if not ((S[i-1] in ['0'..'9']) and (S[i+1] in ['0'..'9'])) then Exit;
 Result := True;
end;
0840132人目の素数さん
垢版 |
2020/11/28(土) 09:34:08.30ID:LpYp+oBb
悪霊退散!!!
procedure NextToken;
begin
 case GNum of
  '0'..'9':
    GetNumber;
    GTOKEN := C_NUMBER;
  '+','-':
    GOP := GNum;
    GTOKEN := C_ADD;
  '*','/':
    GOP := GNum;
    GTOKEN := C_MUL;
   '(':
    GTOKEN := C_LPAREN;
   ')':
    GTOKEN := C_RPAREN;
   ')':
    GTOKEN := C_RPAREN;
   '#':
     GTOKEN := C_OTHERS;
 end;
 if not (GNum in ['0'..'9', '#']) then GNum := ReadChar; // 先読み
end;
0841日高
垢版 |
2020/11/28(土) 09:34:13.71ID:0fpuH75L
(修正10)
【定理】n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
【証明】x^n+y^n=z^nを、z=x+rとおいてx^n+y^n=(x+r)^n…(1)とする。
(1)をr^(n-1){(y/r)^n-1}=an{x^(n-1)+…+r^(n-2)x}(1/a)…(2)と変形する。
(2)はa=1、r^(n-1)=nのとき、x^n+y^n=(x+n^{1/(n-1)})^n…(3)となる。
(2)はa=1以外、r^(n-1)=anのとき、x^n+y^n=(x+(an)^{1/(n-1)})^n…(4)となる。
(3)はn=2のとき、x,y,zは整数比となりえる。n>2のとき、x,y,zは整数比とならない。
(4)のx,y,zは(3)のx,y,zのa^{1/(n-1)}倍となる。
∴n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
0842132人目の素数さん
垢版 |
2020/11/28(土) 09:35:22.57ID:LpYp+oBb
悪霊退散!!!
function Expression: Extended;
var
 op : Char
 sign: Integer;
 u,v : Extended;
begin
 u := Term;
 while GTOKEN := C_ADD do
 begin
  op := GOP;          // オペレータを保存
  NextToken;          // '+','-' を読みとばす
  v := Term;
  if op = '+' then u := u+v
  else       u := u-v;
 end;
 Result := u;
end;

function Term: Extended;
var
 op: Char;
 u,v: Extended;
begin
 u := Factor;;
 while GTOKEN := C_MUL do
 begin
  op := GOP;          // オペレータを保存
  NextToken;          // '*','/' を読みとばす
  v := Factor;
  case op of
   '*': u := u*v;
   '/': u := u/ v;
  else //Error!
  end;
 end;
 Result := u;
end;
0843132人目の素数さん
垢版 |
2020/11/28(土) 09:36:29.99ID:LpYp+oBb
悪霊退散!!!
function Factor: Extended;
var
 v: Extended;
begin
 case GTOKEN of
  C_LPAREN:          // 左括弧の場合
   NextToken;         // '(' を読みとばす
   v := Expression;      // 「式」の処理
   if GTOKEN = C_RPAREN then // ')' が来ているはず。チェック
    NextToken        // ')' を読みとばす
   else
    ErrorOut;
  C_NUMBER:          // 数値の場合
   v := GVALUE;        // 数値の処理をする
   NextToken;         // 数値を読みとばす
 else:
  ErrorOut;          // "(" でも数値でもなければ、エラー
 end;
 Result := v;
end;
0844132人目の素数さん
垢版 |
2020/11/28(土) 09:39:14.00ID:LpYp+oBb
悪霊退散!!!
int main()
{
  int i;
  double k, p, dk, kmin, kmax, pmin, pmax;

  printf("kmin = "); scanf("%lf", &kmin);
  printf("kmax = "); scanf("%lf", &kmax);
  printf("pmin = "); scanf("%lf", &pmin);
  printf("pmax = "); scanf("%lf", &pmax);
  gr_on(); gr_window(kmin, pmin, kmax, pmax, 0, 0);
  dk = (kmax - kmin) / (XMAX - 1);
  for (k = kmin; k <= kmax; k += dk) {
    p = 0.3;
    for (i = 1; i <= 50; i++) p += k * p * (1 - p);
    for (i = 51; i <= 100; i++) {
      if (p >= pmin && p <= pmax)
        gr_wdot(k, p, WHITE);
      p += k * p * (1 - p);
    }
  }
  hitanykey();
  return EXIT_SUCCESS;
}
0845132人目の素数さん
垢版 |
2020/11/28(土) 09:40:20.75ID:LpYp+oBb
悪霊退散!!!
#define N 24
#define PI 3.14159265358979323846264
long double latan(long double x) /* アークタンジェント */
{
  int i, sgn;
  long double a;

  if   (x > 1) { sgn = 1; x = 1 / x; }
  else if (x < -1) { sgn = -1; x = 1 / x; }
  else        sgn = 0;
  a = 0;
  for (i = N; i >= 1; i--)
    a = (i * i * x * x) / (2 * i + 1 + a);
  if (sgn > 0) return PI / 2 - x / (1 + a);
  if (sgn < 0) return -PI / 2 - x / (1 + a);
  /* else */  return      x / (1 + a);
}

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>

int main()
{
  int i;
  long double x, y;

  printf(" x  %-*s 左のtan\n", LDBL_DIG + 2, "自家製atan");
  for (i = -10; i <= 10; i++) {
    x = i / 4.0L; y = latan(x);
    printf("%5.2Lf %*.*Lf % g\n",
      x, LDBL_DIG + 2, LDBL_DIG - 1, y, tan((double)y));
  }
  return EXIT_SUCCESS;
}
0846132人目の素数さん
垢版 |
2020/11/28(土) 09:41:10.31ID:LpYp+oBb
悪霊退散!!!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>

double gcd(double x, double y) /* 最大公約数 */
{
  double t;

  while (y != 0) { t = fmod(x, y); x = y; y = t; }
  return x;
}

#define N 40

int main()
{
  int i, n;
  double q, b1, b2, d;
  static double t[N + 1];

  q = 1;
  t[1] = 1;
  for (n = 2; n <= N; n++) {
    for (i = 1; i < n; i++) t[i - 1] = i * t[i];
    t[n - 1] = 0;
    for (i = n; i >= 2; i--) t[i] += t[i - 2];
    if (n % 2 == 0) {
      q *= 4;
      b1 = n * t[0]; b2 = q * (q - 1);
      if (b1 < 1 / DBL_EPSILON && b2 < 1 / DBL_EPSILON) {
        d = gcd(b1, b2); b1 /= d; b2 /= d;
        printf("|B(%2d)| = %.0f/%.0f\n", n, b1, b2);
      } else
        printf("|B(%2d)| = %g\n", n, b1 / b2);
    }
  }
  return EXIT_SUCCESS;
}
0847132人目の素数さん
垢版 |
2020/11/28(土) 09:42:55.51ID:LpYp+oBb
悪霊退散!!!
#include <stdio.h>
#include <math.h>

#define EPS   1e-10        /* 許容相対誤差 */
#define odd(x)  ((x) & 1)      /* 奇数? */
#define PI    3.14159265358979324 /* $\pi$ */
#define EULER  0.577215664901532861 /* Eulerの定数 $\gamma$ */

double BesJ(int n, double x)  /* $J_n(x)$ */
{
  int k;
  double a, b, r, s;
  const double x_2 = x / 2;

  if (x < 0) {
    if (odd(n)) return -BesJ(n, -x);
    /* else */ return BesJ(n, -x);
  }
  if (n < 0) {
    if (odd(n)) return -BesJ(-n, x);
    /* else */ return BesJ(-n, x);
  }
  if (x == 0) return (n == 0);
  a = s = 0; b = 1;
  k = n; if (k < x) k = x;
  do { k++; } while ((b *= x_2 / k) > EPS);
  if (odd(k)) k++; /* 奇数なら偶数にする */
  while (k > 0) {
    s += b;
    a = 2 * k * b / x - a; k--; /* $a = J_k(x)$ */
    if (n == k) r = a;      /* $k$ 奇数 */
    b = 2 * k * a / x - b; k--; /* $b = J_k(x)$ */
    if (n == k) r = b;      /* $k$ 偶数 */
  }
  return r / (2 * s + b);
    /* $J_0 + 2(J_2 + J_4 + \cdots) = 1$ となるように規格化 */
}
0848132人目の素数さん
垢版 |
2020/11/28(土) 09:43:53.99ID:LpYp+oBb
悪霊退散!!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
  int year, month, day, dayofweek;
  static char name[7][10] = {
    "Sunday", "Monday", "Tuesday", "Wednesday",
    "Thursday", "Friday", "Saturday" };

  printf("Year ? "); scanf("%d", &year);
  printf("Month? "); scanf("%d", &month);
  printf("Day ? "); scanf("%d", &day);
  if (month < 3) { year--; month += 12; }
  dayofweek = (year + year / 4 - year / 100 + year / 400
    + (13 * month + 8) / 5 + day) % 7;
  printf("It's %s.\n", name[dayofweek]);
  return EXIT_SUCCESS;
}
0849132人目の素数さん
垢版 |
2020/11/28(土) 09:45:24.56ID:LpYp+oBb
悪霊退散!!!
#include <stdio.h>
#include <math.h>

void corrcoef1(int n, float x[], float y[])
{
  int i;
  float sx, sy, sxx, syy, sxy, dx, dy;

  sx = sy = sxx = syy = sxy = 0;
  for (i = 0; i < n; i++) {
    sx += x[i]; sy += y[i];
  }
  sx /= n; sy /= n;
  for (i = 0; i < n; i++) {
    dx = x[i] - sx; dy = y[i] - sy;
    sxx += dx * dx; syy += dy * dy; sxy += dx * dy;
  }
  sxx = sqrt(sxx / (n - 1));
  syy = sqrt(syy / (n - 1));
  sxy /= (n - 1) * sxx * syy;
  printf("標準偏差 %g %g 相関係数 %g\n", sxx, syy, sxy);
}

void corrcoef2(int n, float x[], float y[])
{
  int i;
  float sx, sy, sxx, syy, sxy;

  sx = sy = sxx = syy = sxy = 0;
  for (i = 0; i < n; i++) {
    sx += x[i]; sy += y[i];
    sxx += x[i] * x[i];
    syy += y[i] * y[i];
    sxy += x[i] * y[i];
  }
  sx /= n; sxx = (sxx - n * sx * sx) / (n - 1);
  sy /= n; syy = (syy - n * sy * sy) / (n - 1);
  if (sxx > 0) sxx = sqrt(sxx); else sxx = 0;
  if (syy > 0) syy = sqrt(syy); else syy = 0;
  sxy = (sxy - n * sx * sy) / ((n - 1) * sxx * syy);
  printf("標準偏差 %g %g 相関係数 %g\n", sxx, syy, sxy);
}
0850132人目の素数さん
垢版 |
2020/11/28(土) 09:46:21.82ID:LpYp+oBb
悪霊退散!!!

void corrcoef3(int n, float x[], float y[])
{
  int i;
  float sx, sy, sxx, syy, sxy, dx, dy;

  sx = sy = sxx = syy = sxy = 0;
  for (i = 0; i < n; i++) {
    dx = x[i] - sx; sx += dx / (i + 1);
    dy = y[i] - sy; sy += dy / (i + 1);
    sxx += i * dx * dx / (i + 1);
    syy += i * dy * dy / (i + 1);
    sxy += i * dx * dy / (i + 1);
  }
  sxx = sqrt(sxx / (n - 1));
  syy = sqrt(syy / (n - 1));
  sxy /= (n - 1) * sxx * syy;
  printf("標準偏差 %g %g 相関係数 %g\n", sxx, syy, sxy);
}
0851132人目の素数さん
垢版 |
2020/11/28(土) 09:48:42.35ID:LpYp+oBb
悪霊退散!!!
#include <math.h>
#define N 8
static double coef[20] = {
   8.333333333333333333333333333e-2, /* 1/12 */
  -1.388888888888888888888888889e-3, /* -1/720 */
   3.306878306878306878306878307e-5, /* 1/30240 */
  -8.267195767195767195767195767e-7, /* -1/1209600 */
   2.087675698786809897921009032e-8, /* 1/47900160 */
  -5.284190138687493184847682202e-10,
   1.338253653068467883282698098e-11,
  -3.389680296322582866830195391e-13,
   8.586062056277844564135905450e-15,
  -2.174868698558061873041516424e-16,
   5.509002828360229515202652609e-18,
  -1.395446468581252334070768626e-19,
   3.534707039629467471693229977e-21,
  -8.953517427037546850402611251e-23,
   2.267952452337683060310950058e-24,
  -5.744790668872202445263829503e-26,
   1.455172475614864901866244572e-27,
  -3.685994940665310178130050728e-29,
   9.336734257095044668660153106e-31,
  -2.365022415700629886484029550e-32
};
0852132人目の素数さん
垢版 |
2020/11/28(土) 09:49:07.89ID:LpYp+oBb
悪霊退散!!!
double zeta(double x)
{
  int i;
  double powNx, w, z, zprev;

  z = 1;
  for (i = 2; i < N; i++) {
    zprev = z;
    z += pow(i, -x);
    if (z == zprev) return z;
  }
  powNx = pow(N, x);
  w = x / (N * powNx);
  z += 0.5 / powNx + N / ((x - 1) * powNx) + coef[0] * w;
  for (i = 1; i < 20 && z != zprev; i++) {
    w *= (x + 2 * i - 1) * (x + 2 * i) / (N * N);
    zprev = z;
    z += coef[i] * w;
  }
  return z;
}
0853132人目の素数さん
垢版 |
2020/11/28(土) 09:50:28.37ID:LpYp+oBb
悪霊退散!!!
unsigned phi(unsigned x)
{
  unsigned d, t;

  t = x;
  if (x % 2 == 0) {
    t /= 2;
    do { x /= 2; } while (x % 2 == 0);
  }
  d = 3;
  while (x / d >= d) {
    if (x % d == 0) {
      t = t / d * (d - 1);
      do { x /= d; } while (x % d == 0);
    }
    d += 2;
  }
  if (x > 1) t = t / x * (x - 1);
  return t;
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int i, j;

  printf("オイラーの関数 φ(1),…,φ(200)\n   ");
  for (j = 1; j <= 10; j++) printf(" +%2d", j);
  printf("\n   ");
  for (j = 1; j <= 10; j++) printf("-----");
  printf("\n");
  for (i = 0; i < 20; i++) {
    printf("%3d |", 10 * i);
    for (j = 1; j <= 10; j++) printf("%5d", phi(10 * i + j));
    printf("\n");
  }
  return EXIT_SUCCESS;
}
0854132人目の素数さん
垢版 |
2020/11/28(土) 09:51:43.33ID:LpYp+oBb
悪霊退散!!!
#define N 5
double x[N] = {  0,   10,   20,   30,   40  },
    y[N] = { 610.66, 1227.4, 2338.1, 4244.9, 7381.2 },
    z[N];

void maketable(double x[], double y[], double z[])
{
  int i;
  double t;
  static double h[N], d[N];

  z[0] = 0; z[N - 1] = 0; /* 両端点での y''(x) / 6 */
  for (i = 0; i < N - 1; i++) {
    h[i  ] = x[i + 1] - x[i];
    d[i + 1] = (y[i + 1] - y[i]) / h[i];
  }
  z[1] = d[2] - d[1] - h[0] * z[0];
  d[1] = 2 * (x[2] - x[0]);
  for (i = 1; i < N - 2; i++) {
    t = h[i] / d[i];
    z[i + 1] = d[i + 2] - d[i + 1] - z[i] * t;
    d[i + 1] = 2 * (x[i + 2] - x[i]) - h[i] * t;
  }
  z[N - 2] -= h[N - 2] * z[N - 1];
  for (i = N - 2; i > 0; i--)
    z[i] = (z[i] - h[i] * z[i + 1]) / d[i];
}
0855132人目の素数さん
垢版 |
2020/11/28(土) 09:52:13.86ID:LpYp+oBb
悪霊退散!!!
double spline(double t, double x[], double y[], double z[])
{
  int i, j, k;
  double d, h;

  i = 0; j = N - 1;
  while (i < j) {
    k = (i + j) / 2;
    if (x[k] < t) i = k + 1; else j = k;
  }
  if (i > 0) i--;
  h = x[i + 1] - x[i]; d = t - x[i];
  return (((z[i + 1] - z[i]) * d / h + z[i] * 3) * d
    + ((y[i + 1] - y[i]) / h
    - (z[i] * 2 + z[i + 1]) * h)) * d + y[i];
}
0856132人目の素数さん
垢版 |
2020/11/28(土) 09:53:24.39ID:LpYp+oBb
悪霊退散!!!
#define TEST 1

#if TEST
  int count = 0;
#endif

int A(int x, int y)
{
  #if TEST
    count++;
  #endif
  if (x == 0) return y + 1;
  if (y == 0) return A(x - 1, 1);
  return A(x - 1, A(x, y - 1));
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
  printf("A(3, 3) = %d\n", A(3, 3));
  #if TEST
    printf("A(x, y) は %d 回呼び出されました.\n", count);
  #endif
  return EXIT_SUCCESS;
}
0857132人目の素数さん
垢版 |
2020/11/28(土) 09:55:52.58ID:LpYp+oBb
悪霊退散!!!
static void output(int bit) /* {\tt bit} に続いてその補数を {\tt ns} 個出力 */
{
  putbit(bit); /* 1ビット書き出す */
  while (ns > 0) { putbit(! bit); ns--; } /* その補数を書き出す */
}

void encode(void) /* 圧縮 */
{
  int c;
  unsigned long range, maxcount, incount, cr, d;
  unsigned short low, high;
  static unsigned long count[N];

  for (c = 0; c < N; c++) count[c] = 0; /* 頻度の初期化 */
  while ((c = getc(infile)) != EOF) count[c]++; /* 各文字の頻度 */
  incount = 0; maxcount = 0; /* 原文の大きさ, 頻度の最大値 */
  for (c = 0; c < N; c++) {
    incount += count[c];
    if (count[c] > maxcount) maxcount = count[c];
  }
  if (incount == 0) return; /* 0バイトのファイル */
  /* 頻度合計が {\tt Q1} 未満, 各頻度が1バイトに収まるよう規格化 */
  d = max((maxcount + N - 2) / (N - 1),
      (incount + Q1 - 257) / (Q1 - 256));
  if (d != 1)
    for (c = 0; c < N; c++)
      count[c] = (count[c] + d - 1) / d;
  cum[0] = 0;
  for (c = 0; c < N; c++) {
    fputc((int)count[c], outfile); /* 頻度表の出力 */
    cum[c + 1] = cum[c] + (unsigned)count[c]; /* 累積頻度 */
  }
0858132人目の素数さん
垢版 |
2020/11/28(土) 09:56:31.59ID:LpYp+oBb
悪霊退散!!!
  outcount = N;
  rewind(infile); incount = 0; /* 巻き戻して再走査 */
  low = 0; high = USHRT_MAX; ns = 0;
  while ((c = getc(infile)) != EOF) { /* 各文字を符号化 */
    range = (unsigned long)(high - low) + 1;
    high = (unsigned short)
        (low + (range * cum[c + 1]) / cum[N] - 1);
    low = (unsigned short)
        (low + (range * cum[c  ]) / cum[N]);
    for ( ; ; ) {
      if   (high < Q2) output(0);
      else if (low >= Q2) output(1);
      else if (low >= Q1 && high < Q3) {
        ns++; low -= Q1; high -= Q1;
      } else break;
      low <<= 1; high = (high << 1) + 1;
    }
    if ((++incount & 1023) == 0) printf("%12lu\r", incount);
  }
0859132人目の素数さん
垢版 |
2020/11/28(土) 09:57:10.88ID:LpYp+oBb
悪霊退散!!!
int binarysearch(unsigned x) /* $\mbox{\tt cum[i]} \le x < \mbox{\tt cum[i+1]}$ となる {\tt i} を二分探索で求める */
{
  int i, j, k;

  i = 1; j = N;
  while (i < j) {
    k = (i + j) / 2;
    if (cum[k] <= x) i = k + 1; else j = k;
  }
  return i - 1;
}
0860132人目の素数さん
垢版 |
2020/11/28(土) 09:57:37.15ID:LpYp+oBb
悪霊退散!!!
void decode(unsigned long size) /* 復元 */
{
  int c;
  unsigned char count[N];
  unsigned short low, high, value;
  unsigned long i, range;

  if (size == 0) return; /* 0バイトのファイル */
  cum[0] = 0;
  for (c = 0; c < N; c++) {
    count[c] = fgetc(infile); /* 頻度分布を読む */
    cum[c + 1] = cum[c] + count[c]; /* 累積頻度を求める */
  }
  value = 0;
  for (c = 0; c < USHRT_BIT; c++)
    value = 2 * value + getbit(); /* バッファを満たす */
  low = 0; high = USHRT_MAX;
  for (i = 0; i < size; i++) { /* 各文字を復元する */
    range = (unsigned long)(high - low) + 1;
    c = binarysearch((unsigned)((((unsigned long)
      (value - low) + 1) * cum[N] - 1) / range));
    high = (unsigned short)
        (low + (range * cum[c + 1]) / cum[N] - 1);
    low = (unsigned short)
        (low + (range * cum[c  ]) / cum[N]);
    for ( ; ; ) {
      if   (high < Q2) { /* 何もしない */ }
      else if (low >= Q2) { /* 何もしない */ }
      else if (low >= Q1 && high < Q3) {
        value -= Q1; low -= Q1; high -= Q1;
      } else break;
      low <<= 1; high = (high << 1) + 1;
      value = (value << 1) + getbit(); /* 1ビット読む */
    }
    putc(c, outfile); /* 復元した文字を書き出す */
    if ((i & 1023) == 0) printf("%12lu\r", i);
  }
  printf("%12lu\n", size); /* 原文のバイト数 */
}
0861132人目の素数さん
垢版 |
2020/11/28(土) 10:07:04.52ID:LpYp+oBb
悪霊退散!!!
int change(int n, int k) /* 再帰版 */
{
  int s;

  if (n < 0) return 0;
  s = 1 + n / 5 + change(n - 10, 10);
  if (k >= 50) s += change(n - 50, 50);
  if (k >= 100) s += change(n - 100, 100);
  return s;
}

int change1(int n) /* 非再帰版 */
{
  int i, j, s, t, u;

  s = 0;
  for (i = n / 100; i >= 0; i--) {   /* 100円玉 */
    t = n - 100 * i;
    for (j = t / 50; j >= 0; j--) { /* 50円玉 */
      u = t - 50 * j;
      s += (1 + u / 5 - u / 10) * (1 + u / 10);
    }
  }
  return s;
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int i;

  printf("お金の払い方\n");
  printf(" 金額  再帰版 非再帰版\n");
  for (i = 0; i <= 500; i += 5)
    printf("%6d %8d %8d\n", i, change(i, i), change1(i));
  return EXIT_SUCCESS;
}
0862132人目の素数さん
垢版 |
2020/11/28(土) 10:08:41.83ID:LpYp+oBb
#include <math.h>
#define PI 3.14159265358979323846264
double p_nor(double z) /* 正規分布の下側累積確率 */
{
  int i;
  double z2, prev, p, t;

  z2 = z * z;
  t = p = z * exp(-0.5 * z2) / sqrt(2 * PI);
  for (i = 3; i < 200; i += 2) {
    prev = p; t *= z2 / i; p += t;
    if (p == prev) return 0.5 + p;
  }
  return (z > 0);
}

double q_nor(double z) /* 正規分布の上側累積確率 */
{
  return 1 - p_nor(z);
}

double q_chi2(int df, double chi2) /* 上側累積確率 */
{
  int k;
  double s, t, chi;

  if (df & 1) { /* 自由度が奇数 */
    chi = sqrt(chi2);
    if (df == 1) return 2 * q_nor(chi);
    s = t = chi * exp(-0.5 * chi2) / sqrt(2 * PI);
    for (k = 3; k < df; k += 2) {
      t *= chi2 / k; s += t;
    }
    return 2 * (q_nor(chi) + s);
  } else {   /* 自由度が偶数 */
    s = t = exp(-0.5 * chi2);
    for (k = 2; k < df; k += 2) {
      t *= chi2 / k; s += t;
    }
    return s;
  }
}

double p_chi2(int df, double chi2) /* 下側累積確率 */
{
  return 1 - q_chi2(df, chi2);
}
0863132人目の素数さん
垢版 |
2020/11/28(土) 10:09:51.79ID:LpYp+oBb
悪霊退散!!!
#include <stdio.h>
#include <math.h>
#define EULER 0.577215664901532860606512090082 /* Eulerの定数 $\gamma$ */

static double Ci_series(double x) /* 級数展開 */
{
  int k;
  double s, t, u;

  s = EULER + log(x);
  x = - x * x; t = 1;
  for (k = 2; k < 1000; k += 2) {
    t *= x / ((k - 1) * k);
    u = s; s += t / k;
    if (s == u) return s;
  }
  printf("Si_series(): 収束しません.\n");
  return s;
}

double Ci_asympt(double x) /* 漸近展開 */
{
  int k, flag;
  double t, f, g, fmax, fmin, gmax, gmin;

  fmax = gmax = 2; fmin = gmin = 0;
  f = g = 0; t = 1 / x;
  k = flag = 0;
  while (flag != 15) {
    f += t; t *= ++k / x;
    if (f < fmax) fmax = f; else flag |= 1;
    g += t; t *= ++k / x;
    if (g < gmax) gmax = g; else flag |= 2;
    f -= t; t *= ++k / x;
    if (f > fmin) fmin = f; else flag |= 4;
    g -= t; t *= ++k / x;
    if (g > gmin) gmin = g; else flag |= 8;
  }
  return 0.5 * ((fmax + fmin) * sin(x)
        - (gmax + gmin) * cos(x));
}

double Ci(double x)
{
  if (x < 0) return -Ci(-x);
  if (x < 18) return Ci_series(x);
  return       Ci_asympt(x);
}
0864132人目の素数さん
垢版 |
2020/11/28(土) 10:10:55.27ID:LpYp+oBb
悪霊退散!!!
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

#define LIMIT ((ULONG_MAX - 1) / 3)

int main()
{
  unsigned long n;

  printf("n = "); scanf("%lu", &n);
  while (n > 1) {
    if (n & 1) { /* 奇数 */
      if (n > LIMIT) {
        printf("\nOverflow\n"); return 1;
      } else n = 3 * n + 1;
    } else n /= 2;
    printf(" %lu", n);
  }
  printf("\n");
  return EXIT_SUCCESS;
}
0865132人目の素数さん
垢版 |
2020/11/28(土) 10:11:57.73ID:LpYp+oBb
悪霊退散!!!
int comb(int n, int k)
{
  if (k == 0 || k == n) return 1;
  /* if (k == 1) return n; */
  return comb(n - 1, k - 1) + comb(n - 1, k);
}

unsigned long combination(int n, int k)
{
  int i, j;
  unsigned long a[17];

  if (n - k < k) k = n - k;
  if (k == 0) return 1;
  if (k == 1) return n;
  if (k > 17) return 0; /* error */
  for (i = 1; i < k; i++) a[i] = i + 2;
  for (i = 3; i <= n - k + 1; i++) {
    a[0] = i;
    for (j = 1; j < k; j++) a[j] += a[j - 1];
  }
  return a[k - 1];
}
0866132人目の素数さん
垢版 |
2020/11/28(土) 10:13:43.71ID:LpYp+oBb
#define SCALAR double
#include "matutil.c"
#include <math.h>

double lu(int n, matrix a, int *ip) /* LU分解 */
{
  int i, j, k, ii, ik;
  double t, u, det;
  vector weight;

  weight = new_vector(n);  /* {\tt weight[0..n-1]} の記憶領域確保 */
  det = 0;          /* 行列式 */
  for (k = 0; k < n; k++) { /* 各行について */
    ip[k] = k;       /* 行交換情報の初期値 */
    u = 0;         /* その行の絶対値最大の要素を求める */
    for (j = 0; j < n; j++) {
      t = fabs(a[k][j]); if (t > u) u = t;
    }
    if (u == 0) goto EXIT; /* 0 なら行列はLU分解できない */
    weight[k] = 1 / u;   /* 最大絶対値の逆数 */
  }
  det = 1;          /* 行列式の初期値 */
  for (k = 0; k < n; k++) { /* 各行について */
    u = -1;
    for (i = k; i < n; i++) { /* より下の各行について */
      ii = ip[i];      /* 重み×絶対値 が最大の行を見つける */
      t = fabs(a[ii][k]) * weight[ii];
      if (t > u) { u = t; j = i; }
    }
    ik = ip[j];
    if (j != k) {
      ip[j] = ip[k]; ip[k] = ik; /* 行番号を交換 */
      det = -det; /* 行を交換すれば行列式の符号が変わる */
    }
    u = a[ik][k]; det *= u; /* 対角成分 */
    if (u == 0) goto EXIT;  /* 0 なら行列はLU分解できない */
    for (i = k + 1; i < n; i++) { /* Gauss消去法 */
      ii = ip[i];
      t = (a[ii][k] /= u);
      for (j = k + 1; j < n; j++)
        a[ii][j] -= t * a[ik][j];
    }
  }
EXIT:
  free_vector(weight); /* 記憶領域を解放 */
  return det;      /* 戻り値は行列式 */
}
0867132人目の素数さん
垢版 |
2020/11/28(土) 10:14:24.10ID:LpYp+oBb
悪霊退散!!!
double matinv(int n, matrix a, matrix a_inv)
{
  int i, j, k, ii;
  double t, det;
  int *ip;  /* 行交換の情報 */

  ip = malloc(sizeof(int) * n);
  if (ip == NULL) error("記憶領域不足");
  det = lu(n, a, ip);
  if (det != 0)
    for (k = 0; k < n; k++) {
      for (i = 0; i < n; i++) {
        ii = ip[i]; t = (ii == k);
        for (j = 0; j < i; j++)
          t -= a[ii][j] * a_inv[j][k];
        a_inv[i][k] = t;
      }
      for (i = n - 1; i >= 0; i--) {
        t = a_inv[i][k]; ii = ip[i];
        for (j = i + 1; j < n; j++)
          t -= a[ii][j] * a_inv[j][k];
        a_inv[i][k] = t / a[ii][i];
      }
    }
  free(ip);
  return det;
}

double infinity_norm(int n, matrix a) /* ∞ノルム */
{
  int i, j;
  double rowsum, max;

  max = 0;
  for (i = 0; i < n; i++) {
    rowsum = 0;
    for (j = 0; j < n; j++) rowsum += fabs(a[i][j]);
    if (rowsum > max) max = rowsum;
  }
  return max;
}
0868132人目の素数さん
垢版 |
2020/11/28(土) 10:43:01.09ID:LpYp+oBb
悪霊退散!!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
enum {FALSE, TRUE};

#define N 10 /* 最大の行数 */

int imax, jmax, solution,
  word[N][128], digit[256], low[256], ok[10];

void found(void) /* 解の表示 */
{
  int i, j, c;

  printf("\n解 %d\n", ++solution);
  for (i = 0; i <= imax; i++) {
    for (j = jmax; j >= 0; j--) {
      c = word[i][j];
      if (c != '\0') printf("%d", digit[c]);
      else      printf(" ");
    }
    printf("\n");
  }
}
0869132人目の素数さん
垢版 |
2020/11/28(土) 10:43:37.17ID:LpYp+oBb
悪霊退散!!!

void try(int sum) /* 再帰的に試みる */
{
  static int i = 0, j = 0, carry;
  int c, d;

  c = word[i][j];
  if (i < imax) {
    i++;
    if ((d = digit[c]) < 0) { /* 定まっていないなら */
      for (d = low[c]; d <= 9; d++)
        if (ok[d]) {
          digit[c] = d; ok[d] = FALSE;
          try(sum + d); ok[d] = TRUE;
        }
      digit[c] = -1;
    } else try(sum + d);
    i--;
  } else {
    j++; i = 0; d = sum % 10; carry = sum / 10;
    if (digit[c] == d) {
      if (j <= jmax) try(carry);
      else if (carry == 0) found();
    } else if (digit[c] < 0 && ok[d] && d >= low[c]) {
      digit[c] = d; ok[d] = FALSE;
      if (j <= jmax) try(carry);
      else if (carry == 0) found();
      digit[c] = -1; ok[d] = TRUE;
    }
    j--; i = imax;
  }
}
0870132人目の素数さん
垢版 |
2020/11/28(土) 10:44:57.61ID:LpYp+oBb
悪霊退散!!!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
enum {FALSE, TRUE};

#define N 10 /* 最大の行数 */

int imax, jmax, solution,
  word[N][128], digit[256], low[256], ok[10];

void found(void) /* 解の表示 */
{
  int i, j, c;

  printf("\n解 %d\n", ++solution);
  for (i = 0; i <= imax; i++) {
    for (j = jmax; j >= 0; j--) {
      c = word[i][j];
      if (c != '\0') printf("%d", digit[c]);
      else      printf(" ");
    }
    printf("\n");
  }
}
#include <math.h>
#define PI   3.14159265358979324 /* $\pi$ */
#define LOG_2PI 1.83787706640934548 /* $\log 2\pi$ */
#define N    8

#define B0 1         /* 以下はBernoulli数 */
#define B1 (-1.0 / 2.0)
#define B2 ( 1.0 / 6.0)
#define B4 (-1.0 / 30.0)
#define B6 ( 1.0 / 42.0)
#define B8 (-1.0 / 30.0)
#define B10 ( 5.0 / 66.0)
#define B12 (-691.0 / 2730.0)
#define B14 ( 7.0 / 6.0)
#define B16 (-3617.0 / 510.0)

double loggamma(double x) /* ガンマ関数の対数 */
{
  double v, w;

  v = 1;
  while (x < N) { v *= x; x++; }
  w = 1 / (x * x);
  return ((((((((B16 / (16 * 15)) * w + (B14 / (14 * 13))) * w
        + (B12 / (12 * 11))) * w + (B10 / (10 * 9))) * w
        + (B8 / ( 8 * 7))) * w + (B6 / ( 6 * 5))) * w
        + (B4 / ( 4 * 3))) * w + (B2 / ( 2 * 1))) / x
        + 0.5 * LOG_2PI - log(v) - x + (x - 0.5) * log(x);
}
0871132人目の素数さん
垢版 |
2020/11/28(土) 10:45:32.09ID:LpYp+oBb
悪霊退散!!!

double gamma(double x) /* ガンマ関数 */
{
  if (x < 0)
    return PI / (sin(PI * x) * exp(loggamma(1 - x)));
  return exp(loggamma(x));
}

double beta(double x, double y) /* ベータ関数 */
{
  return exp(loggamma(x) + loggamma(y) - loggamma(x + y));
}
0872132人目の素数さん
垢版 |
2020/11/28(土) 10:47:04.37ID:LpYp+oBb
悪霊退散!!!

#include "matutil.c"

void gauss5(int n, vector diag, vector sub1, vector sub2,
      vector sup1, vector sup2, vector b)
{
  int i;
  double t;

  for (i = 0; i < n - 2; i++) { /* 消去法 */
    t = sub1[i] / diag[i];
    diag[i + 1] -= t * sup1[i];
    sup1[i + 1] -= t * sup2[i];
    b  [i + 1] -= t * b  [i];
    t = sub2[i] / diag[i];
    sub1[i + 1] -= t * sup1[i];
    diag[i + 2] -= t * sup2[i];
    b  [i + 2] -= t * b  [i];
  }
  t = sub1[n - 2] / diag[n - 2];
  diag[n - 1] -= t * sup1[n - 2];
  b  [n - 1] -= t * b  [n - 2];
  b[n - 1] /= diag[n - 1];    /* 後退代入 */
  b[n - 2] = (b[n - 2] - sup1[n - 2] * b[n - 1]) / diag[n - 2];
  for (i = n - 3; i >= 0; i--)
    b[i] = (b[i] - sup1[i] * b[i + 1]
        - sup2[i] * b[i + 2]) / diag[i];
}
0873132人目の素数さん
垢版 |
2020/11/28(土) 10:48:46.51ID:LpYp+oBb
#include <math.h>

double goldsect(double a, double b,
        double tolerance, double (*f)(double x))
{
  const double r = 2 / (3 + sqrt(5));
  double c, d, fc, fd, t;

  if (a > b) { t = a; a = b; b = t; }
  t = r * (b - a); c = a + t; d = b - t;
  fc = f(c); fd = f(d);
  for ( ; ; ) {
    if (fc > fd) {
      a = c; c = d; fc = fd; d = b - r * (b - a);
      if (d - c <= tolerance) return c;
      fd = f(d);
    } else {
      b = d; d = c; fd = fc; c = a + r * (b - a);
      if (d - c <= tolerance) return d;
      fc = f(c);
    }
  }
}

#include <stdio.h>
#include <stdlib.h>
#define TEST 1

double func(double x) /* 最小化する関数 */
{
  static int count = 0;
  const double xmin = 0.314;
  double value;

  value = (x - xmin) * (x - xmin);
  #if TEST
    printf("%4d: f(%g) = %g\n", ++count, x, value);
  #endif
  return value;
}
0874132人目の素数さん
垢版 |
2020/11/28(土) 10:50:06.99ID:LpYp+oBb
#include "bitio.c"       /* ビット入出力 */

#define N    256       /* 文字の種類 */
#define CHARBITS 8       /* 1バイトのビット数 */
int heapsize, heap[2*N-1],   /* 優先待ち行列用ヒープ */
  parent[2*N-1], left[2*N-1], right[2*N-1]; /* Huffman木 */
unsigned long int freq[2*N-1]; /* 各文字の出現頻度 */

static void downheap(int i) /* 優先待ち行列に挿入 */
{
  int j, k;

  k = heap[i];
  while ((j = 2 * i) <= heapsize) {
    if (j < heapsize && freq[heap[j]] > freq[heap[j + 1]])
      j++;
    if (freq[k] <= freq[heap[j]]) break;
    heap[i] = heap[j]; i = j;
  }
  heap[i] = k;
}

void writetree(int i) /* 枝を出力 */
{
  if (i < N) { /* 葉 */
    putbit(0);
    putbits(CHARBITS, i); /* 文字そのもの */
  } else {   /* 節 */
    putbit(1);
    writetree(left[i]); writetree(right[i]); /* 左右の枝 */
  }
}
0875132人目の素数さん
垢版 |
2020/11/28(土) 10:55:02.73ID:LpYp+oBb
悪霊退散!!!

#include "bitio.c"       /* ビット入出力 */

#define N    256       /* 文字の種類 */
#define CHARBITS 8       /* 1バイトのビット数 */
int heapsize, heap[2*N-1],   /* 優先待ち行列用ヒープ */
  parent[2*N-1], left[2*N-1], right[2*N-1]; /* Huffman木 */
unsigned long int freq[2*N-1]; /* 各文字の出現頻度 */

static void downheap(int i) /* 優先待ち行列に挿入 */
{
  int j, k;

  k = heap[i];
  while ((j = 2 * i) <= heapsize) {
    if (j < heapsize && freq[heap[j]] > freq[heap[j + 1]])
      j++;
    if (freq[k] <= freq[heap[j]]) break;
    heap[i] = heap[j]; i = j;
  }
  heap[i] = k;
}

void writetree(int i) /* 枝を出力 */
{
  if (i < N) { /* 葉 */
    putbit(0);
    putbits(CHARBITS, i); /* 文字そのもの */
  } else {   /* 節 */
    putbit(1);
    writetree(left[i]); writetree(right[i]); /* 左右の枝 */
  }
}
0876132人目の素数さん
垢版 |
2020/11/28(土) 10:57:30.57ID:LpYp+oBb
悪霊退散!!!

void encode(void) /* 圧縮 */
{
  int i, j, k, avail, tablesize;
  unsigned long int incount, cr;
  static char codebit[N]; /* 符号語 */

  for (i = 0; i < N; i++) freq[i] = 0; 
  while ((i = getc(infile)) != EOF) freq[i]++; 
  heap[1] = 0; /* 長さ0のファイルに備える */
  heapsize = 0;
  for (i = 0; i < N; i++)
    if (freq[i] != 0) heap[++heapsize] = i;
  for (i = heapsize / 2; i >= 1; i--) downheap(i);
  for (i = 0; i < 2 * N - 1; i++) parent[i] = 0; /* 念のため */
  k = heap[1]; /
  avail = N; /* 以下のループでハフマン木を作る */
  while (heapsize > 1) { 
    i = heap[1]; 
    heap[1] = heap[heapsize--]; downheap(1); 
    j = heap[1]; 
    k = avail++; 
    freq[k] = freq[i] + freq[j]; 
    heap[1] = k; downheap(1); 
    parent[i] = k; parent[j] = -k; 
    left[k] = i; right[k] = j;   /* 〃 */
  }
  writetree(k); 
  tablesize = (int) outcount; 
  incount = 0; rewind(infile); 
  while ((j = getc(infile)) != EOF) {
    k = 0;
    while ((j = parent[j]) != 0)
      if (j > 0) codebit[k++] = 0;
      else {   codebit[k++] = 1; j = -j; }
    while (--k >= 0) putbit(codebit[k]);
    if ((++incount & 1023) == 0)
      printf("%12lu\r", incount);
  }
  putbits(7, 0);
  printf("In : %lu bytes\n", incount);
  printf("Out: %lu bytes (table: %d bytes)\n",
    outcount, tablesize);
  if (incount != 0) { 
    cr = (1000 * outcount + incount / 2) / incount;
    printf("Out/In: %lu.%03lu\n", cr / 1000, cr % 1000);
  }
}
0877日高
垢版 |
2020/11/28(土) 11:06:56.72ID:0fpuH75L
>876
悪霊退散!!!

どういう意味でしょうか?
0878132人目の素数さん
垢版 |
2020/11/28(土) 11:12:14.24ID:KJCRmjGK
>>824
> x,y,zに関する方程式(3)の満たすべき条件は
「x^n +y^n=z^n」だけではない。
という意味です。

>「(3)の満たすべき条件」とは、どういう意味でしょうか?

「方程式」とは、変数が特定の値をとるときに成り立つ等式のことです。

x,y,zを変数とする方程式(3)において
変数(x,y,z)が満たすべき等式は
「x^n +y^n=z^n」と「z-x= n^{1/(n-1)}」
の両方である。
ということです。
ご理解、納得いただけましたか?
はい/いいえ でお答えください。
0879日高
垢版 |
2020/11/28(土) 11:26:01.62ID:0fpuH75L
>878
x,y,zを変数とする方程式(3)において
変数(x,y,z)が満たすべき等式は
「x^n +y^n=z^n」と「z-x= n^{1/(n-1)}」
の両方である。
ということです。
ご理解、納得いただけましたか?
はい/いいえ でお答えください。

はい。
0880日高
垢版 |
2020/11/28(土) 11:28:56.18ID:0fpuH75L
(修正10)
【定理】n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
【証明】x^n+y^n=z^nを、z=x+rとおいてx^n+y^n=(x+r)^n…(1)とする。
(1)をr^(n-1){(y/r)^n-1}=an{x^(n-1)+…+r^(n-2)x}(1/a)…(2)と変形する。
(2)はa=1、r^(n-1)=nのとき、x^n+y^n=(x+n^{1/(n-1)})^n…(3)となる。
(2)はa=1以外、r^(n-1)=anのとき、x^n+y^n=(x+(an)^{1/(n-1)})^n…(4)となる。
(3)はn=2のとき、x,y,zは整数比となりえる。n>2のとき、x,y,zは整数比とならない。
(4)のx,y,zは(3)のx,y,zのa^{1/(n-1)}倍となる。
∴n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
0881132人目の素数さん
垢版 |
2020/11/28(土) 11:34:59.10ID:g5JRJwZK
>>838
> >811
> nが自然数でなければ明確に反例が知られている。
>
> nが無理数ならば、反例があります。
オマエがそれを知っていようがいまいが、書かれていることが不正確で嘘八百だと書いただけだ。

> 【定理】n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
nが自然数でなければ明確に反例が知られている。なので、これは真っ赤な嘘。
そんなことも理解できず、正確な主張すら書けない日高の書いたものは、
全てが誤魔化し。証明とは呼べない。

証明とは、正確な記述と正しい論理に基づく正確な推論の積み重ねでなければならない。

根拠を聞かれても、どのような推論をしたのかを細かく分解して説明出来ないものは証明ではない。

自分が今まで嘘をつき通してきたことが理解できるまで勉強しろ。理解できなければ返信するな。ゴミ。
0882132人目の素数さん
垢版 |
2020/11/28(土) 11:46:26.27ID:KJCRmjGK
>>879
>はい。

では論を進めます。

(修正10)の
> (3)はn>2のとき、x,y,zは整数比とならない。

このことの理由はあなたが>>603でおっしゃったように
> (3)のyが無理数のとき、x,y,zが整数比となるならば、(3)のyが有理数のときに整数比となります。
ですか?

はい/いいえ でお答えください。
0883132人目の素数さん
垢版 |
2020/11/28(土) 12:08:21.23ID:a85aTjy8
>>808 日高
> >796
> 式が同じか違うかを質問したのではありません。
> この証明は正しいでしょうか? とお尋ねしています。
> 考えを述べてください。
>
> 式が違うので、わかりません。

x^3+8y^3=z^3はx^3+(2y)^3=z^3ですから
「x^3+8y^3=z^3は自然数解を持たない」は「x^3+y^3=z^3は自然数解を持たない」と同値な命題です。
同値であるだけでなく、同じ証明が通用するはずなんですけどね。
どうして「わかりません」なのでしょう。
実は日高さんは自分の書いた【証明】が理解できていないのでは?
0884日高
垢版 |
2020/11/28(土) 12:18:12.46ID:0fpuH75L
>882
このことの理由はあなたが>>603でおっしゃったように
> (3)のyが無理数のとき、x,y,zが整数比となるならば、(3)のyが有理数のときに整数比となります。
ですか?

はい。
0885日高
垢版 |
2020/11/28(土) 12:23:19.90ID:0fpuH75L
>883
x^3+8y^3=z^3はx^3+(2y)^3=z^3ですから
「x^3+8y^3=z^3は自然数解を持たない」は「x^3+y^3=z^3は自然数解を持たない」と同値な命題です。
同値であるだけでなく、同じ証明が通用するはずなんですけどね。

(2y)とyは、違います。

x^3+y^3=z^3と、(2x)^3+(2y)^3=(2z)^3は、同値です。
0886132人目の素数さん
垢版 |
2020/11/28(土) 12:34:41.65ID:ymvak4/C
>>814 何で「整数比となることと、有理数解をもつこと」は同じだと思うの?
小学生に説明するみたいに説明して下さい。
0887日高
垢版 |
2020/11/28(土) 12:49:38.29ID:0fpuH75L
>886
何で「整数比となることと、有理数解をもつこと」は同じだと思うの?

(sw)^n+(tw)^n=(uw)^nならば、s^n+t^n=u^nとなる。(s,t,uは有理数、wは無理数)
からです。
0888132人目の素数さん
垢版 |
2020/11/28(土) 12:49:53.10ID:ymvak4/C
>>814 ちなみに指摘されたのが『「整数比となることと、有理数解をもつこと」は違う』という事だったから、それ以外は正しいというのは都合良く妄想し過ぎじゃないの?
間違いだらけで何個もおかしい箇所がある答案だったら、とりあえずは1番重大なミスの箇所を指摘する。そういう考えはないの?
0889132人目の素数さん
垢版 |
2020/11/28(土) 12:55:41.66ID:ymvak4/C
>>887 小学生はもちろん大学生でも
なぜ、
(sw)^n+(tw)^n=(uw)^nならば、s^n+t^n=u^nとなる。(s,t,uは有理数、wは無理数)
のが回答になるのか全くわかりません。
もっと言葉をケチらず説明して下さい。
0890日高
垢版 |
2020/11/28(土) 12:59:57.33ID:0fpuH75L
>888
とりあえずは1番重大なミスの箇所を指摘する。そういう考えはないの?

この掲示板の指摘も、他の箇所の指摘がありません。
0891日高
垢版 |
2020/11/28(土) 13:01:38.17ID:0fpuH75L
(修正10)
【定理】n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
【証明】x^n+y^n=z^nを、z=x+rとおいてx^n+y^n=(x+r)^n…(1)とする。
(1)をr^(n-1){(y/r)^n-1}=an{x^(n-1)+…+r^(n-2)x}(1/a)…(2)と変形する。
(2)はa=1、r^(n-1)=nのとき、x^n+y^n=(x+n^{1/(n-1)})^n…(3)となる。
(2)はa=1以外、r^(n-1)=anのとき、x^n+y^n=(x+(an)^{1/(n-1)})^n…(4)となる。
(3)はn=2のとき、x,y,zは整数比となりえる。n>2のとき、x,y,zは整数比とならない。
(4)のx,y,zは(3)のx,y,zのa^{1/(n-1)}倍となる。
∴n>2のとき、x^n+y^n=z^nのx,y,zは自然数とならない。
0892日高
垢版 |
2020/11/28(土) 13:06:42.45ID:0fpuH75L
>889
(sw)^n+(tw)^n=(uw)^nならば、s^n+t^n=u^nとなる。(s,t,uは有理数、wは無理数)
のが回答になるのか全くわかりません。

(3)のyが無理数のとき、x,y,zが整数比となるならば、(3)のyが有理数のときに整数比となります。
0893132人目の素数さん
垢版 |
2020/11/28(土) 13:08:49.51ID:buCr9xZQ
>>884
>はい。

s,t,uを正の有理数、wを正の無理数とします

> (3)のyが無理数のとき、x,y,zが整数比となるならば、(3)のyが有理数のときに整数比となります。
これを言い換えると
「(x,y,z)=(sw,tw,uw)が方程式(3)を満たすとき、
(x,y,z)=(s,t,u)も方程式(3)を満たす」
ということでいいですか?

はい/いいえ でお答えください。
0894132人目の素数さん
垢版 |
2020/11/28(土) 13:09:55.80ID:ymvak4/C
>>892 なぜそれが回答になるのか小学生はもちろん大学生も理解できません。
0895日高
垢版 |
2020/11/28(土) 13:31:34.41ID:0fpuH75L
>893
「(x,y,z)=(sw,tw,uw)が方程式(3)を満たすとき、
(x,y,z)=(s,t,u)も方程式(3)を満たす」
ということでいいですか?

はい。
0896132人目の素数さん
垢版 |
2020/11/28(土) 14:00:21.32ID:g5JRJwZK
>>890
> >888
> とりあえずは1番重大なミスの箇所を指摘する。そういう考えはないの?
>
> この掲示板の指摘も、他の箇所の指摘がありません。
数学の証明においてただの一か所でも間違いがあれば、それ以外は正しかろうが全てゴミ。
それすら理解できない奴は、証明したなどとほざくな。
理解できない限り書き込みも返信もするな。
0897132人目の素数さん
垢版 |
2020/11/28(土) 17:43:46.32ID:tvtcf4HY
>>892
> (3)のyが無理数のとき、x,y,zが整数比となるならば、(3)のyが有理数のときに整数比となります。
間違い

x^2+y^2=(x+2)^2でx,y,zが整数比となるにはy=2t (tは有理数)と書けることが必要
x^2+y^2=(x+√3)^2でx,y,zが整数比となるにはy=√3*tと書けることが必要

x^3+y^3=(x+2)^3でx,y,zが整数比となるにはy=2t (tは有理数)と書けることが必要
x^3+y^3=(x+√3)^3でx,y,zが整数比となるにはy=√3*tと書けることが必要
0898132人目の素数さん
垢版 |
2020/11/28(土) 19:31:42.15ID:9zJVD458
>>885 日高
> >883
> x^3+8y^3=z^3はx^3+(2y)^3=z^3ですから
> 「x^3+8y^3=z^3は自然数解を持たない」は「x^3+y^3=z^3は自然数解を持たない」と同値な命題です。
> 同値であるだけでなく、同じ証明が通用するはずなんですけどね。
>
> (2y)とyは、違います。
>
> x^3+y^3=z^3と、(2x)^3+(2y)^3=(2z)^3は、同値です。

日高さんは「命題が同値」の意味を知らないんですね。残念です。
0899132人目の素数さん
垢版 |
2020/11/28(土) 20:17:02.58ID:tvtcf4HY
>>892
> (3)のyが無理数のとき、x,y,zが整数比となるならば、(3)のyが有理数のときに整数比となります。

(3)のyが無理数のときx,y,zが整数比とならない (少なくともp=2の場合)
(3)のyが有理数のときに整数比となる (少なくともp=2の場合)
の2つはそれぞれ直接証明できるので証明済としてよいとして

(3)のyが無理数のときに整数比とならない (pが奇素数の場合)は直接証明されていない
おまえの証明では
(3)のyが有理数のときに整数比とならない (pが奇素数の場合)
を証明したから証明できたと主張

しかし少なくともp=2の場合は
(3)のyが有理数のときに整数比とならないなら(3)のyが無理数のときに整数比となる
は正しいので結局
(3)のyが無理数のときに整数比とならない (pが奇素数の場合)を直接証明しないと
おまえの主張は正しくないが今のところ
(3)のyが無理数のときに整数比とならない (pが奇素数の場合)は直接証明されていない
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも