X



トップページ数学
1002コメント417KB
分からない問題はここに書いてね448
■ このスレッドは過去ログ倉庫に格納されています
0141132人目の素数さん
垢版 |
2018/10/26(金) 22:00:49.67ID:yoS+SCcd
プログラムで計算したので式はなんとも

部屋が
ABCD
EFGH
IJKL

として
宝物10個のときはABが空きなら縦の勝ち、
AEが空きなら横の勝ち

縦勝ちの宝物9個の配置
CDEFGHIJK
CDEFGHIJL
CDEFGHIKL
CDEFGHJKL
CDEFGIJKL
CDEFHIJKL
CDEGHIJKL
CEFGHIJKL
DEFGHIJKL

横勝ち
BCDFGHIJK
BCDFGHIJL
BCDFGHIKL
BCDFGHJKL
BCDFGIJKL
BCDFHIJKL
BCDGHIJKL
BCFGHIJKL
BDFGHIJKL

以下各個数での勝敗の数
treasures 1: p win 5 q win 5 even 2
treasures 2: p win 26 q win 27 even 13
treasures 3: p win 73 q win 76 even 71
treasures 4: p win 133 q win 140 even 222
treasures 5: p win 167 q win 176 even 449
treasures 6: p win 148 q win 153 even 623
treasures 7: p win 91 q win 92 even 609
treasures 8: p win 37 q win 37 even 421
treasures 9: p win 9 q win 9 even 202
treasures 10: p win 1 q win 1 even 64
treasures 11: p win 0 q win 0 even 12
treasures 12: p win 0 q win 0 even 1
0142132人目の素数さん
垢版 |
2018/10/26(金) 22:08:18.66ID:Jik/lAlw
>>139
Rでよければこんな感じ

# 宝の数を変化させる
treasure0 <- function(m=3,n=4,k=2){
y=1:(m*n)
(z=matrix(y,ncol=n,byrow=T))
(P=as.vector(z))
(Q=as.vector(t(z)))
PQ <- function(x){
p=q=numeric(k)
for(i in 1:k){
p[i]=which(P==x[i])
q[i]=which(Q==x[i])
}
min(p)-min(q)
}
tre=combn(m*n,k)
re=apply(tre,2,PQ)
return(c(短軸有利=sum(re<0),長軸有利=sum(re>0),同等=sum(re==0)))
}
sapply(1:12,function(k) treasure0(3,4,k))

> sapply(1:12,function(k) treasure0(3,4,k))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
短軸有利 5 26 73 133 167 148 91 37 9 1 0 0
長軸有利 5 27 76 140 176 153 92 37 9 1 0 0
同等 2 13 71 222 449 623 609 421 202 64 12 1
0143132人目の素数さん
垢版 |
2018/10/26(金) 22:13:14.38ID:Jik/lAlw
>>138

>128に書いたけど

4x5だと宝箱を増やすと途中で短軸有利から長軸有利に変わっちゃうので自分でもびっくりした。

> 141
よろしければプログラムコードをアップしていただけませんか?Pythonでしょうか?
0144132人目の素数さん
垢版 |
2018/10/26(金) 23:56:14.49ID:yoS+SCcd
>>143
ちょっと整理してました。

NB. n comb n returns all n length set from 0..m-1
comb =: dyad define
if. x=1 do.
(1,~y)$i.y
elseif. x=y do.
(1,y)$i.y
elseif. do.
((y-1) ,/"0 1 (x-1) comb y-1 ), x comb y-1
end.
)

NB. usage: 3 4 game 2
game =: dyad define
p =. ,/ |: x $ i. */x
q =. i. */x
g =. y comb */x
d =. (<./"1)@(g &((i."1 0)~))
r =.(d p)-(d q)
y, (+/ r<0), (+/ r>0), (+/ r=0)
)

NB. run 3 4 games n for n in 1..12
smoutput 'tre p q even'
smoutput 3 4 game "1 0 (1+i. 12)
0145132人目の素数さん
垢版 |
2018/10/27(土) 00:03:42.01ID:ViIBGTWI
>>144のコードはマイナー言語J
ここで実際に動かしてみることができます

https://goo.gl/znRTwf
0146132人目の素数さん
垢版 |
2018/10/27(土) 00:29:15.21ID:jxMEHoZP
一般に,
U[j=1, n]A_j=ℝ となるn個の集合 A_j (*1) について,
j=1,2,...,n で a_j∈A_j となるような変数 a_j を取り,
lim[a_j→α] f(a_j) =k (*2) が全ての j について言えたならば,
lim[x→α] f(x) =k (*2) が言えますか。
例えば, p∈ℚ, q∈ℝ\ℚ とすると, p と q を合わせれば全実数を取ります。このとき,
lim[p→α] f(p) =lim[q→α] f(q) =k
かつ
lim[x→α] f(x) ≠k
となる f(x) は存在しますか。

(*1)αに十分近い要素も含む
(*2)離散的極限
0148132人目の素数さん
垢版 |
2018/10/27(土) 02:22:56.86ID:mmS65Xwb
>>145
お手数かけました。
残念ながら自分の知識ではアラビア文字のように理解不能でした。
0149132人目の素数さん
垢版 |
2018/10/27(土) 02:53:34.68ID:OAQWCVH9
>>60
一つ質問ですが
スタート地点Aに宝があるとゲームスタートと同時に
同着でゲーム終了になるけど、ポイントAに宝は設置されるのですか?
0150132人目の素数さん
垢版 |
2018/10/27(土) 05:41:32.14ID:wXU0Mfmd
σをn次の置換とする。
R^nからR^nへの写像で、(x_1,...,x_n)を(x_σ(1),...,x_σ(n))にうつすものは連続であることを示して下さい。
0153132人目の素数さん
垢版 |
2018/10/27(土) 07:48:26.57ID:mmS65Xwb
>>149
その場合は引き分けで終了。
宝の置き方はランダム。
12C2=66通りに等確率で配置。
0154132人目の素数さん
垢版 |
2018/10/27(土) 08:12:06.26ID:mmS65Xwb
>>145
数字を増やしたらサイトの時間制限を超えて結果がでなくて残念。
尚、>142のRはメモリ不足で停止しました。

NB. usage: 5 6 game 2

NB. run 5 6 games n for n in 1..30
smoutput 'tre p q even'
smoutput 5 6 game "1 0 (1+i. 30)
0155132人目の素数さん
垢版 |
2018/10/27(土) 08:42:19.60ID:jrPclkaP
SMアウトプットとか、なんかヤラシイな、おい。
0157132人目の素数さん
垢版 |
2018/10/27(土) 09:08:02.61ID:A93ydLot
可換環論ではAss、穴(Ann)、ホモロジー、(チェイン)ホモトピー、……汚い言葉がいっぱい出てくるよ!やったね!
0158132人目の素数さん
垢版 |
2018/10/27(土) 09:33:42.09ID:vmv+J04S
>>140
a[i] → c とする。
e>0 とする。
|a[i] - c| ≧ e である i は有限個。
∴ |b[i] - c| ≧ e である i は有限個。
∴ b[i] → c。
0159132人目の素数さん
垢版 |
2018/10/27(土) 09:55:50.27ID:75FsN/5Y
>>146
離散的極限って離散位相での極限?
だったら Aj が disjoint な集合なら
a[1]→α、a[1]∈A[1]、a[2]→α、a[2]∈A[2] 自体が起こりえないやろ?
誘導位相?
0160132人目の素数さん
垢版 |
2018/10/27(土) 12:33:48.57ID:n7pGg+WO
>>154
12部屋から6部屋選ぶ組み合わせは924通りしかないのに
20部屋から10部屋だと184756通り、
30部屋から15部屋だと155117520通り、
という感じなのでどうしても時間やメモリを食いますよね
0161132人目の素数さん
垢版 |
2018/10/27(土) 13:00:02.78ID:BkDpmm6u
>>60
場合分けなどが面倒くさくて疲れ果てたけど、計算結果は>>133と一致。
P1st(n)-Q1st(n) が(偶奇によらず) (n^2-2n-6)(n-1)/6 になったので、n=2,3でQが、n≧4でPが有利。

コードはSagemath。
from sage.calculus.calculus import symbolic_sum
,var m,l,k,a,n
P1 = (symbolic_sum((m-1)*(m)-2*l-1, l,1,m-2)
+ symbolic_sum(symbolic_sum((m-1-k)*(m-k)+k-1-l, l,k,2*k) + symbolic_sum((m-1-k)*(m-k)+3*k-2*l-1, l,2*k+1,m-2), k,1,a-2)
+ symbolic_sum(symbolic_sum((m-1-k)*(m-k)+k-1-l, l,k,m-2), k,a-1,m-2)
).substitute({a:m/2}).substitute({m:n+1})
P2 = (symbolic_sum((m-1)*(m)-2*l-1, l,1,m-2)
+ symbolic_sum(symbolic_sum((m-1-k)*(m-k)+k-1-l, l,k,2*k) + symbolic_sum((m-1-k)*(m-k)+3*k-2*l-1, l,2*k+1,m-2), k,1,a-1)
+ symbolic_sum(symbolic_sum((m-1-k)*(m-k)+k-1-l, l,k,m-2), k,a,m-2)
).substitute({a:(m-1)/2}).substitute({m:n+1})
def P1st(x):
return P1.substitute({n:x}) if mod(x,2) == 1 else P2.substitute({n:x})
Q1 = (symbolic_sum(symbolic_sum((m+1-k)*(m-k)+k-2*l-1, k,0,l-1), l,0,a)
+ symbolic_sum(symbolic_sum((m+1-k)*(m-k)+k-2*l-1, k,0,m-l-1) + symbolic_sum((m-k)^2+k-l,k,m-l,l-1), l,a+1,m-1)
+ symbolic_sum(k^2-2*m*k+m^2+k-m,k,0,m-2)
).substitute({a:(m-1)/2}).substitute({m:n})
Q2 = (symbolic_sum(symbolic_sum((m+1-k)*(m-k)+k-2*l-1, k,0,l-1), l,0,a-1)
+ symbolic_sum(symbolic_sum((m+1-k)*(m-k)+k-2*l-1, k,0,m-l-1) + symbolic_sum((m-k)^2+k-l,k,m-l,l-1), l,a,m-1)
+ symbolic_sum(k^2-2*m*k+m^2+k-m,k,0,m-2)
).substitute({a:m/2}).substitute({m:n})
def Q1st(x):
return Q1.substitute({n:x}) if mod(x,2) == 1 else Q2.substitute({n:x})

P1 == 1/24*(6*n^3 + 20*n^2 - n - 27)*(n - 1) # nが奇数のとき
P2 == 1/4*n^4 + 7/12*n^3 - 7/8*n^2 - 13/12*n + 1 # nが偶数のとき
Q1 == 1/24*(6*n^2 + 10*n - 3)*(n + 1)*(n - 1) # nが奇数のとき
Q2 == 1/24*(6*n^2 - 2*n - 5)*(n + 2)*n # nが偶数のとき
0162132人目の素数さん
垢版 |
2018/10/27(土) 13:42:52.35ID:0lSGEQBN
>>161

>133です。労作ありがとうございます。

コードは全く読めないのですが、宝の数を増やしての計算はこのコードで可能なのでしょうか?

4×5の場合で宝を増やすと

宝:1個 同等
宝:2〜5個 短軸有利
宝:6〜13個 長軸有利
宝:14〜20個 同等

に変化したので差分はどんな関数なのだろうかとか、
5×6ではどうなるのか(メモリ不足で実行できませんでした)とか興味があります。
0164132人目の素数さん
垢版 |
2018/10/27(土) 14:00:54.93ID:BkDpmm6u
>>162
>>161は多項式にまでするために、部屋をn x (n+1)、宝を2個と特殊化したものです。

#nloc(m,n,k,l)は縦m、横nの部屋で横優先が部屋(k,l)で初めて宝を発見する場合で
#宝が置かれても縦優先に先を越されない部屋の数。
def nloc(m,n,k,l):
q,r = divmod(n*k+l,m)
return (n-q)*(m-k)+q-1-l + ((k-r) if r > k else 0)

#nwin(m,n,c)は部屋が縦m、横n、宝がc個で横優先が勝つ宝の配置の数
def nwin(m,n,c):
return sum(binomial(nloc(m,n,k,l),c-1) for k in range(m) for l in range(n) if k*(n-1)<l*(m-1))

縦優先は縦横を替える。
0165132人目の素数さん
垢版 |
2018/10/27(土) 15:11:26.67ID:upNvrDEa
>>164
レスありがとうございます。
コードは読めないのですが、
部屋数から宝部屋の組合せを列挙してどちらが縦横どちらが先にみつけるかを探る手続きで必要な計算式をプログラムが絞りだしてくれるという理解でいいのでしょうか?
0166132人目の素数さん
垢版 |
2018/10/27(土) 16:24:46.83ID:2oyqegeD
>>165
いえ、計算式そのものです。数式で書けば
nwin(m,n,c) := Σ[(k,l)∈{0,…,m-1}×{0,…,n-1}, k*(n-1)<l*(m-1)] binomial((n-q)*(m-k)+q-1-l + (k-r)δ(r > k), c-1)、
ただし、n*k+lをmで割った商をq、余りをrとし、δ(P)をPが真なら1、偽なら0である関数とする。
0167132人目の素数さん
垢版 |
2018/10/27(土) 17:00:25.68ID:jxMEHoZP
>>159
例えば→√2を考えたい時、qの近づけ方は問題ないんでしょうが、pの近付き方を、p_n→√2になるような有理数列p_n上で考えることは出来ないんでしょうか。
→0なんかも、実際に関数に0を入れるわけではなくギリギリまで近付けるように、p自身が√2を取れないのは、定義できないほどの大問題でしょうか。
0168132人目の素数さん
垢版 |
2018/10/27(土) 17:42:26.17ID:OAQWCVH9
>>60
スタート地点のポイントAに宝があると
ゲーム開始とともに同着でゲーム終了になるので除外する
宝がいくつあったとしても、P君とQ君のどちらかが先に
一つでも宝を見つけるとそこでゲーム終了となる

縦方向の探査をn、横方向の探査をn+1として
宝の個数をkと置くと、調査する全範囲は
{n(n+1)−1}−(k−1)=n(n+1)−kと考えられる

Ω={n(n+1)−k)|n≧2,n(n+1)−1>k≧1}

■縦方向に探査をするP君の確率空間は

Ω={(i,j)|1≦i≦n,1≦j≦n(n+1)−k}から

#A=n{n(n+1)−k}−{n(n+1)−k−1}(n−1)
  =n(n^2+n−k)−{n(n^2−1)−k(n−1)−(n−1)}
  =n^3+n^2−kn−n^3+n+kn−k+n−1
  =n^2+2n−k−1
  
#Aは事象Aに含まれる要素の個数

■横方向に探査をするQ君の確率空間は

Ω={(i,j)|1≦i≦n+1,1≦j≦n(n+1)−k}から

#B=(n+1){n(n+1)−k}−n{n(n+1)−k−1}
  ={n(n+1)^2−k(n+1)}−{n^2(n+1)−kn−n}
  ={n^3+2n^2+n−kn−k}−{n^3+n^2−kn−n}
  =n^2+2n−k=n(n+2)−k

#Bは事象Bに含まれる要素の個数

■[n≧2,n(n+1)−1>k≧1]の条件下で以下の式が成立する

∴P(A)={n(n+2)−k−1}/{n^2(n+1)−kn}

∴P(B)={n(n+2)−k}/{n(n+1)^2−k(n+1)}
0169132人目の素数さん
垢版 |
2018/10/27(土) 17:47:25.88ID:OAQWCVH9
>>168
Ωの部分集合を事象と言う
Ω自身は全事象と言う

最初に探す方向を i
行または列が変わる時を j として
P君とQ君のうちどちらが先に宝を見つけるのかという
事象Aと事象Bを考える.

A={(i,j)| i または j が宝}
B={(i,j)| i または j が宝}
0171132人目の素数さん
垢版 |
2018/10/27(土) 18:04:31.01ID:0lSGEQBN
>>168
すでに正解とPCでのカウントの照合が終わっているのに

読んだ人の時間を無駄遣いさせるような明らかな誤答は慎めよ。
0176132人目の素数さん
垢版 |
2018/10/27(土) 19:44:20.53ID:0/HwMd6z
>>167
もちろんそういう近づけかたを考えてもいいけど、その近づけかたを離散位相といってはいけない。
流石にこの程度の基本的な単語は正確に意味を確認するようにしないといかん。
0178132人目の素数さん
垢版 |
2018/10/27(土) 20:46:19.01ID:2oyqegeD
>>173
すみません。発言がよくわかりません。
「数式として算出」とは? >>166は数式ではない?
ここでいう数式とは多項式などのΣのない形のものでしょうか?
「部屋数が増えたり」も、もともと部屋をn×(n+1)などとしていて大きさを変えられますよ?

宝の数が2以外でも(3なら3と)固定されていて部屋の形がn×(n+1)または(n+1)×nなら>>161を少し変えれば
Σのないnについての多項式が得られる、とは言えます。

念のため書いておくと
>>166は部屋の縦横、宝の数が任意だが、Σがある。
部屋の形がn×(n+1)または(n+1)×nとして適当に場合分けすることにより数式処理ソフトで
Σの計算できるようにした、そのコードが>>161
0179132人目の素数さん
垢版 |
2018/10/27(土) 21:43:17.58ID:dqzIYyC2
宝箱問題。申し訳ないのですが、プログラミングに詳しくないものでさっぱりです…
高校生にもわかるようにどなたか解説していただけませんか?(入試数学の解答のような形式であればありがたいです)
0180132人目の素数さん
垢版 |
2018/10/27(土) 22:12:53.07ID:xN+LO4jv
()>>173
可能だけど立式するのは結構な手間
Σを用いた式として立式して sagemath というソフトで簡略化して n の多項式にしたのが>>161
どう考えても面倒なので161さん以外の誰もやっていなかった

宝箱の数をkとして立式することは可能だろうけれども、
更なる面倒さに付き合ってくれる人がいなければここには書かれない
こんなとこでどうでしょうか。
0181132人目の素数さん
垢版 |
2018/10/27(土) 22:49:27.99ID:xN+LO4jv
sagemath はスマートフォンなどでも使うことができて、
僕も今初めて使うので適当ですが例えば>>161の最初の
P1の式(Σを含むもの)の簡略化などはiPhoneアプリでも以下のようにして行えました
アプリ起動して「+」ボタンで新しい式を入力するモードにして

var l,a,n,k = var('l','a','n','k')
a=m/2
m=n+1
sum((m-1)*(m)-2*l-1, l,1,m-2)
+ sum(sum((m-1-k)*(m-k)+k-1-l, l,k,2*k) + sum((m-1-k)*(m-k)+3*k-2*l-1, l,2*k+1,m-2), k,1,a-2)
+ sum(sum((m-1-k)*(m-k)+k-1-l, l,k,m-2), k,a-1,m-2)

と入力して「evaluate」ボタンでこの式を評価(簡略化)

https://i.imgur.com/4bpYZLg.jpg
0182132人目の素数さん
垢版 |
2018/10/27(土) 23:11:22.16ID:eXgFaU/v
弥勒(僧)とシュリニヴァーサ・ラマヌジャンはどっちの方が賢いですか?
0183132人目の素数さん
垢版 |
2018/10/27(土) 23:15:15.57ID:NcmCS8ch
c のプログラムが無かったようなので 宝二つ、m×(m+1)型(m=1〜69)を作ったので参考にあげておきます。

http://codepad.org/pbmWeZZ5

少し説明を加えておくと、マスに1から順に番号をあたえます。
配列P[c]には、c番目 のマスをPは何番目に調査するか
配列Q[c]には、c番目 のマスをQは何番目に調査するか を入れておきます。

i番目とj番目のマスに宝があるとき、P[i]とP[j]を比べて小さい方の値で、Pは宝を発見し、
Q[i]とQ[j]を比べて小さい方の値で、Qは宝を発見します。
この値を比べ、PとQどちらが早く発見したかを判定すると言うだけのものです。

縦、横のマスの数の変更や、宝の数の変更も難しくないと思うので、興味がある方はどうぞ。
(本当は、配列は一つで十分なんだけど、可読性や対称性を考えて書いておきました)
0184132人目の素数さん
垢版 |
2018/10/28(日) 05:58:31.87ID:Alga/Fek
xyz空間の球B:x^2+y^2+z^2=1の表面または内部に点Pをとる。
Pを通り方向ベクトル(1,2,0)に平行な直線lとBとの共有点を考えるとき、以下の問いに答えよ。

(1)lとBの共有点の個数を場合を分けて答えよ。

(2)共有点の個数が2個のときを考える。共有点の一方をS、他方をTとする。
P(x,y,z)とするとき、長さの積PS・PTをx,y,zで表せ。Pが表面上にあるときはP=Sとして考えよ。

(3)Bを平面x=u(-1≦u≦1)で切った切断面D_u上を点Pが動く。P(u,y,z)においてy^2+z^2の取りうる最大値Mをuで表せ。
さらにz=0のとき、積分 I_u = ∫[0→M] (PS・PT) dy をuで表せ。

(4)(3)で求めたI_uに対して定積分K = ∫[-1→1] I_u du を求め、さらに比の値K/(4π/3)を求めよ。
0186132人目の素数さん
垢版 |
2018/10/28(日) 06:50:48.68ID:Alga/Fek
サイコロを振り、出た目に応じて点Pを動かす。最初点Pは(0,0)にある。
点Pが(a,b)にあるとき、偶数の目が出たら(a+1,b+1)に移動させ、奇数の目が出たら(a+1,b-1)に移動させる。
このとき、以下の事象が起こる確率を求めよ。

(1)Pが半直線y=x(x≧1)の上に乗る。
(2)Pが直線y=2x+1の上に乗る。
(3)m,nを整数の定数とし、Pが半直線y=mx+n(x≧1)の上に乗る。必要があればm,nの値に応じて場合分けして答えよ。
0187132人目の素数さん
垢版 |
2018/10/28(日) 07:43:46.81ID:GWXw/AMj
>>178
レスありがとうございました。
多項式で与えられたので他のソフトでも>163のように
簡単にグラフ化できました。
そういう意味で数式と書いたつもりでした。
0188132人目の素数さん
垢版 |
2018/10/28(日) 11:54:19.95ID:F02xc/t9
>>183
いつもcのコードありがとうございます。

このコードだと縦横マスを増やすのは容易でも、宝の数を増やすには for loopを

for(i=1,Pwin=Qwin=Draw=0;i<mn;i++)for(j=i+1;j<mn;j++) for(k=j+1;k<mn;k++) for(l=k+1;l<=mn;l++)

という具合に増やす必要がありますよね?
0189132人目の素数さん
垢版 |
2018/10/28(日) 14:34:09.32ID:uih2KRuT
そんな感じですね。細かいところですが、少し修正を施すと、
for(i=1,Pwin=Qwin=Draw=0;i<mn-2;i++)for(j=i+1;j<mn-1;j++) for(k=j+1;k<mn;k++) for(l=k+1;l<=mn;l++)
で、空回りを回避してます。

もし、このアルゴリズムで、宝の数を一般数化するなら、i,j,k,...の変数を配列にしてループにいれるか、
再帰関数化するか等の方がスマートですが、二つで固定なら、提示したような感じがシンプルですね。

しかし、宝の数可変を前提にプログラムを組むなら、別の方策を取ります。
Qは時刻 c に最初の宝を見つけるので、
・Pの宝の発見時刻が全てcより大きい → Qの勝ち
・Pの宝の発見時刻にcを含み、残りは全てcより大きい → 引き分け
・それ以外 → Pの勝ち
です。
Qは、時刻cに、マスcを調査するので、マスc+1、c+2、...の中に、P[x]>c を満たす
マスがいくつあるかをあらかじめカウントし、テーブル化すれば、あとは、
二項係数の積の和だけの、プログラムとなると思います。
0190132人目の素数さん
垢版 |
2018/10/28(日) 14:34:38.18ID:n8pAFAJX
>>185

m+1≧n≧1 のとき
Σ[k=1,n] C(n,k) C(m,k-1) = C(m+n,n-1)

∵ (1+x)^n (1+x)^m を展開したときの x^(n-1) の係数だから。

Σ[k=1,n-1] C(n,k) C(n+1,k-1) = C(2n-1,n-1) - C(n+1,2)
0191132人目の素数さん
垢版 |
2018/10/28(日) 14:41:09.62ID:n8pAFAJX
>>182

蝉「おまえさ、人としじみのどっちが偉いか知ってるか?」

伊坂幸太郎「グラスホッパー」角川文庫 (2007)
0192132人目の素数さん
垢版 |
2018/10/28(日) 18:59:43.28ID:GWXw/AMj
>>189
部屋の数=mn、宝の数trでmnCtr個の組み合わせを返すサブルーチンが必要になって、ここが処理のボトルネックになるんじゃないかと思うのですが。
0193132人目の素数さん
垢版 |
2018/10/28(日) 20:19:07.22ID:WEdrppmC
数学とはなんでしょうか?
何が数学の本質なんでしょうか?
論理的な体系の構築? 定理の創出?
0194132人目の素数さん
垢版 |
2018/10/28(日) 20:30:37.13ID:x624ZJMX
>>161の若干の一般化とその導出を備忘録的に書いておきます。

>>60
まず、部屋を探る順番が一般の場合を考える。
部屋がNあり、その集合をRとする。A君、B君が探る順番を表わす全単射写像をそれぞれf,gとする:
f,g: R→{0,1,…,N-1} (順番は0から始まるとする。)
部屋自体の位置はなんら答えに影響しない。
σ=g・f^{-1} と置くと、σは{0,1,…,N-1}の置換。(・は写像の合成)
A君がi番目に探る部屋はB君がσ(i)番目に探る部屋ということ。
以下、「A君がi番目に探る部屋」のことを「部屋i」ということにする。

求めたいのは、「A君がB君よりも早く宝を見つける宝の配置の数」であるが、宝の数をcとすると、それは
 Σ[σ(i)>i] binomial(#{j| j>i, σ(j)>i}, c-1) (0≦i,j≦N-1、binomialは二項係数)
である。
なぜか?
「A君が初めて宝を見つける部屋(部屋iとする)」で場合分けしよう。
(つまり部屋0〜i-1には宝がなく、部屋iに宝がある場合)
部屋iはB君がσ(i)番目に探る部屋だからσ(i)>iでないと
少なくともB君はA君よりも前か同時に部屋iで宝を見つける
(B君はその前に別の部屋で宝を見つけることもある)ことになりA君は勝てない。
したがって、σ(i)>iが必要。
残りのc-1個の宝は部屋i+1〜N-1にあるが、宝がある部屋を部屋jとすると、
やはりσ(j)>iでないといけない。逆に全部の宝でそうであればA君が勝つ。
よって、残りのc-1個の宝が置かれてもいい部屋の数は#{j| j>i, σ(j)>i}だけあり、
全部そこに置かれる場合はbinomial(#{j| j>i, σ(j)>i}, c-1)通り。
したがって、上記のようになる。

続く
0195132人目の素数さん
垢版 |
2018/10/28(日) 20:31:26.72ID:x624ZJMX
>>194
続き

部屋が縦m、横nで、A君は横1行を探し終えたらすぐ下の1行に移り、
B君は縦1列を探し終えたらすぐ右の1列に移るという場合を考える。
つまり、m=4,n=3の場合、A君は
0123
4567
891011
B君は
0369
14710
25811
という順番で探す。
このとき、σ=0,3,6,9,1,4,7,10,2,5,8,11。
一般には、σ(nk+l)=ml+k (0≦k≦m-1, 0≦l≦n-1)。

ここまでをPythonで表すと:
#二項係数。SageMathでは定義ずみ
def binomial(n,r):
from math import factorial as f
return f(n)//f(r)//f(n-r) if r>=0 and n-r>=0 else 0

#置換p、宝c個で勝つ宝の配置の数
def nwinperm(p,c):
N = len(p)
return sum(binomial(len([j for j in range(i+1, N) if i<p[j]]),c-1)
for i in range(N) if i<p[i])

#部屋が縦m、横nのときの置換
def rectperm(m,n):
return [m*l+k for k in range(m) for l in range(n)]

#部屋が縦m、横n、宝がc個で横優先が勝つ宝の配置の数
def nwinrect0(m,n,c):
return nwinperm(rectperm(m,n),c)

続く
0196132人目の素数さん
垢版 |
2018/10/28(日) 20:32:10.70ID:x624ZJMX
>>195
続き

部屋が縦m、横nの場合を考えているが、もう少し計算を進める。
#{j| j>i, σ(j)>i} をこの場合に具体的に表そう。

i,j (0≦i,j≦mn-1)をそれぞれ nk+l, nk'+l' (0≦k,k'≦m-1, 0≦l,l'≦n-1) とする。
σ(i)>i ⇔ lm+k>nk+l ⇔ (m-1)l>(n-1)k、
j>i ⇔ nk+l>nk'+l' ⇔ 「k=k' かつ l<l'」または「k<k'」、
σ(j)>i ⇔ l'm+k'>nk+l ⇔ l' + k'/m > (nk+l)/m [ここで nk+lをmで割った商をq、余りをrとすると]
   ⇔ l' + k'/m > q + r/m ⇔ 「q≦l'≦n-1 ただし l'=q, k'≦r を除く」
を使って
#{j| j>i, σ(j)>i} = #{(k',l')|『「k=k' かつ l<l'」または「k<k'」』かつ l'm+k'>nk+l}
に出てくる『「k=k' かつ l<l'」または「k<k'」』かつ l'm+k'>nk+lを満たす組(k',l')の数を求める。
k=k' かつ l<l'のとき σ(i)>iからlm+k>nk+lだからl'm+k'>nk+lは常に成り立つので、l<l'≦n-1でn-1-l個。
k<k' のとき l'm+k'>nk+l ⇔ 「q≦l'≦n-1, k<k'≦m-1 ただし l'=q, k<k'≦r を除く」だから
(n-q)(m-1-k) - (r-k)δ(r>k)個、ただしδ(P)はPが真なら1、偽なら0である関数。
よって、#{j| j>i, σ(j)>i} = (n-1-l) + (n-q)(m-1-k) - (r-k)δ(r>k)。
したがって、求める数は
Σ[0≦k≦m-1, 0≦l≦n-1, (m-1)l>(n-1)k] binomial((n-1-l) + (n-q)(m-1-k) - (r-k)δ(r>k), c-1)。

これを使ったPythonコード:
#nloc(m,n,k,l)は縦m、横nの部屋で横優先が部屋(k,l)で初めて宝を発見する場合で
#宝が置かれても縦優先に先を越されない部屋の数。
def nloc(m,n,k,l):
q,r = divmod(n*k+l,m)
return (n-1-l) + (n-q)*(m-1-k) - (r-k if r > k else 0)

#部屋が縦m、横n、宝がc個で横優先が勝つ宝の配置の数
def nwinrect1(m,n,c):
return sum(binomial(nloc(m,n,k,l),c-1) for k in range(m) for l in range(n) if (m-1)*l>(n-1)*k)

続く
0197132人目の素数さん
垢版 |
2018/10/28(日) 20:34:35.87ID:x624ZJMX
>>196
続き

部屋がm×(m+1) (n=m+1) のとき。
(m-1)l>(n-1)k ⇔ 0≦k≦m-2 かつ k+1≦l≦m。
(nk+l)/m = k + (k+l)/m より k+l<mのときq=k,r=k+l、k+l≧mのときq=k+1,r=k+l-m。
r>k (k+l<m)とr≦k (k+l≧m)とに分けるように場合分けをする:
@0≦k≦[(m-1)/2], k+1≦l≦m-k-2 のとき r>k、
A[(m+1)/2]≦l≦m-1, m-1-l≦k≦l-1 または Bl=m, 0≦k≦m-2 のとき r≦k。

m=6のとき
×@@@@AB
××@@AAB
×××AAAB
××××AAB
×××××AB
×××××××

m=7のとき
×@@@@@AB
××@@@AAB
×××@AAAB
××××AAAB
×××××AAB
××××××AB
××××××××

後はΣの計算。>>60に合わせるとQ君がA君の立場でmが>>60でのn。
#以下 SageMathコード
,var m,n,l,k,q,r,c
T2 = (n-1-l) + (n-q)*(m-1-k)
T1 = T2 - (r-k)
#mが奇数の場合:
Q1 = (sum(sum(binomial(T1.subs({n:m+1,q:k,r:k+l}),c-1), l,k+1,m-k-2), k,0,(m-1)/2-1)
+ sum(sum(binomial(T2.subs({n:m+1,q:k+1,r:k+l-m}),c-1), k,m-1-l,l-1), l,(m+1)/2,m-1)
+ sum(binomial(T2.subs({n:m+1,l:m,q:k+1,r:k}),c-1), k,0,m-2)
).subs({m:n,c:2}).simplify_full().factor()
#mが偶数の場合:
Q2 = (sum(sum(binomial(T1.subs({n:m+1,q:k,r:k+l}),c-1), l,k+1,m-k-2), k,0,m/2-2)
+ sum(sum(binomial(T2.subs({n:m+1,q:k+1,r:k+l-m}),c-1), k,m-1-l,l-1), l,m/2,m-1)
+ sum(binomial(T2.subs({n:m+1,l:m,q:k+1,r:k}),c-1), k,0,m-2)
).subs({m:n,c:2}).simplify_full().factor()
def Q1st(x):
return (Q1 if mod(x,2) == 1 else Q2).subs({n:x})

続く
0198132人目の素数さん
垢版 |
2018/10/28(日) 20:36:18.50ID:x624ZJMX
>>197
続き

部屋がm×(m-1) (n=m-1) のとき。
(m-1)l>(n-1)k ⇔ 1≦l≦m-2 かつ 0≦k≦l。
(nk+l)/m = k + (l-k)/m より q=k,r=l-k。
r>k (l>2k)とr≦k (l≦2k)とに分けるように場合分けをする:
@0≦k≦[(m-3)/2], 2k+1≦l≦m-2 のとき r>k、
A1≦k≦[(m-3)/2], k≦l≦2k または B[(m-1)/2]≦k≦m-2, k≦l≦m-2 のとき r≦k。

m=7のとき
×@@@@@
×AA@@@
××AAA@
×××BBB
××××BB
×××××B
××××××

m=8のとき
×@@@@@@
×AA@@@@
××AAA@@
×××BBBB
××××BBB
×××××BB
××××××B
×××××××

後はΣの計算。>>60に合わせるとP君がA君の立場でmが>>60でのn+1。
#mが偶数の場合:
P1 = (sum(sum(binomial(T1.subs({n:m-1,q:k,r:l-k}),c-1), l,2*k+1,m-2), k,0,m/2-2)
+ sum(sum(binomial(T2.subs({n:m-1,q:k,r:l-k}),c-1), l,k,2*k), k,1,m/2-2)
+ sum(sum(binomial(T2.subs({n:m-1,q:k,r:l-k}),c-1), l,k,m-2), k,m/2-1,m-2)
).subs({m:n+1,c:2}).simplify_full().factor()
#mが奇数の場合:
P2 = (sum(sum(binomial(T1.subs({n:m-1,q:k,r:l-k}),c-1), l,2*k+1,m-2), k,0,(m-3)/2)
+ sum(sum(binomial(T2.subs({n:m-1,q:k,r:l-k}),c-1), l,k,2*k), k,1,(m-3)/2)
+ sum(sum(binomial(T2.subs({n:m-1,q:k,r:l-k}),c-1), l,k,m-2), k,(m-1)/2,m-2)
).subs({m:n+1,c:2}).simplify_full().factor()
def P1st(x):
return (P1 if mod(x,2) == 1 else P2).subs(n=x)

以上、整理して少し異なったけど>>161の導出でした。
0199132人目の素数さん
垢版 |
2018/10/28(日) 20:51:31.12ID:aWEG2qvY
>>198
P1 == 1/24*(6*n^3 + 20*n^2 - n - 27)*(n - 1) # nが奇数のとき
P2 == 1/4*n^4 + 7/12*n^3 - 7/8*n^2 - 13/12*n + 1 # nが偶数のとき
Q1 == 1/24*(6*n^2 + 10*n - 3)*(n + 1)*(n - 1) # nが奇数のとき
Q2 == 1/24*(6*n^2 - 2*n - 5)*(n + 2)*n # nが偶数のとき

それだけ前置きやってkを含めた式が作れないのですか?
0203132人目の素数さん
垢版 |
2018/10/28(日) 22:38:16.21ID:Z1Fuh7vT
私は何人かの方のコンピュータによる解法はすごいと思いました
正直、Pythonはわからないし、sagemathは数学そのものなのでまだ理解できていないので
読めたのはCだけですが…

久しぶりにまともなスレになった気がします
0204132人目の素数さん
垢版 |
2018/10/28(日) 22:46:21.43ID:aWEG2qvY
>>168
P(A)をP(B)で割ることによって
P君の勝つ数とQ君の勝つ数が導ける

P(A)/P(B)=(P君の勝つ数)/(Q君の勝つ数)

          {n(n+2)−k−1}/{n^2(n+1)−kn}
P(A)/P(B)=――――――――――――――――――――
          {n(n+2)−k}/{n(n+1)^2−k(n+1)}


       =(n+1)(n^2+2n−1−k)/{n^2(n+2)−nk}
          
        ∵[n≧2,n(n+1)−1>k≧1]

∵の範囲でnとkをいろいろと変えて見ることにより
様々な勝率が導ける

計算知能にそのまま入力するだけで通分と約分を
自動計算してくれるので試してごろうじろう

■Wolfram入力例

(n+1)(n^2+2n−1−k)/{n^2(n+2)−nk},k=2,n=3
0206132人目の素数さん
垢版 |
2018/10/29(月) 16:29:35.98ID:K6kqvvZ+
三角形ABCにおいて、
AからBCへ下した垂線をAD,
BCの中点をMとする。
BD > CDとすると
BD^2 - CD^2 = 2BC・MD を示せ。
0208132人目の素数さん
垢版 |
2018/10/29(月) 16:50:07.73ID:K6kqvvZ+
>>206
「垂線の定理」と言うらしい
0210132人目の素数さん
垢版 |
2018/10/29(月) 16:53:18.72ID:fIbV3UU4
スイセンか
ナルシストやね
0211132人目の素数さん
垢版 |
2018/10/29(月) 17:00:59.61ID:K6kqvvZ+
BD-CD=2MD

BD-MD=CD+MD

こんな感じか
0212132人目の素数さん
垢版 |
2018/10/29(月) 17:57:30.68ID:5zZ9Wrnc
>>206
BD^2 - CD^2 = (BD+CD) (BD-CD)
= BC ( (BM+MD) - (CM - MD) )
= 2BC・MD
(∵ BM=CM )

特に垂線である意味がないし「垂線の定理」って何かの間違いでは?
0216132人目の素数さん
垢版 |
2018/10/29(月) 20:28:17.47ID:WCQIfvcO
自然数a,b,cは以下の2つの等式を共に満たす。
a+b^2=c^3
a^2-b(b+c)=a+b+c

(1)このような(a,b,c)を一組求めよ。
(2)(1)で求めたもの以外に(a,b,c)の組が存在するなら、全て決定せよ。
0219132人目の素数さん
垢版 |
2018/10/29(月) 21:40:32.14ID:DqqH4kka
変な質問ですいません
最初にピタゴラスの定理を証明した人って、どういう発想で定理が正しいと考えたのでしょうか?直感でしょうか、経験的によく知られていたのでしょうか?
0220132人目の素数さん
垢版 |
2018/10/29(月) 21:53:25.38ID:Qhs7/BzP
ピタゴラスとエウクレイデスはどっちの方が賢いですか?
0222132人目の素数さん
垢版 |
2018/10/29(月) 22:03:14.93ID:Cj4YfFKv
>>219
証明はどうだかわからないがピタゴラスが多いついたのはタイルを見て予想したと言われているらしい
直角二等辺三角形を敷き詰めると直角二等辺三角形の場合にはピタゴラスの定理が成り立つことがすぐにわかる
ピタゴラスはそこから直角三角形なら常に成り立つのではないかと考えたということのようだ
0223132人目の素数さん
垢版 |
2018/10/29(月) 22:03:18.99ID:Qhs7/BzP
リーマン予想を証明したいのですが、まずは何から勉強をした方が良いのでしょうか?
0226132人目の素数さん
垢版 |
2018/10/29(月) 23:11:35.44ID:H845d6uJ
リーマン予想が証明されたとしたら、残りの他の全ての数学の未解決問題を自分一人で解決したい。
そのためにはやはり、数学の全分野だけでなく、物理学とか哲学とか計算機科学の全分野も究めないと無理なレベルでしょうか?
0227132人目の素数さん
垢版 |
2018/10/29(月) 23:33:15.93ID:Y5FWd7jd
とりあえず、二項定理くらいはわかるようになりましょうよ、ヒマラヤさん
0229132人目の素数さん
垢版 |
2018/10/29(月) 23:39:31.99ID:t6V71XZu
b^2=c^3-a
a=c^3-b^2

a^2-b(b+c)=a+b+c
a^2-b^2-bc=a+b+c
a^2-c^3+a-bc=a+b+c
a^2-c^3-bc-b-c=0
(c^3-b^2)^2-c^3-bc-b-c=0

の整数解を求める
0230132人目の素数さん
垢版 |
2018/10/29(月) 23:44:55.83ID:EbZkQmPV
>>142
宝の数を変化させるコードをHaskellに移植してみた。

import Data.List
import Data.List.Split
m = 5 -- 縦マス(短軸)
n = 6 -- 横マス(長軸)
k = 5 -- 宝の数
q = [0..m*n-1]
matQ = chunksOf m q
matP = transpose matQ --行列を転置して
p = concat matP -- 配列に変換

combinations :: Int -> [a] -> [[a]]
combinations 0 _ = [ [] ]
combinations n xs = [ y:ys | y:xs' <- tails xs, ys <- combinations (n-1) xs']
treasure = combinations k q -- 宝の組み合わせ
ip y = minimum $ map(\x -> elemIndices x p!!0) y -- 宝の、配列pでのindex列を求めて最小値を返す
iq y = minimum $ map(\x -> elemIndices x q!!0) y

idxp = map ip treasure -- 宝の組み合せで実行して
idxq = map iq treasure

p_q = zipWith (-) idxp idxq -- 差をとって大小判別
p1st = length $ filter (<0) p_q -- 短軸方向探索pが先に宝をみつける
q1st = length $ filter (>0) p_q
draw = length $ filter (==0) p_q

main = do
putStrLn $ "p1st = " ++ show p1st ++ ", q1st = " ++ show q1st ++ ", draw = " ++ show draw


Prelude> :main
p1st = 54036, q1st = 55469, draw = 33001
0231132人目の素数さん
垢版 |
2018/10/29(月) 23:56:48.49ID:xsxPk+Li
無限ホテルのパラドックス読んでてわからないことがあって、新しい宿泊客のために既存の客が部屋を一つづつずらすってあるけど、あれは何でそうなるの?
ネットで調べたけどそれらしい答えが無くて困ってる
無限ホテルが集合論のお話で、ホテルは可算無限集合、無限に居る宿泊客全員も可算無限集合で、どっちも無限としての大きさが合うから部屋は過不足なく用意されるって話だってところまではネットで読んだ
で、Wikipediaには順序数? の計算ルールが書いてあって、1+ωとω+1は違うってあったからこれが部屋移動の理由かと最初は思った
でも無限ホテルって無限人の来客があってもokってあるから、これってω+ωでどこに客をぶちこんでも意味変わらないなと
だからこの予想は違うと今は思ってる
この疑問のしっくり来る(理解できる)解説が見つからなくてずっとモヤモヤしてるので、誰か教えてくれるとありがたいです
0232132人目の素数さん
垢版 |
2018/10/29(月) 23:58:10.32ID:EbZkQmPV
-- バグ修正(行と列を間違えていた(._.)

import Data.List
import Data.List.Split
m = 5 -- 縦マス(短軸)
n = 6 -- 横マス(長軸)
k = 5 -- 宝の数
q = [0..m*n-1]
matQ = chunksOf n q
matP = transpose matQ --行列を転置して
p = concat matP -- 配列に変換

combinations :: Int -> [a] -> [[a]]
combinations 0 _ = [ [] ]
combinations n xs = [ y:ys | y:xs' <- tails xs, ys <- combinations (n-1) xs']
treasure = combinations k q -- 宝の組み合わせ
ip y = minimum $ map(\x -> elemIndices x p!!0) y -- 宝の、配列pでのindex列を求めて最小値を返す
iq y = minimum $ map(\x -> elemIndices x q!!0) y

idxp = map ip treasure -- 宝の組み合せで実行して
idxq = map iq treasure

p_q = zipWith (-) idxp idxq -- 差をとって大小判別
p1st = length $ filter (<0) p_q -- 短軸方向探索pが先に宝をみつける
q1st = length $ filter (>0) p_q
draw = length $ filter (==0) p_q

main = do
putStrLn $ "p1st = " ++ show p1st ++ ", q1st = " ++ show q1st ++ ", draw = " ++ show draw

>matrix.exe
p1st = 55469, q1st = 54036, draw = 33001
0233132人目の素数さん
垢版 |
2018/10/30(火) 00:30:32.81ID:pMMbbUDs
>>231
先頭を開けて1人追加するのは 1+ω = ω
倍の部屋番号へ移して ω 人追加するのは 2ω = ω
0234132人目の素数さん
垢版 |
2018/10/30(火) 00:43:18.09ID:i2Q1wF9o
リーマン予想とP≠NP予想はどっちの方が証明するのが難しいですか?
0235132人目の素数さん
垢版 |
2018/10/30(火) 03:04:00.18ID:1kUFo2x+
ABC
EFG

n=2の6マスでP君Q君のそれぞれのファーストの
組の総数をお願いします<(_ _)>
0237132人目の素数さん
垢版 |
2018/10/30(火) 04:26:38.58ID:uBW8ean2
p win : CE, EF, EG, FG
q win : BC, BF, BG, CF, CG
even : AB, AC, AE, AF, AG, BE
かと思った
0238132人目の素数さん
垢版 |
2018/10/30(火) 04:35:38.02ID:m3nuFJvJ
ABC
DEF

P勝ち  CD DE DF EF
Q勝ち  BC BE BF CE CF
引分け  AB AC AD AE AF BD
0239132人目の素数さん
垢版 |
2018/10/30(火) 04:38:18.15ID:uBW8ean2
質問では DEF が EFG になってるのから俺はちゃんとその通りにやってるのにお前らときたら自由だな…
>>236に至ってはよく見るとABCDEFGの7種使ってるし
0240132人目の素数さん
垢版 |
2018/10/30(火) 05:53:06.67ID:DPMEzEI3
>>233
ありがとうございます
連続の質問になって申し訳ないんで付けど、2ωとω+ωってこれは違うものなんですか?
■ このスレッドは過去ログ倉庫に格納されています

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