1 :
デフォルトの名無しさん :
2001/08/07(火) 11:19 数学(まあ算数の範囲も含めよう)的な問題のTIPS/Q&Aスレです
個別にあるとすぐに下がってしまうのでこの領域の話題をまとめましょう
関連スレ
>>2
2 :
デフォルトの名無しさん :2001/08/07(火) 11:19
早速だけど、 非力なCPUで対数を計算させたいのです。 log(a)を求めるのに、a=b*2^n として bを0.5~の範囲に調整し x = 1-b として(xは0~0.5の範囲) ln(b) = -(x+x^2/2+x^3/3+x^3/4+x^5/5+x^6/6+x^7/7) さらに高速なのは x=(1-b)/(1+b) として(xは0~0.333の範囲) ln(b) = -2*(x+x^3/3+x^5/5+x^7/7+x^7/9) log(b) =-0.86859*(x+x^3/3+x^5/5+x^7/7+x^7/9) というのは考えました。 これでまあなんとかなりそうだけど、 c=log(a)が求まっている時に aとそう違わないa'に対して c'=log(a') をもっと効率的に求める方法は無いでしょうか? つまりニュートン法みたいに、ある計算をすると精度が 少し上がるような計算方法は無いでしょうか? ニュートン法をそのまま適用するとexp(x)を計算しなけりゃ いけないようなのですが、これを巧く消す方法が無いかな?
具体的な応用は、いわゆるスペアナみたいなものなんで、 精度は少数以下6ビット程度です。 (だから前回の結果とはそんなに極端には変わりません) 最悪テーブルを引く方法でもいいのですが、メモリ も極小なので巧い計算方法があればという所なんです。
俺は差し迫って必要ってわけでもないので ゆっくり勉強するのだ。 大学受験もあるしな。
>>3 除算がそれほど苦じゃないなら 0.5~1にした後で
√0.5以下なら√0.5で割ってから級数展開すれば収束が早くなるよ
後でlog(√0.5)を足せばいい。
あるいは平方根(lこれはニュートン法3回程度で十分)出してから
級数展開してもいいし
テーブルを作る方法でも、荒いテーブルを作っておいて
補間する方法でいいんじゃないの?
log(x)の傾きは1/xだから、これで補間してもそれなりの精度出るでしょ。
>>6 レスありがとうございます。
色々考えてみて、やっぱり逐次的に精度が上がる方法は難しいようです。
テーブルを補間する方法で考えてみます
CPUは除算命令は持ってるけど24クロックかかるという奴なんで除算も苦しいです
9 :
デフォルトの名無しさん :2001/08/07(火) 16:01
10 :
1 :2001/08/07(火) 18:55
log(a)を求める方法ですが、a=b*2^n として
bを0.5~1の範囲に調整し
log(a)= -0.933*b*b + 2.775*b -1.8437 + log(2)*n
で求める精度が出ました
>>9 >x*b=1
じゃなくて
b=1/x から b-1/x としてやったらどうでしょ?
11 :
9 :2001/08/07(火) 20:20
12 :
デフォルトの名無しさん :2001/08/08(水) 01:18
こういう話題って数学板が参考になるかも
13 :
デフォルトの名無しさん :2001/08/09(木) 22:51
最近のプログラムって数学使わないのかな?
14 :
デフォルトの名無しさん :2001/08/09(木) 22:53
IE6でMathMLに対応していれば、数学の教科書作りたいと思っているけど、 その辺知ってる?
>>13 昔は使ってたのか?
プログラム技術は数学使うけどプログラム自体には数学使わないような気が。
IE6ではMathML対応してないんじゃないかなぁ。
MathMLに対応してるのはAyamaくらいでは。
18 :
デフォルトの名無しさん :2001/08/10(金) 02:28
age
19 :
デフォルトの名無しさん :2001/08/10(金) 03:25
>>15 ド・モルガンの法則とか、その程度かねえ。
ラ・セーヌの☆
DSPのプログラムするのに、数式とか弄る方だと思うんだが mathCadとか使うからもはや自力じゃ何にも解けないな 因数分解とか2次方程式の解とかみんなオマカセさ 解いて欲しい問題あったら出してみてよ
22 :
双六野郎 :2001/08/11(土) 21:27
双六で、上がりまでnマスの位置に居るとき、何回ダイスを振ればあがれるか? ぴったり上がりにはいらなくても(行き過ぎても)ok。ダイスの目は1~6。 n=1 なら 1.000000000 回 n=2 なら 1.666666666.. 回 n=50なら14.761904780.. 回 帰納的解法で解いたけど、一発解の出し方がわからない。 綺麗な一発解があるはずなんだけど...どお?
23 :
双六野郎 :2001/08/11(土) 21:31
あ、何でプログラミングの為の数学かというと、私が 帰納的解法をプログラムで使っているからです。 そのプログラムは、フリーの双六ゲームです。とほほ..
24 :
デフォルトの名無しさん :2001/08/11(土) 21:37
ひさびさに面白そうなお題だね。 ちょっと考えてみよう
25 :
デフォルトの名無しさん :2001/08/11(土) 21:43
n=2で1.66666回?
26 :
デフォルトの名無しさん :2001/08/11(土) 22:09
E(x<=0)=0 として、 E(n) = 1 + 1/6*(E(n-1)+E(n-2)+E(n-3)+E(n-4)+E(n-5)+E(n-6)) になったりする?
27 :
双六野郎 :2001/08/11(土) 23:15
>25 失礼。 n=2で1.16666..の間違いでした。 >26 そのとおり。それが「帰納的」解法だね。 (E(n)を求めるためにはE(n-1)が必要) int goal(n) { int i; double cast[51]; for(i=0;i<n;i++) cast[i]=0; for(i=1;i<n;i++){ for(j=i-1;j>=0;j--){ if((i-j)>6) break; cast[i]+=cast[j]; } cast[i]/=6; cast[i]++; } return cast[i]; } どう?美しくないでしょ? さて、一発解は有るかな?
単に期待値 3.5 で割るだけじゃだめなの?
>>27 50/3.5 で大体 14 ぐらいだけど、
もしかして罠はってる?
29 :
双六野郎 :2001/08/11(土) 23:41
>27 (自己レス) ありゃ?関数がint型に。jも宣言してない。おまけに返すのは(引数-1)の解だ。大変失礼をば。 >28 n→∞ならE(n)はn/3.5に収束しますね。でも、n=1の場合は、明らかにE(n)=1/3.5じゃ無いですよね。 サイの目は下限の有る離散数で、おまけに上限まで有るからやっかいですなぁ。
30 :
26 :2001/08/11(土) 23:50
E(n+1)=7*E(n)/6 - E(n-6)/6 だから(E(n+1)-E(n)を計算) プログラムはもう少し簡単になるのではないでしょうか?
31 :
双六野郎 :2001/08/12(日) 00:20
>30 おお。シンプルですね。素晴らしい。解けそうな予感。 ちょっと解説。 私の言ってる「一発解」を説明しますと、 例えば、E(O)=0 かつ E(n)=E(n)+1 の場合、E(n)=n ですよね。 このように、E(n)を求めるのに、E(n-i) を必要としないやりかたは無いものかと..
32 :
28 :2001/08/12(日) 00:23
なるほどわかった、バカだな>自分
33 :
双六野郎 :2001/08/12(日) 00:28
訂正 X : E(n)=E(n)+1 O : E(n+1)=E(n)+1 また、一発解があったとして、実際にコーディングする際には、pow(6,n-1)が 入ってきそう。doubleでも無理かな。コーディング注意ですね。
34 :
26 :2001/08/12(日) 00:38
乱暴だが、 E(n+1)=r * E(n) (1<r<7/6) のような近似式にして、等比級数を出してしまうとか。
ねえねえ、夜中の通販番組で売っている、 「アーサー・ベンジャミン教授のMath Magics」 って買った人いる?あれってなにかのアルゴリズムに役立つのでは なかろうか。(ネタ半分、マジ半分)。 外出だったらすまんこ。 (Math Magicsとは、「ある数の全部の桁を足して3の倍数になったら その数は3の倍数である」みたいな知識をたくさん集めて、暗算を早くやろう、 という教材です。)
36 :
1 :2001/08/12(日) 11:10
>>22 チラっと見た感じで、近似式は
n /3.5 + 10/21 + sin(2*π*n/6+φ)/EXP(a*n+b)
n=50程度迄で1割程度の精度の近似係数は
φ=0
a=1
b=0
sin,の位相や指数の係数を調整すればもっと精度上がると思う
37 :
1 :2001/08/12(日) 11:25
>>35 プログラマ向け?
1)偶数か奇数かは LSBを見よ
2) a MOD 2^n は a AND 2^n-1 で計算せよ
3) 3で割った余りは a=(a
>>2 +a & 3) を繰り返せ
4) 7で割った余りは a=(a
>>3 +a & 7) を繰り返せ
5) a*2^n は a <<n で計算せよ
6) a/2^n は a >>n で計算せよ
みたいな感じかなあ? もはや不要なテクニックだろうけどね
38 :
1 :2001/08/12(日) 11:35
正確に求めるには Z=1/z として Z変換 1 -------------------------- 1-(Z+Z^2+Z^3+Z^4+Z^5+Z6)/6 を解けばよいのかな?
40 :
1 :2001/08/12(日) 12:02
38は間違いだね
>E(n+1)=7*E(n)/6 - E(n-6)/6
だから 1/(1-7/6Z+Z/6) かな?
>>39 ごめん
41 :
双六野郎 :2001/08/12(日) 12:49
22です。
おお、参考になる。みなさん有難う。
>>36 sinが入るんですか。
振動はしないと思っていたので意外。フーリエ変換の結果でしょうか?
たしかに、n={7,13,19,...}で特異な点が出現しますなあ。
収束E(n)/nは収束するから、expが入るのはなんとなく理解。
42 :
1 :2001/08/12(日) 14:01
>>41 フーリエ変換はしてないけど、Excelで表を書くと振動が見えたし
とりあえずZ変換に出来そうだから、線形だと思う。
だから、振動項と指数減衰項があれば良い近似が出来そうというのが直感
φ=0 は間違いで 90°つまりcos(2πn/6) にしてみて
オフセットは 10/21でいいと思うけど検算してね
43 :
1 :2001/08/12(日) 14:45
自分で検算しました。 n/3.5+10/21+ sin(2*M_PI/24*(n*4+2)) /exp(n-1)*0.238095 n 誤差 1 +0 2 -0.07 3 -0.04 4 +0.02 5 +0.05 6 +0.03 7 -0.05 8 -0.01 以下どんどん誤差は小さくなります。 これで実用的には十分だと思います
44 :
1 :2001/08/12(日) 15:38
さらに、係数を調整してもあまり精度が向上しません。 もっと精度が必要なら n/3.5+10/21+ cos(2*M_PI*(n-1)/6)/exp((n-1)*A)*B + sin(2*M_PI*(n-1)/6)/exp((n-1)*C)*D としてA,B,C,Dの係数を調整すると良いと思います 近似式がこういう格好をしてるので、正確な解は簡単な表現では出来ないように思います
45 :
双六野郎 :2001/08/12(日) 16:25
1さんへ。感謝です。 なるほど、私には十分な精度です。 厳密解がなさそう と解ったこともおおきな収穫でした。 2chって素晴らしい。
46 :
26 :2001/08/12(日) 16:33
数学板で聞いてみたらあっさり答えを出してくれた。 特性方程式の一般化みたいなことをやるみたいだ。 ----- E↑(n) = [E(n), E(n-1), E(n-2), E(n-3), E(n-4), E(n-5), E(n-6)] と置くと、 E↑(n+1) = A・E(n) だから E↑(n) = A^(n-1)・E(1) Aは7×7の行列で、 A11 = 7/6, A17 = -1/6 A21 = A32 = A43 = A54 = A65 = A76 = 1 それ以外の要素は0。 Aのn乗は自力で計算してね。 ----- Aのn乗はO(log n)の計算で出来るし、 疎な行列なのでうまくやれば軽いコードになると思う。
47 :
双六野郎 :2001/08/12(日) 16:47
>46 美しいですね。 要素を見ると正解の予感がするんですが、 "↑"の記号の意味を知らない自分が悲しい。 修行してきます。
48 :
26 :2001/08/12(日) 16:52
縦のベクトルです。 あ、 E↑(n+1) = A・E↑(n) E↑(n) = A^(n-1)・E↑(1) の間違いかな。
49 :
26 :2001/08/12(日) 16:54
漸化式が線形だから、線形代数で解けるのは当たり前なのか…。 似たような問題は同様の行列をつくれば解けるということみたい…。
50 :
1 :2001/08/12(日) 16:56
たぶん ↑はベクトルにするという事でしょう
E(n-6)~E(n) の 7個の要素を持つベクトルを E↑(n)と書くという事だと思います
この表現は、
>>26 や
>>30 の表現と意味は同じだけど
行列のn乗は 2進分解すれば高速に計算出来るという仕掛けが利用出来ると
いう事だと思います
51 :
双六野郎 :2001/08/12(日) 17:02
>48 26さん、ご親切痛み入ります。 了解しました。7行1列の行列ということですね? やってみます。 >うまくやれば軽いコードになると思う。 これは自信ありません。 27に書いたものに限りなく近くなりそうで恐い。
52 :
双六野郎 :2001/08/12(日) 17:12
次から次へと、ここは知識の宝庫ですね。 "↑"が解ったら今度は"2進分解"が解らない。 googleで調べても論文のインデックスが1件だけ。 日本語じゃだめか。"binary partition"で良いですか?
53 :
1 :2001/08/12(日) 17:24
>>52 たとえば a^8 を計算するのにaに7回aを掛けるかわりに
a^2^2^2 と計算します
つまり a2=a*a a4=a2*a2 a^8=a4*a4 と3回に分けて計算します
つまり a^n のnを2進数で表現してべきを高速に計算する方法の事です
54 :
26 :2001/08/12(日) 17:25
例えば、 X^4=(X*X)*(X*X)=(X*X)^2 で掛け算が2回で済みますってことでしょう。 つまり、 A^(2^x)の値を計算しつつメモリに置いておけば A^nのnが大きいときでも A^(2^x1+2^x2+....)とすることにより 計算の手間が減るということです。 また、A^nは上三角行列に似た(1つ下にずれてる感じだが) 行列になります。
検索に疲れて帰ってきてみれば... 有難うございます。たしかに速いし、 有効桁あふれのチェックも兼ねられそう。 この2日間でずいぶん賢くなりました。 重ねて感謝。
56 :
1 :2001/08/12(日) 17:38
バイナリ法(2進分解)が使えるとしても、行列の2乗は結構重い処理です。
nが小さい時には、あまり意味が無いでしょう。
n>12 なら 近似式 n/3.5+10/21 で良い精度の答えになりますから
実用的には n<=12 で
>>26 の計算を使うかテーブルを引き
n>12 で n/3.5+10/21 を使うという方法が一番効率的かと思います
57 :
1 :2001/08/12(日) 18:02
12は見間違いでした n E(n) 近似値 誤差 近似値= n/3.5+10/21 10 3.324 3.333 +0.010 11 3.613 3.619 +0.006 12 3.906 3.905 -0.002 13 4.197 4.190 -0.007 14 4.476 4.476 +0.000 15 4.760 4.762 +0.002 16 5.046 5.048 +0.001 17 5.333 5.333 +0.000 18 5.620 5.619 -0.001 19 5.905 5.905 -0.001 20 6.190 6.190 +0.000
58 :
デフォルトの名無しさん :2001/08/12(日) 21:36
プログラマだからどうしても真の値より不正確でも速い方法に走ってしまうんだね なんか面白いな
最初は真の値の方に興味があったんですけどね。 近似は近似で奥が深い。sinの中身が6周期になる所なんか、宇宙の意思ですね。 ちなみに、私の作った双六ソフトは本双六と呼ばれる平安期に流行ったもので、 n は最大19です。その代り、15個の石をあやつるので、どっちが優勢かの判別が 難しい。そこで27に書いたような方法でインジケーターをつけました。
60 :
デフォルトの名無しさん :2001/08/12(日) 22:19
>59 n<20なら27の方法でサイズ・速度ともに十分だろうに。 (ただし、配列は6要素で循環再利用するのがエコロジカルよ。) そこで一般解が気になるあたりが数学の魔力か。
61 :
60 :2001/08/12(日) 22:21
ところで、本双六ってなに? 石が15個って、自分の駒が15個ってこと?
62 :
デフォルトの名無しさん :2001/08/13(月) 04:36
これって
>>30 の方法だと
double goal(int n)
{
int i;
double a[7]={1,0,};
double r=1;
for(i=1;i<n;i++)
{int j=i%7;
r+=(r-a[j])/6.0;
a[j]=r;
}
return r;
}
だから、真面目に計算しても十分だよな
66 :
デフォルトの名無しさん :2001/08/13(月) 07:46
前回との差だけ前後させる方法でやったらどうだと思ったが doubleだと計算誤差で元に戻れない long doubleでも誤差1%チョット出るな long double a[7]; int pg; int n; init() { pg=0;for(int i=0;i<7;i++)a[i]=0;a[0]=1;n=1;}; double inc(){ long double r=a[pg]; pg=(pg+1) % 7; r+=(r-a[pg])/6.0; //E(n ) =E(n-1) + (E(n-1)-E(n-7))/6 a[pg]=r; n++; return r; }; double dec(){ int pg0=pg; long double r,r0=a[pg]; pg=(pg+7-1) % 7; r=a[pg]; a[pg0] = r*7-r0*6; n--; return r; }; double goal(int m) { while(n>m)dec(); while(n<m)inc(); return a[pg]; }
× a[pg0] = r*7-r0*6 ; これを ○ a[pg0] = r+(r-r0)*6.0; こう修正すると1桁精度が上がった
>>66 n<50 なら10万回繰り返しても精度落ちなかったから何の事かと思ったけど
n=100付近から戻れなくなるんだね
>>66 ひとつの関数にまとめとこう
double goal(int m)
{
static long double a[7]={ 1 , 0 , };
static int pg=0;
static int n=1;
while(n<m) {
long double r=a[pg];
pg=(pg+1) % 7;
r= r+ (r-a[pg])/6.0;
a[pg]=r;
n++;
}
while(n>m){
int pg0=pg;
long double r;
pg=(pg+7-1) % 7;
r=a[pg];
a[pg0] = r+(r-a[pg0])*6.0;
n--;
}
return a[pg];
}
70 :
1 :2001/08/13(月) 11:28
精度の問題を解決するには、 E(n)の代わりに R(n)=E(n)-n/3.5-10/21 とすれ ばいい。 こうすればR(n)はnに応じて値が小さくなり、浮動小数点なら情報落ち が少ない。 すぐに判るように R(n)はE(n)と同じ式になる。 初期値だけを変更すればいい。 double goal(int m) { #define c0 (10.0/21.0) static double a[7]={1.0-1.0/3.5-c0,0-c0,1.0/3.5-c0 ,2.0/3.5-c0 ,3.0/3.5-c0 , 4.0/3.5-c0 , 5.0/3.5-c0}; static int pg=0; static int n=1; while(n<m) { double r=a[pg]; pg=(pg+7-1) % 7; r= r+ (r-a[pg])/6.0; n++; a[pg]=r ; } while(n>m){ int pg0=pg; double r; pg=(pg+1) % 7; r=a[pg]; a[pg0] = r+(r-a[pg0])*6.0; n--; } return a[pg]+(double)m/3.5+c0; }
71 :
1 :2001/08/16(木) 11:46
何かネタない? age
72 :
デフォルトの名無しさん :2001/08/19(日) 12:57
age
73 :
デフォルトの名無しさん :2001/08/20(月) 10:41
メタボールと視線ベクトルとの交差判定の方法を知りたいんです。 たぶん3D系よりもこっちの方が向いてそうだと思うんですが。
>>73 専門スレ以外で聞く時は専門用語の解説をしておくのがエチケットだよ
>>73 そこまで行ったら数学板逝って訊いた方がいい。
>>76 それじゃまだ判らないよ
3次元上の点 Pn と その距離 Rn に応じた濃度 f(Rn)
Σ f(Rn) = C になる点の集合で表現するようだという事は判るけど
fはどんな関数? (1/Rn)^2 みたいな感じ?
78 :
デフォルトの名無しさん :2001/08/20(月) 16:34
>>77 アウアウア- 説明下手でごめんなさい。
基本的には、f(Rn)=^{def}(1/Rn)^2で結構です。
それ以外にもいろいろ種類はあります(直方体とか)が、
まずはメタボール球を表示したいと思いまして。
アルゴリズムにはレイトレーシングを使ってます。
各点ごとに 重みみたいなのが違うんですね? Pn迄の距離 Rn から Σ (Wn/Rn^2) =1 になる点の集合って事ですね ニュートン法でいいんじゃないでしょうか?
80 :
◆3DelPhIM :2001/08/20(月) 20:15
結局、精度のよい初期値をどう求めるかという問題じゃないかな 先に荒く多面体近似してそれとの交点を求めてからニュートン法かな
81 :
78 :2001/08/20(月) 21:44
あと、問題としては法線ベクトルがあるんです。 法線をどうにか取得しなきゃいけないのです。 やっぱりニュートン法ですかね・・・
82 :
78 :2001/08/20(月) 22:16
83 :
デフォルトの名無しさん :2001/08/20(月) 22:42
78って・・・もしかして
85 :
78 :2001/08/21(火) 00:10
86 :
78 :2001/08/22(水) 00:02
>>85 -86
8分戻ってる!
とか一瞬思ってしまった。
89 :
デフォルトの名無しさん :2001/08/22(水) 01:26
90 :
デフォルトの名無しさん :2001/08/24(金) 23:25
#include<stdio.h> int main(void) { char *s = "age"; printf("sage"); return 0; }
92 :
デフォルトの名無しさん :2001/08/25(土) 09:59
93 :
デフォルトの名無しさん :01/09/25 22:01
お室こもひねの瑠璃の暦鼓膜誌筆祖トンはさきくかんまならむ゜まなゆやかおんえかうおやんゆなのよにわほにりのまくきはしちそしすかひきんくみなにのりらせれめろ゛瑠璃にね幕費は差費そしすかんまののれけりのまみきひしはしいすかになせるめむ゜理の門子祖は
94 :
デフォルトの名無しさん :01/09/26 07:22
ここのスレッドに該当するかどうかは分かりませんが、質問します。 24時間制の"時刻"は、"秒"と"分"が60進数、"時"が24進数と分かっていて 「0時丁度から12345秒経過した時点での時・分・秒の値を求めよ」という問題も 簡単に解くことができます。求めるべき値が3個、○進数の要素が2つしかないからです。 これを一般化して"N個の数"があり、それぞれが独立して"○進数である"という 属性を持っているとき、前述の"12345"のように「ある値」を指示されたとき N個の数におけるそれぞれの値を効率良く求める算法・アルゴリズムのようなものは 存在するのでしょうか? 勿論「ある値」は"N個の数"で表せる数値 (冒頭の時刻の例なら 24*60*60-1=86399)を超える値ではないものとします。
>>94 n進数であるという事はあまり関係なく
x = Σ an*ΠAj ただしan<ΠAj に必ず解があるかという問題のような気がしますが?
>>94 n桁目の値 = (ある値 / (nより小さい桁の進数の積)) % nの進数
// 桁ってのは24時間制なら 時=3桁目 分=2桁目 秒=1桁目 ってな感じね。
これじゃダメ?
効率が悪くてダメ?
>>95 意味わかんねえ…鬱。
ごめん ΠAj = A0*A1*A2・・・An という掛算のつもりです
98 :
デフォルトの名無しさん :01/10/09 10:17
age
99 :
デフォルトの名無しさん :01/10/21 20:35
AGE
ところでこれって
>>95 >>97 Σummation = 加算
Πroduct = 積
とかなの?
とかここで訊いちゃダメ?
101 :
ヤパーリ :01/10/21 22:59
age
N進数M桁の多倍長の計算方法 負数 各桁毎に(N-1)の補数を取り、 キャリーcyを1にする cy=1; for(i=0;i<M;i++){ cy = a[i]+(N-1-b[i])+cy; c[i]=cy % N; cy =cy / N; }
10進数でやってみます。2桁としますが符号の為に3桁目を用意します 23-49 の計算 最下位桁:CY=1; 3-9+CY = 3+10-1-9+CY=4 次の桁 :CY=0; 2-4+CY = 2+10-1-4+CY=7 最上位桁:CY=0: 0-0+CY = 0+10-1-0+CY=9 結果974となります。最上位の9は負数を示します これをさらに符号を反転するには0から引算します。 最下位桁:CY=1; 0-4+CY = 0+10-1-4+CY=6 次の桁 :CY=0; 0-7+CY = 0+10-1-7+CY=2 最上位桁:CY=0: 0-9+CY = 0+10-1-9+CY=0 掛算のやりかた 掛算2桁X2桁で4桁になり、符号の為に5桁目を用意します -26*12=-312 の計算 まず負数を補数表現にして 974*12=>74*12-7400=888-1200=-312
105 :
デフォルトの名無しさん :01/10/25 01:04
アッカーマン関数っておもしろいですね。 普通は大学で習うのですか?
106 :
デフォルトの名無しさん :01/10/25 01:13
>>102-104 解説ありがとうございます。
これをもとに実装できそうです。
もしよければ、除算の手がかりなんかも
アドバイスしてもらえないでしょか。
多桁除算の方法は、
1)シフトしながら減算出来れば減算するという方法
2)ニュートン法
>>9 があります。
桁数が多く、掛算が高速に実装出来ているならニュートン法が良好です
ニュートン法は初期値が悪いと収束迄時間がかかりますから、
初期値は多桁の2数を浮動小数点化するか対数化して精度良く求めるのが
後の計算回数を劇的に改善する事になります。
>>107 ニュートン法は色々サンプルがあるようなので、2の方法で実装できそうです。
>>108 私もそこは読んでました。最終目標はそれなんですけど、
まずは動くものから作り上げないとしょうがないので、今は手を出せません。
111 :
デフォルトの名無しさん :01/10/26 01:10
>>61 ,
>>63 化石レスですが
本双六=バックギャモンです.
確か奈良時か平安時代に日本に入ってきて,
江戸時代に現代の双六になった…んじゃなかったかな.
質問・問題 募集中
115 :
デフォルトの名無しさん :01/11/04 15:03
n個線分を含むような、最小の長方形を出すにはどうすればよいですか。 ここで、長方形の縦・横の辺は 必ずしもX,Y軸に対して垂直、水平であるとは限りません。
116 :
デフォルトの名無しさん :01/11/04 23:39
>>115 とりあえず質問.長方形の大きさの定義は?
縦 a, 横 b の場合,a*b, a+b, max(a,b) のどれ?それ以外?
質問の意味もよくわかんない。 n個の線分って、どこからn個の線分とって来るの?
118 :
デフォルトの名無しさん :01/11/05 00:16
XY平面上にランダムに線分がたくさん配置してあって、 その中から(ちょうど?)n個の線分含む長方形のなかで、 縦横の長さの和が最小のものを見つけろってことね? あってる?
>>119 違います。
メモ帳で開いた時にちゃんとできるってことです。
121 :
デフォルトの名無しさん :01/11/05 01:09
あ、いえそういうことではなく、 XY平面状に任意の線分が N 個配置してある場合です。 そのN個を全て含むような、最小(辺の長さの和が)の長方形を。
122 :
デフォルトの名無しさん :01/11/05 01:11
115 の質問内容は,与えられたn個の線分を全て内包する最小長方形を求める方法 を教えてくれってことだと思った.でも,その問題は,与えられた点を全て内包 する最小長方形を求める問題と本質的に同じような気がする... きっと,「平面上の線分集合を管理するデータ構造に関する研究」とかいう題の 卒論をやることになった学生が,卒論の主要部分を質問してるんだね.当たり?
当たり。 鬱陀氏嚢…
外包絡線=凸しか含まない多角形を求めて転がしながら最小になる場所を見つけるんだろうけど 設問:その線分のどれかの辺が必ず接していれば最小かどうか が問題かな
あー 卒論がらみというのは当たっているんですが、 研究テーマは違いますです。 最小長方形問題は研究のメインな部分ではなく、 目的を達成するためのアプローチの1つ、というべきでしょうか。
という事は正確でなくても良いのなら 単純に外包絡線上の2点間の距離で最も長くなる組み合わせを見つけて その方向に回転して収まる長方形を求めればよいのでは?
解決したのかな?
>>115 >>126 の方法で初期値求めて谷を探すようにしないといけないと思うけど
>>17 > MathMLに対応してるのはAyamaくらいでは。
s/Ayama/Amaya/
130 :
デフォルトの名無しさん :01/12/03 02:47
131 :
デフォルトの名無しさん :01/12/22 09:46
あげます
132 :
デフォルトの名無しさん :01/12/22 12:55
3点選んで外接長方形を作る、を、すべての3点の組み合わせに対して 行ったら、その中の最大のものがすべての点を含む最小の外接長方形 なんじゃないの?
大嘘でした、頭足りませんでした、
age
135 :
デフォルトの名無しさん :02/01/19 11:37
なんか話題ない?
136 :
デフォルトの名無しさん :02/01/19 11:45
今MビットのデータRがある 無理数の少数点以下のように無限に続くビット列にRが出現する位置をN とする 1)log2(N)<M-1 である確率を求めよ 2)log2(N)>M+1 である確率を求めよ
137 :
センター試験 :02/01/19 20:46
>>137 高校時代、いまどきBASICかよとか思いながらといてたっけなぁ。
懐かしい。
でも、そんなの数学じゃねぇ。
ついでに言うと、プログラミングでもない。
頭の体操って所だと思うんだけどな。
これをセンター試験に入れる文部省の感性を疑う。
高校のときは、BASICしか知らなかったら、それがプログラミングだと思ってた。 いまは、10種類くらいの言語は一応読めるんで、この問題がいかに糞かってのは分かるな。
>>137 ちょっと待てぃ、これまさか今年の問題なん?
そりゃないぜベイビー(死語)
転載: 10 名前:デフォルトの名無しさん 投稿日:02/02/03 03:44 いくつかのベクトルが、一時独立かどうか調べるアルゴリズムって なんだろ? 独立の定義が曖昧だけど、普通 畳込 Σ(Xi*Yi) がゼロかどうかが定義でかつ調べる方法かと
142 :
デフォルトの名無しさん :02/02/04 21:17
age
>>137 漏れセンター受けたとき、ベーシックわからなかったけど満点取れたよ。
144 :
デフォルトの名無しさん :02/02/09 09:48
145 :
デフォルトの名無しさん :02/02/18 05:23
数学は大事なのでage
146 :
デフォルトの名無しさん :02/02/18 06:19
>>141 それは直交だと思われ。
一次独立って、高校数学の幾何代数(今は呼び方違うかも)でいう
一次独立だよね?
だったら掃き出し法かな。零ベクトルができなかったら一次独立。
147 :
デフォルトの名無しさん :02/02/19 00:38
直交してるなら独立なんじゃないの?
148 :
デフォルトの名無しさん :02/02/19 08:55
>>147 たとえば平面上で直行するとは文字通り 90度角度の違うベクトル
1次独立とは平面上なら3個以下で2個なら0度=平行でない事
・・・もちろんゼロベクトルは除いてね
1次独立の定義は文字通り 1次変換で独立なペア つまりn個の集合があったら
どの1個を取り出しても残ったn-1個の集合のΣai*Vi で表現出来ない事
149 :
デフォルトの名無しさん :02/02/19 09:27
だから直交してるなら独立でしょ?
>だから直交してるなら独立でしょ? それはそうだが、 >>いくつかのベクトルが、一時独立かどうか調べるアルゴリズム としては失格だな。
151 :
デフォルトの名無しさん :02/02/19 10:29
必要十分!!!
>>149 ,151
悪いことはいわんからもう一回中学校行って来い。
>>151 は必要十分な条件をちゃんと提示しろっていう意味で書いたんではないかと。
154 :
141 != 147 :02/02/19 13:04
いやご迷惑をおかけしました。 そういう意味の一次独立なら直交とは違いますね そういう意味の独立って統計処理以外に役立つのかな?
148さんの一次独立定義を変形すると i=1..n として Σai*Vi =0 となる係数aiが存在しない事 になります そこで、ベクトルを並べた行列から、148さんのいう掃き出し法で順に 消去してゼロベクトルが出来るかどうかを調べればOKです 掃き出し法は検索するとみつかるでしょう 正方行列なら行列式がゼロになるかどうかでもOK
156 :
デフォルトの名無しさん :02/03/11 08:52
何か質問ない?
割り算の筆算を教えてください(w ってか、マジで忘れてしまってかなり鬱・・・
158 :
デフォルトの名無しさん :02/03/11 09:25
はいはい 128÷7 12に注目7x1を引いて残り5 これを8をつけ足して58 7x8=56を引いて 残り2 結果18 余り2
10000000b ÷0111b 10000000 -111 x10000 <-結果はこれを加算 -------- 00010000 -000111 x10 <--これを加算 -------- 00000010 <---余り 結果 10010b 余り 010b
>>158 参楠。
AAで書くとこんな感じ?
18
___
7)128
1
___
58
56
__
2
ってか小学校入り直した方がよさそうだ・・・
スレ汚し失礼。
>>159 どうもどうも。
ビット演算なんて久しくやってないなあ・・・
最近CGIしか作ってないし(苦笑)。
PGになって以来、
小数点演算→二次方程式→一次方程式→分数の計算→整数の割り算
の順に忘れていってる。
人生やり直した方がよいでしょうか・・・
162 :
デフォルトの名無しさん :02/03/11 10:33
164 :
デフォルトの名無しさん :02/03/14 09:20
age
165 :
デフォルトの名無しさん :02/03/14 09:52
あはは。三角関数ってなんだっけ?
>>159 ふ~ん
2進数の割り算ってこうやるんだ。
168 :
棄教者 ◆witdLTi2 :02/03/14 11:50
/| / | c / | / | b /θ | ------ a 乱暴な議論ですが 直角三角形で sinθ = b/c cosθ = a/c tanθ = b/a のことを三角関数と呼びます θ>90のときの話とか詳しいことはまじめに本を読むか 神がこのスレに降臨するのを待って下さい
170 :
デフォルトの名無しさん :02/03/14 12:12
>168 それは三角比。 そこから三角関数に至るには角度の拡張を考えなくてはならない。
171 :
デフォルトの名無しさん :02/03/14 13:28
>>165 一度に二人の異性から告白され、その間で思い悩む人の苦労指数
を時間軸に沿ってグラフにしたものです。至る所で微分不可能な
のが特徴。
つまんね
173 :
デフォルトの名無しさん :02/03/14 13:34
174 :
棄教者 ◆witdLTi2 :02/03/14 14:23
>>168 >>θ>90のときの話とか詳しいことはまじめに本を読むか
>>神がこのスレに降臨するのを待って下さい
というわけで
>>170 さん, 神になって下さい
175 :
デフォルトの名無しさん :02/03/14 15:09
ヲイヲイ、図を使わないで説明するなんてかえって難しいぞと思いつつ 単位円を書いてみたりした。以外と覚えてるな => 俺。 すごく前に習ったことなのに。 なんかこの辺詳しいHPあったんだけどURLわかんないや。
なんだ・・・自分が書いてるとおりに /○ <- みたいな図形を 90度回転して作れる図形でいいんだ \/ 例: /\/\/\/○○\ \○\○○/\/\/ /\/○/\○\/\ \○\/\○\/○/ /○○\/○/\/○ \/\/\/○/\/ ○\/\○\/\○\ \/○/\/\○\/
177 :
デフォルトの名無しさん :02/03/17 11:36
数学学力低下・・・ どうする?
教え方が悪い。中高生全員に3Dプログラミングやらせろ。 そうすりゃ代数幾何微積分に力学とことごとく 何に使うのか分かって学びやすくなるだろう。 ちょうど今の俺みたいに。
179 :
棄教者 ◆witdLTi2 :02/03/18 10:07
180 :
デフォルトの名無しさん :02/03/18 13:03
質問です。 (平面上の)閉曲線上の点で距離が最大になる2点を求めたいです。 閉曲線と行っても離散値で1k点ぐらいあります。 1000C2回距離の計算するのは避けたいです。
181 :
棄教者 ◆witdLTi2 :02/03/18 14:01
要するに曲線 f(x) 上の点 (x[i], f(x[i])), (x[j], f(x[j])), ただし i,j <1000 で距離が最大になるやつだよNE? 俺もわからないのでage
>>181 必ずしもxの関数ではないのでは?
曲線(f_x(p),f_y(p))とパラメータ表示するべき?
fの関数によっては妙案があるかもしれないが、考えられるあらゆる関数において、
となると平面上に任意に分布した点、ということになるから・・・どうなんだろう?
この問題解けてもらえませんか 次のデータを格納するためのテータ型について考える。 クラブの情報を格納する変数のデータ型club: このデータは次の内容を保存する i.クラブ名称 (文字例型、最大20文字) ii.クラブの種別 (体育系(taiiku),文科系(bunka), サークル(circle)を区別する列挙型) iii.クラブの人数 (整数型) iv.クラブメンバーの名簿を格納する線形リスト、その要素にかくメンバーの (a) 氏名 (文字列型、最大20文字) (b)年齢(整数型) 1. 上のii. に必要な列挙型をclubtypeとして、iv.の線形リストの要素型をmemberとして定義せよ。 2. データクラブを定義せよ。 3. クラブに新しいメンバーを追加する次の手続きjoinを与えよ。 Procedure join(var c:club; n:member) {クラブcにメンバーnに追加 する} 追加したので、人数も増えることに注意。 4. 2つのクラブを合併して新しいクラブを作る手続きmergeを与えよ。 Procedure merge (c1, c2;club; var c3:club) {c1とc2のメンバーと合併せた新しいクラブc3つくる。名称等はc1を引き継ぐ}
おいおい、宿題丸投げかよ・・・Pascalねぇ。 1.だけ解いてやるよ。 type clubtype = (taiiku,bunka,circle); pmember = ^member; member = record name: array[0..20]of char; age: integer; next: pmember; end; こんなもんかな?
>この問題解けてもらえませんか 解けてもらえません。
187 :
デフォルトの名無しさん :02/03/18 15:16
>>182 閉曲線なので曲線(f_x(p),f_y(p))で考える必要があります。
もう少し制約を考えると、
閉曲線上の任意の点(f_x(0),f_y(0))を考えたとき
閉曲線の順番(用語がわからないです)で(f_x(i),f_y(i)) (i<1000)
となる。
ここで(f_x(p0),f_y(p0))から(f_x(p_i),f_y(p_i))の距離Dを
D=g(i)
とすると、
(必要があれば)gを適当な次数の整式で近似して最小値を求める。
任意の点を(f_x(t),f_y(t))とおき直すとgの最小値Mは
M=h(t)
となる。(と思う)
こんな感じではないかと思っているのだけど同でしょう?
(日本語がわやですいません。)
メタボールの話題が出ていたので. ポリゴンで表現する場合は,正方格子で離散化し,密度の閾値の境界で ポリゴンを貼っていくのが基本的な方法だと思うのですが, 三次元でとっても素な場合,100*100*100格子で10ポリゴンとかアホらしすぎます. 格子切って,左上から順にマーチンキューブ!しか知らないのですが いい方法ないでしょうか? 数学じゃねーな...
密度はパーティクルがもとで密度関数は一定です.
190 :
デフォルトの名無しさん :02/03/21 02:11
191 :
デフォルトの名無しさん :02/03/21 02:17
>>187 ある点を選んでそこから一番離れた点を選ぶ。
さらに、その点から一番離れた点を選ぶ。
これを繰り返して、収束した2点を求める点の組とする。
今即興で考えたので何かマズイ事があるかも知れないけど、どうでしょ?
194 :
デフォルトの名無しさん :02/03/21 18:10
>>193 余裕でマズイです。例えば直交座標で四点ABCDがあり、
A=(4,0)
B=(4,6)
C=(0,3)
D=(8,3)
として、初期位置の選択をAとすると、各点の距離は
A-B:6
A-C:5
A-D:5
となりA-Bが最も遠く、これで収束します。でもC-Dは8だぞ。
195 :
デフォルトの名無しさん :02/03/21 21:25
中学数学ヤリなおそう・・。
196 :
デフォルトの名無しさん :02/03/21 22:03
> 100*100*100格子で10ポリゴン 要するに、ちゃんと期待した密度でポリゴンが生成されてないって事? 密度関数の影響する範囲を限定して、それを元にメタボール全体を 包括するバウンディングボックスを計算してから格子を適用すればいいと思う。 あと密度関数の勾配で分割数を変化させれば効率いいと思うよ。 って、全然数学じゃないんだけど(^^;
197 :
デフォルトの名無しさん :02/04/04 09:13
>>187 問題がよくわからなかったんだけど、 結局
1) 点Pi は Xi Yi という値を持っていて Dij = hypot(Xi-Xj, Yi-Yj) の最大を探す
2) n番目の線分は Lnという長さを持っている
jからiの距離はΣLnの右回と左回りの小さい方で定義される
この最大を求める
のどっちなの?
198 :
デフォルトの名無しさん :02/04/04 09:25
1)なら 外包線を求めて頂点数を減らした後 回転しながら探せば データ量に比例する程度の処理時間ですむ 2)は、その長さを持つ鎖の頂点を順につまんでは長さを測ればいい 最初に右側と左側にリストを作って別け 右側の最初のリストを減じて 左側のリストの最初に挿入 それぞれの末端のリストを調整して短い方の長さが最大になるようにする だけだから これもn^2じゃない
>>180 閉曲線が微分可能な関数でパラメータ表示できる場合、
2変数関数の最大値問題と思えば、その問題はやさしいよ。
たくさんの点列を与えられただけなら、これはシラミ潰しで求められる。
200 :
デフォルトの名無しさん :02/05/12 07:52
浮上
201 :
デフォルトの名無しさん :02/05/27 08:32
再浮上 質問、話題、募集中
臨界点ですな。
203 :
デフォルトの名無しさん :02/06/18 07:08
もうこのスレ不要ですか?
205 :
デフォルトの名無しさん :02/06/19 08:46
>>204 ルールはこんな感じ?
3、4,5 個のグループがあって、グループ内なら何個取ってもいい
○○○
○○○○
○○○○○
最後の1個を取らなければならない方が負け
>>205 そうです。
私がプログラム作ってたときは (3,4,5) みたいに表記してました。
最初が (3,4,5) で、一手やった後にありうるのは、
(2,4,5) (1,4,5) (0,4,5)
(3,3,5) (3,2,5) (3,1,5) (3,0,5)
(3,4,4) (3,4,3) (3,4,2) (3,4,1) (3,4,0)
です。
(0,0,1) これが負けパターン。この状態で自分の番が来たら負け。
後手必勝だから、
>>206 の1手やったあとのパターンは、全部先手必勝なんだよね。
そのパターンすべてに、一手進めたあとに後手必勝になる手がぞんざいするかどうかの
判定を再帰的にしらみつぶしすれば答えがでちゃう。
けど、こういう問題って、たとえば(n,n,0)|n>1は後手必勝だから(n,n,m)は先手必勝、(n,m,0)は必ず
先手が(n,n,0)の形に出来るから先手必勝とかって解いて行くほうが好きだな。
209 :
デフォルトの名無しさん :02/06/23 07:07
先生、プログラミング教えるより先に中学数学教えて下さい。
210 :
デフォルトの名無しさん :02/06/25 23:41
アークタンジェントについて教えてください。 高校では習わないので。
タンジェントの逆関数。多分、-90度<引数<+90度で一価関数
atan(1) = π/4 級数展開 atan(x) := x-x^3/3+x^5/5 ・・・ ±x^n/n ・・・ y=atan(x) の時 x=tan(y)=sin(y)/cos(y)
213 :
デフォルトの名無しさん :02/06/26 23:22
数学って何のためにあるの
>>214 小学一年生のときに公文式をやりたくて仕方がなかった。
親は吝嗇家で「学校の授業をまじめに聞いていれば十分でしょ」と、
公文式の会費を出してくれそうになかった。
必死で頼んだ。幼いながらも必死で言葉を探して、
「 数 学 を 学 ぶ こ と で 宇 宙 の 神 秘 が 解 明 で き る 」
と。
そしたら親が当時三千円の会費を出してくれた。感謝した。
結局高校時代にQ教材まで進んだ。
今また数学を勉強したくなっているので公文式をやろうと思っているが
大人が受講すると月9000円ほど掛かるらしい。
今はV教材までだっけ?
216 :
デフォルトの名無しさん :02/06/28 12:38
だめだー三角関数がわからない・・・
217 :
デフォルトの名無しさん :02/06/28 12:41
ついでに行列も
「オイラーの賜物」、網羅的なわりに安いぞ
>>219 全然解明できないです。
まあ、消防の時は誰だってでかいことを言うもんだよ。
「認めたくないものだな。若さゆえの過ちというものは」
221 :
チェキナ名無しさん ◆S9VRCTCU :02/07/11 18:36
>215 私も 公文式やりたいんだよね。 成人でも 入れてくれるの? 意味もなく 数学やりたいなあ と 思って。
222 :
デフォルトの名無しさん :02/07/11 19:12
>>221 あなたは もしかすると マリモーマさん ですか?
こういうスレはいいね 多分 メンツは結構固定してるんだろうけど もう少し参加者が増えると掘り出し物も出てくるか?
大人でもできます。厨房の頃、父親もやってました。
>>222 公文式では曲面幾何も勉強できます。
>>218 あの本大好き。
高校生くらいで読めていたら人生だいぶ違っただろうなと思う。
「素数夜曲」もいいよ。
(今も買えるのか知らんが)
>>220 ×だな。若さゆえの過ち
○だな。自分自身の若さゆえの過ち
228 :
デフォルトの名無しさん :02/07/31 16:16
話題募集
すてきな三角関数の実装とかは?
231 :
デフォルトの名無しさん :02/08/03 08:20
>>229 こんなのはどう
( ゚Д゚)ノ Delギコ猫のプログラミング相談室part4
http://piza2.2ch.net/tech/kako/1002/10024/1002469894.html より
// 256 * sin(d256/256*2*π)
function iSin256( d256 : integer):integer;
begin
d256:=shortInt(d256);
if d256 = -128 then Result:=0 else
if d256<0 then Result:= -iSin256( - d256 )
else if d256> 64 then Result:= iSin256( 128 - d256 )
else if d256>=32 then
begin
d256:=64-d256;
Result := (4194304-1199*(d256*d256)) div 16384;
end else begin
Result:=(d256* 102933 - (d256*d256*d256)*10) div 16384;
end;
end;
232 :
デフォルトの名無しさん :02/08/15 23:06
逆行列を求める掃き出し法ってどんな方法ですか? いい解説サイト教えてください。 もしくは、英語での名称を教えてください。
>>231 なんだその激しく読みにくいコードは….
pascalってそんなんなんだ….
>>232 線形代数の本を読めば最初のほうに書いてあるでしょ。
持ってないなら一冊くらい買っておけば?
>>233 googleで検索してロクなサイトが見つからなかったから聞いたんだけど、
吐きだし法で検索してました(鬱氏
数学の本なら「高専の数学」がおすすめだ.
和田ひでき
239 :
デフォルトの名無しさん :02/08/30 07:45
保守
240 :
デフォルトの名無しさん :02/08/31 12:53
数学知ってるとスマートな処理になるときあるね。
242 :
今度高校受験 :02/08/31 12:58
因数分解と素因数分解の違いを教えてください。
素因数分解 ⊆ 因数分解。分解した各因数が素なら素因数分解。
>>242 中学校の教科書には書いてないの?
>>243 も言ってるけど、受験生だったらそのくらいのことは自分で調べた方がいいよ。
わからないからってすぐ人に聞くのは、あまり好まれる行為じゃないよ。
以後お気をつけあれ。
247 :
デフォルトの名無しさん :02/09/02 00:08
測定結果を処理するための、プログラムのためにテストデータを作ろうとしています。 ある測定が確率pで正しいことがわかっていて、n回測定を行うとします。 プログラムで1回の観測データごとに0-1の乱数rをつくってr>pなら観測が失敗したことにして うそのデータをいれているんですが、nが大きすぎて時間がかかりすぎまず。 そこで、0からn-1までの乱数iをつくってi番目のデータをうそのデータに入れ替える ということをn(1-p)回繰り返そうと思っているんですが数学的にはこれであってますよね。
>>248 nが十分に大きいときでもあってないですか?
できたらどうあっていないか教えてもらいたいんですが。
>>249 前半の方法で生成したデータには最大n個の失敗データが含まれる。
後半の方法で生成したデータには高々n(1-p)個の失敗データしか含まれない。
前半のデータ列と、後半のデータ列は数学的に同等とはいえない。
後半の方法のデータが、テストデータとして有効かどうかは条件による。
>>250 確かにそうですね、"数学的に"って書いたのが間違ってたんですね。
nが十分に大きければ実用的には有効ですか?
>>251 それは、プログラムで何を処理するかによるでしょ。
直感で、無責任なことを書けば
nが充分大きくて、pが1に近ければ実用上有効だと思う。
>>251 nが1億以上なら有効かもしれないが、
pの値によってはほとんど実時間ではまともな結果がでないと思う。
すなおに、別の数学的にも正しい方法を考え直した方が良い。
nが30億とかになるんで多分大丈夫だと思うんですけど。 念のため測定ミスの確率分布求めて測定ミスの回数を決めるようにします。 ありがとうございました。
数学わからんけどプログラマ…
今だ!0x100番ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ (´⌒(´ ⊂(゚Д゚ )≡≡≡(´⌒;;;≡≡≡ ⊆⊂´ ̄ ⊂ソ (´⌒(´⌒;;  ̄ ̄ ̄ ズザーーーーーッ
257 :
デフォルトの名無しさん :02/09/16 03:07
あーもうわかんないからWebサイト教えてくんなまし 代数方程式と微分積分と行列と三角関数をバカにもわかるような優しい解説のを
Youichi.K lives in Okinawa with wife.
数字わからんけどプログラマ…
261 :
デフォルトの名無しさん :02/09/20 01:19
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (@´∀`)/< 先生!「30゚の直角三角形」の辺の比が1:2:√3とか書いてあります! _ / / / \ 初耳です!どうしよう \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
>>259 プログラミングできるならプログラマでいいじゃん
263 :
デフォルトの名無しさん :02/09/20 01:34
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (@´Д`)/< 先生!斜辺の長さで高さを割った結果がsineだボケだって・・・ _ / / / \ うっさいわボケと・・・ \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
264 :
デフォルトの名無しさん :02/09/21 00:21
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (@´∀`)/< 先生!保守だかんな。 _ / / / \ \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
teacher! hypotenuse is sha he n of triangle?
3点間の最小近似の方程式をどなたか教えてください。 y = ax + b の a 傾き a と切片 b の求めかたです。 2点間近似は分かります。 そのまま2点のx,y座標を代入すればa,bが出ますので。。 Excelの分布グラフ(3点)の近似曲線で方程式を 表示したものと同じ結果を出力するプログラムを 作成したいと考えております。
>>266 ええっとー・・説明するの難しいなあ・・
厳密な手法でなくてよいなら,それこそ自由にアルゴリズムを考えてくれって
結論になっちゃうし,
厳密な手法を知りたいならば「最小二乗法」てのを使うべきですよね。
でもそれを 2ch で説明するにはあまりにもスペースが・・・
ていうことで,「最小二乗法」を解説している本を探してみてはいかが?
268 :
デフォルトの名無しさん :02/09/21 11:32
最小2乗法といっても X軸へかY軸へか それともXY自由かの3つがありえる Excelのアルゴリズムがどうなってるか判らないけど 簡単なのは aとbを求めたとして D= Σ (y[n]-a*x[n]+b) ^2 が最小になるように a,bを定める方式の最小2乗法 a,bについて2次式なので、 これを偏微分して=0の所が最大か最小値になる
どうもお返事ありがとうございます。
>>267 :ええっとー・・説明するの難しいなあ・・
うぅ。。やっぱりそうですか。
:ていうことで,「最小二乗法」を解説している本を探してみてはいかが?
ぐぐるしたとき、最小二乗法については結構ひっかかったのですが、
アルゴリズムを説明しているところまでは見つけられませんでした。
やはりまじめに書籍でお勉強しなきゃいけないんでしょうね。。。。
>>268 :最小2乗法といっても X軸へかY軸へか それともXY自由かの3つがありえる
:Excelのアルゴリズムがどうなってるか判らないけど 簡単なのは aとbを求めたとして
:D= Σ (y[n]-a*x[n]+b) ^2 が最小になるように a,bを定める方式の最小2乗法
:a,bについて2次式なので、 これを偏微分して=0の所が最大か最小値になる
ありがとうございます。
なんとかがんばってこの式の展開にトライしたいと思います。
さらに詳しく実際僕がやりたいこと説明させて頂くと:
(x1,y1)(x2,y2) の 2点を通る線上で x3がxxだったら y3は何?
...と言うのを求めたいのです。
で、点は実は複数個あって若干ばらつくのでもう一個点を
任意に増やして 3点で近似したいと言うのが望みです。
参考までに次のレスに 自作へっぽこ2点近似のプログラムつけときます。
さらなるヒントなどございましたらよろしくお願いいたします。
長くなってごめんなさい。
270 :
デフォルトの名無しさん :02/09/25 01:36
[使い方] % a.out 1 2 2 4 3 (1.00,2,00)(2.00,4.00) X=3.00 ans: Y=6.00 #include <stdio.h> #include <stdlib.h> double *kinji(double, double, double, double, double); int main(int ac, char **av) { static int i; double vl[5], *ans; if (ac != 6) fprintf(stderr, "usage: %s x1 y1 x2 y2 x3\n", *av), exit(1); while (*(++av) != NULL) vl[i++] = atof(*av); ans = kinji(vl[0], vl[1], vl[2], vl[3], vl[4]); printf("(%0.2f,%0.2f)(%0.2f,%0.2f) X=%0.2f\n",vl[0],vl[1],vl[2],vl[3],vl[4]); printf("ans: Y=%0.2f\n", *ans); free(ans); return 0; }
271 :
デフォルトの名無しさん :02/09/25 01:37
double *kinji(double x1, double y1, double x2, double y2, double x3) { double *y3; y3 = (double *)malloc(sizeof(double)); if (y3 == NULL) fprintf(stderr, "error: out of memory.\n"), exit(1); if ((x1-x2) == 0) fprintf(stderr, "error: divide by zero.\n"), exit(1); *y3 = ((y1-y2)*x3+(x1*y2-x2*y1))/(x1-x2); return y3; }
272 :
デフォルトの名無しさん :02/09/25 01:39
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (@´∀`)/< 先生!実はサボってました。 _ / / / \ ごめんなさい、今日から頑張ります! \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
273 :
デフォルトの名無しさん :02/09/25 01:42
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (;@´∀`)/< 2³ = 8 で 3 = logarithm 底2 真数8 ですか? _ / / / \ ちょっと正直おっぱいです! \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
>>274 P=NP問題を説明しろということじゃないよな?
つーか15000円は高ぇ…。。。
>>274 あまり悪口は書きたくないのだが、「自費出版」というあたりがポイントかと。。。
277 :
デフォルトの名無しさん :02/09/25 07:27
>>271 なんで double *y3 = (double *)malloc(sizeof(double)); ?
double kinji(double x1, double y1, double x2, double y2, double x3)
にして 値を返した方がいいよ。
例え double型が構造体でも返せるから
自費出版っていくら位かかるのかな?と思った。
10/10らしいが、10月に入って致命的なクレームが付いたらどうするつもりなんだろ
280 :
デフォルトの名無しさん :02/09/25 13:34
やべ、sage忘れ…ゴメソ
>280 数学板でしたか。 どうもです。
283 :
デフォルトの名無しさん :02/09/25 23:37
つーか、最小二乗法普通にソースコードがgoogleった始めのほうのウェブサイトにあったのだが。
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (@T∀T)/< 先生! なんか放置されてるっぽいです! _ / / / \ 一人で引き篭もるのは辛いよね! \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
>>283 :つーか、最小二乗法普通にソースコードがgoogleった始めのほうのウェブサイトにあったのだが。
お願い!!!!
URI教えてくださいませ。。。。
>>277 :なんで double *y3 = (double *)malloc(sizeof(double)); ?
おおもとのソースは:
y3 = (double **)malloc(sizeof(double **)*cnt + 1);
みたいな感じで配列構造で複数個値を戻すような関数だったのです。
#最初の*y3[0]に個数を入れといてあとでforで展開するみたいな。。。。
#個数は可変でしたので。。。
こんなやりかた変ですか?
血液型の話です。 日本人には38%のA型、31%のO型、 23%のB型、8%のAB型がいるとして、 血液型A型のAA型とAO型の割合、 血液型B型のBB型とBO型の割合を知りたいのです。 血液型占いを信じてるばかどもに説明するのに必要なのです。 よろしくお願いします。
288 :
棄教者 ◆KIKYO7cg :02/09/26 12:35
遺伝子型の出現頻度はハーディー・ワインベルクの法則より
(1) p(A)^2 + 2* p(A) * p(O) = 0.38
(2) p(B)^2 + 2* p(B) * p(O) = 0.23
(3) 2 * p(A) * p(B) = 0.08
(4) p(O)^2 = 0.31
で表せそうな気がする。
(4) より
(5) p(O) = 0.5567
(1), (5) より
(6) p(A)^2 + 2 * 0.556 * p(A) = 0.38
を解いて
(7) p(A) = 0.2739
(2), (5) より
(8) p(B) = 0.1780
(5), (8) を (2) の左辺に代入すると
.0974
あれ、変だぞ。
http://www.genstat.net/kisocont.htm 参照してくれ
289 :
デフォルトの名無しさん :02/09/26 16:27
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (@´∀`)/< teacher! x²-a = 0 _ / / / \ \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
>>287 それって先に AA:AO、BB:BO の比を推定しなきゃ
いかんのではないか
ぐえ読んでなかった
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (@´∀`)/< 先公!今日は 2√7 = √28 みたいなことやったよ! _ / / / \ ちょっと脳みそが漏れちゃいそう \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
>285
>つーか、最小二乗法普通にソースコードがgoogleった始めのほうのウェブサイトにあったのだが。
ありがとうございます。
ぐぐるで「最小二乗法+ソース」でお目当てのページがトップにありました。
#なんか変なキーワードを入れてたみたいです。
>>286 :y3 = (double **)malloc(sizeof(double **)*cnt + 1);
y3 = (double **)malloc(sizeof(double **)*(cnt + 1));
。。。の間違いでした。
>>293 脳みそが耳から漏れてくるようだったら、
耳かきで一気に脳みそに穴をあけて、
全部掻き出してしまいなさい。
。。∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
゚(@´∀`)/< 先公!sineθ = (y/x)って公式がやっと出やがったよ。
_ / / / \ うん、ありがとう
>>295 \⊂ノ ̄ ̄ ̄ ̄\ \________________________
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
297 :
棄教者 ◆KIKYO7cg :02/09/28 00:00
────────────────────────────────
/\ /
/ ヽ / |
/ | / |
/ ´Д` | r/ |y
/ \ /ヽ / |
/ \_/ \ / |
/ \ ,/ |つ† ------
(二|⊃⌒⌒ヽ /~ \ \_/ / x
| ⌒⌒ | \__/
| |
| |_____E[]∃__________________
>>296 sine theta = (y/r) です。
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(@T∀⊂ヽ< うえーん!禿しく間違えたけど気にしないよ!
_ / / / \
>>297-298 サンクスデス
\⊂ノ ̄ ̄ ̄ ̄\ \________________________
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
300 :
デフォルトの名無しさん :02/09/30 00:46
>>300 すげー、全部当てはまるぞ。
つーことで逝ってくる
303 :
デフォルトの名無しさん :02/10/02 00:27
ここ読んで数学勉強中。いいスレだ。
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (@´∀`)/< 先公!素因数分解まで復習逝きますた! _ / / / \ 只管問題解いてウマ(゚Д゚)ってようと思います \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
1+1=田
>>300 いつなくなってもいいようにwgetしときやす
307 :
デフォルトの名無しさん :02/10/05 17:54
エラー訂正についてわかりやすい本もしくはサイトご存じないですか? 現在、リードソロモン符号の実装を行いたいと思っているのですが いかんせんバカなので、ガロア体ってなんじゃホルァという感じなのです。
308 :
デフォルトの名無しさん :02/10/05 18:00
質問れしゅ。 問1:3.14159 を小数点第 3 位に切り上げると? 答A/B 問2:3.14109 を小数点第 3 位に切り上げると? 答A/B 問3:3.14159 を小数点第 4 位で切り上げると? 答A/B 問4:3.14109 を小数点第 4 位で切り上げると? 答A/B 答A:3.141 答B:3.142
309 :
デフォルトの名無しさん :02/10/05 20:31
馬場?
309は誤爆しました。ごめん
>ガロア体ってなんじゃホルァという感じなのです。 環や体について解説されている本を読む。
数学書が敷居高かったら情報理論の本にも少し書いてあると思うよ。
313 :
デフォルトの名無しさん :02/10/06 12:18
>>308 その記述の仕方(というか言葉の使い方)は正しいの ? っていうのを
考えないといかん気がする.
いや, 聞きたいことは分かるんだけど.
315 :
デフォルトの名無しさん :02/10/06 21:22
すみませんでした。言葉使いを考えて再質問です。 数学?算数?的には、3,14109を小数点第4位で切り上げると3,141になると思うのですが、 エクセルなどの関数によると3,1412になります。 関数の設定上、小数点第3位に切り上げる為、問題自体が問1や2ということだと思うのです。 みなさんどう思いますか? 3,14109を小数点第4位で切り上げると3,141になるというのは間違っているのでしょうか?
>>315 > エクセルなどの関数によると3,1412になります。
Excel のどの関数よ ? 少なくとも、Excel2000 では Round(3.14109, 3) は 3.141 になるぞ。
ちなみに、3.14109 って π に近いんだけど、勘違いしてないよな ?
317 :
デフォルトの名無しさん :02/10/06 21:38
>>315 間違っています。
というか、小数点第四位「で」切り上げる、という風に"0"にだけ着目する
ということは通常行わないので、そうした計算が必要な場合には、その定義が
仕様書や法令等にいちいち記述されているはずなのでそれに従ってください。
普通切り上げといえば、例えば「100円単位で切り上げ」とした場合、
100 -> 100, 101 -> 200, ...., 199 -> 200, 200 -> 200, 201 -> 300
というように、切り上げてゆく単位未満に 0 以上の剰余があれば、一単位として
扱ってしまう、という計算を指します。
>>316 すまん、おおぼけだった。
四捨五入じゃなくて切り上げだったんだよな。
>>317 が正しいと思う。
3.1410000... をわずかでも超えたら 3.142 となるので合ってると思う。
319 :
デフォルトの名無しさん :02/10/06 22:03
>>316 Roundup関数です。
Roundは、四捨五入関数ですから3,141になりますね。
320 :
デフォルトの名無しさん :02/10/06 22:14
>>317 納得です。それで、関数等もその通りに作成されているわけですね。
問題で、「0.0101を小数点第3位で切り上げしなさい。」
には、0.011が正解で、0.01は間違いになるわけですね。
うむ~、今まで間違った考え方をしていた。。。
321 :
デフォルトの名無しさん :02/10/06 22:19
いや、小数点第3位で切り上げしなさいという問題が、切り上げという処理自体の定義からすると間違った問いになるわけですね。 正しくは、小数点第2位に切り上げしなさい。ということですね。 ありがとうございます。<317&318
>>321 >いや、小数点第3位で切り上げしなさいという問題が、切り上げという処理自体の
>定義からすると間違った問いになるわけですね。
プログラム的観点から言うと、要求仕様があいまい(またはわかりにくい)という
ことになると思います。間違っているということは無い。こういうときには、「XX
で切り上げる、というのはどういう意味ですか?」と発注者側に確認するのが吉。
さらに忠告するなら、そんなものイチイチ聞いてたらウザイ奴と思われるだけ 両方を実装しておいて、起動時のスイッチで選べるようにしておけ 納品時に実際の担当者に選んでもらうのが一番確実
324 :
デフォルトの名無しさん :02/10/15 10:19
coeciffientの決定はどうなってるの?
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (@´∀`)/< なんか乗法公式とかやってもプログラミングには _ / / / \ 関係無い気がしてきたけど(゚3゚)キニシナーイ! \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
326 :
デフォルトの名無しさん :02/10/21 03:56
>>323 どうでもいいが、そんなものスイッチにしてたらアフォと思われるだけ。
そうやってワケワカランようなスイッチだらけにしたら
納品時に実際の担当者に
「こんな無駄なコード書いてるヒマがあったら、なんで俺に聞かなかったの?」
と言われるのが確実。
つーか、そのコードのドキュメントにどう記録するんだ?
「なんか仕様がよくわかんないからスイッチにした」ってか?
つーか、そのコードをメンテする奴の気持ちを考えなかったのか?
展開しないで因数分解したままの方が計算が速いかな? どうだろう。 ( a + b )^2 = a^2 + 2ab + b^2
( a + b ) * ( a + b ) これ最強。
aが大きい数字で固定 bで検索するような場合は意味があると思うけど
a^2も2aも固定にすりゃ速くなる罠。
bを1に固定すれば、有名な 「奇数を足せば2乗が求まる則」が
C !!
僕をデジタル化してください。
うん、わかった。
337 :
デフォルトの名無しさん :02/10/29 15:50
>>327 FFTを使って計算する時
上位桁と下位桁に別けて 実数のペアのFFT使って というやり方はやるよね?
338 :
デフォルトの名無しさん :02/11/11 09:19
保守
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (@´Д`)/< ハァハァ… _ / / / \ コソーリコソーリ \⊂ノ ̄ ̄ ̄ ̄\ \________________________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
340 :
デフォルトの名無しさん :02/11/11 17:30
| ∧ ! |∀゚) ⊂) |ノ |
(@´∀`)∩ <先生、最近全く進んでません。どうしよう、業いや先生(;゚Д゚)
密度はパーティクルがもとで密度関数は一定です.
343 :
デフォルトの名無しさん :02/11/25 09:27
知ったか振り
344 :
デフォルトの名無しさん :02/11/29 02:17
だれか「All-interval series 」の算出法おしえてくれないかなあ。
ちなみに「All-interval series 」は 1.0からn-1までのn個の「重複・欠員のない」要素からなる任意の数列Z{0,1,2,3...n-1} 2.それぞれの隣接要素の差による数列も「重複・欠員のない」要素からなる数列となる。 といったものです。
346 :
デフォルトの名無しさん :02/11/29 08:19
>>345 Q1、それは再帰定義なの? つまり n=1まで再帰的に定義されるの?
Q2、1階層下の数列は 0 を含む必要があるの?
>>346 定義の1からして、2の数列は0を含みようがないと思われ
1, をA[k] 2,を B[k] =A[k+1]-A[k] として B[k]は0を含めないとしたら よって、B[k]が負数と正数を同時に含む事になると B[k] に欠員が出来てしまう B[k]に欠員が出来ないようにするにはB[k]の全ての符号は同じでなければならない。 A[k+1]=A[k]+B[k] だから A[k+1]=0 となるのは A[k]=-B[k] かk=0 の時だけ ○ もしA[k+1]=0 & A[k]=-B[k] があるとすれば B[k] が全て負となる すなわち A[k+1]<A[k]を満たす必要がある。 [0..n-1] の要素をそういうふうに並べる方法は唯一で A[0]=n-1,..., A[n-1]=0 その場合 B[k] は全て-1になる ○ もし A[0]=0 なら B[k]は全て正となる すなわち A[k+1]>A[k]を満たす必要がある。 同じ理屈から その場合 B[k] は全て1になる 結論 B[k]は0を含めないとしたらそのような数列は n=2の時にしかない。
2を定義する際の「差」ってのは、「差の絶対値」が正しいみたい。 もともと1オクターブ+1度の音符を一つずつ並べて、1度から11度までの 全ての音階を含む音符列を作るという音楽の問題を一般化したものらしい。
失礼しました。説明はしょってしまいました。おっしゃる通り 例えばn=12の場合 1番の数列は「1~12」もしくは「0~11(mod 12)」の12個の整数を使ったもので任意の置換 2番の数列は「1~11」の11個からなる「差の絶対値」の数列 ということでした。 (負数を含める場合は((+,-)*6)-1で11個になります。)
あちゃちゃ間違えた 3行目以下訂正 差(interval)は「時計読み」です。 1番の数列の、ある部分が{2,3}となってる場合の差は1 {3,2}となってる場合の差は11となります。 絶対値ではなかったですね(汗
説明があやふやですいません。例を挙げます。 A=10,B=11です 1番:0295471AB386 2番:278B369145A(6) こういう数列を算出するアルゴリズムを考えたいのですが、 是非専門家のお力をお貸しねがえれば・・ どうも2番の数列の真ん中と最後には必ず6がくるらしいのですが・・
>>Q1、それは再帰定義なの? つまり n=1まで再帰的に定義されるの? (n)は個数で(n-1)は数値自身をあらわします。 modulo arithmeticでこのように書くべきでしたね。(12=0) 1番:0295471AB386(0) 2番:278B369145A(6)
354 :
デフォルトの名無しさん :02/11/30 17:59
2^16382って10進数でいくらですか?
本文が長すぎます!
>>354 4932桁の数
297432873839307941271439831657001782690861171774127...3919929342485788115111756822667491016704
になる。
(´Д⊂ヽサンクスですた。
358 :
デフォルトの名無しさん :02/11/30 20:31
別の板からやってきました。 プログラム板へ行って、2ちゃんのセキュリティガードの仕方を教えてもらえと言われました。 どなたかご存知ですか?なんか常識だみたいに言われたんですが。。。
>>358 君は悪い人に騙されたんだよ。
そんなのは存在しないから安心してお帰り。
360 :
デフォルトの名無しさん :02/11/30 21:59
どのスレにかけばいいかわからなかったのでここにかきます 負の値を2の補数表現を使うとします。 2進数で10000011は10進数で何ですか? また16進数では?
-125 (83)16かな
>>361 ありがとうございます。
やっぱりこうでいいのか。
>>362 ちゃんと宿題に「2ちゃんで聞きました」って正直に申告しとけよ。
364 :
デフォルトの名無しさん :02/12/01 04:03
>>345 ベンチマークに使われるくらいだからアルゴリズムは「総当たり」っぽい。
All-int~は素数判定~みたくポピュラーじゃないからスレッドは立たないずら
プログラミングに微分積分や確率統計は必要ですか?
>>364 一般の場合は知らんが、n+1が素数の時は簡単に構成できるぞ。
ぎくっ ほんとですかい?
>>367 [n+1が素数]で思いだしたけど
ひょっとしてそれは[等比数列]によってかな?
2が原始根という条件も必要だった。
原始根か・・ あっ!やっぱりかもしれない・・・しらべてみよ
あ”ーー!なんだかそれっぽいぞ(うるさいか) 367さんに感謝
確かに一般の場合はわからないが、原始根は使えるな・・
原始根ではひとつの素数につき一種類のみそのような数列ができることが判明しました。
っと、「一種類」とは「一種類の郡」という意味です。
1の条件のみだと2種 1と2両方の条件を満たすものは一種 のようです。
378 :
デフォルトの名無しさん :02/12/12 15:37
>>366 作るものによる。
たとえばシミュレーションには必須だ。
ただし分野によらず高校数学レベルを理解できる程度には論理になれてないと
プログラミングでメシ食うつもりなら苦労するだろう。
(理屈が理解できればべつに公式は覚えている必要はない。そんなものは本に載っている)
380 :
デフォルトの名無しさん :02/12/20 12:12
任意の閉じたポリゴン体を、閉じた凸型に分解するにはどうすれば いいでしょうか?
>>380 △に分割するのは楽そうだけど、凸なんて八角形にするのは
大変そうだなぁ。
(@´∀`)∩ <おっぱい
>>380 どっかに片方が凸点になってる凹点から初めて 次に角度が負になる個所で分割したらいいんじゃないの?
これではダメなのかな
ああダメなんだ 単純な凹にも対応出来ないや
>>383 は忘れて
あなたのお陰で383はおろか、すべての記憶をなくしてしまいました・・
>>380 単に凸化するだけなら、
1. 凹点Aを探す
2. A-Bが他の辺と交わらないような点Bを探す
3. A-Bで分割、1に戻る
の繰り返しで出来る。
綺麗な分割にしようとすると、
・できれば分割数を最小にしたいとか、
・鈍角ができるだけ出ないようにしたいとか、
・切断する辺の長さを短くしたいとか、
いろいろあるけど、両立できるとはかぎらないので難しい
評価関数とヒューリスティックのさじ加減の問題になる…
>>386 えっと、それだと平面ですよね?
3次元でやりたいんです。
やっぱ難しいですよねー。
いや、基本的な方法は一緒ですね。すいません。 3次元で「1. 凹点Aを探す」方法って??
周囲の3点で作られる平面と、その点の高さとか?
外包面を求めてそれに含まれない点とか
線分AB,CDが与えられた時、交点があるかどうか、 もしあるならその座標を求める。 一番きれいに書いた人が優勝。 stuct LINE{ int x1,x2,y1,y2; }; bool IsCross(LINE line1,LINE line2,POINT *is_cross){ ・・・・・ ・・・・・ } ちなみに俺100行ぐらいかかった(恥)
>>bool IsCross(LINE line1,LINE line2,POINT *is_cross){ 失礼 POINT *is_crossはPOINT *cross_pos の間違いだった。
395 :
デフォルトの名無しさん :03/01/04 12:34
矩形と線分の交点存在の有無の判定ってどうやってやるんですか? 矩形の各辺と線分の交点判定をそれぞれやるしかないの?
>>395 やるしか無いと思うけど
先に、点の内外判定やれば頻度は下げられるとは思う
(内,内) 交点無し
(外,内) 交点有
(内,外) 交点有
(外,外) 可能性あり->判定
398 :
デフォルトの名無しさん :03/01/06 01:30
プログラミングの質問なんですけど、教えて下さい。 使っているのはUBASICです。 三次関数f(x)=x3+ax2+bx+c の係数 a,b,c を入力して、 f(x) の極大値と極小値を出すのを今考えているんですけど、 なかなか初心者なもんでうまくいきません。 お願いします。
>>398 係数a, b, cに関わらず極大値は無限大、極小値は無限小。
>>399 > 係数a, b, cに関わらず極大値は無限大、極小値は無限小。
極大/極小 != 最大/最小
>> 398
2階の導関数を調べればOK.
401 :
デフォルトの名無しさん :03/01/06 08:45
ビットマップの回転で、30度回転とかの場合の各ドットの色計算が 詳しく説明されているサイトを教えてください。
連続していれば、極大極小点は 微分がゼロになる点のどこかにある可能性がある。 ただ、3次関数の場合は、微分がゼロであっても、極大極小点が無い場合がある
例えばb=c=0の時とか
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
おなまえをいちいち考えなくていいからfusianasanっていいよね♪ 最初ね、かぶっちゃったこともあったしでもあいぴーっていうのはかぶらないんだね♪
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
とまった
237 名前:ニュー速から来ました 投稿日:03/01/08 17:51 ID:AX1ZY0DD IPとは何でしょうか ↑素人は誰だ!!!!!!!
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
永遠の19歳。
去年まで単なるメディアアーティストだったけど、TBCと動物病院から告訴されて
二年で数億損害賠償請求された。払う気ないけどね。
初回のみだけど、警察にログ提出を求められても任意だから拒否できる。
●売るだけ売りまくって2ch自体あぼーんすることもできるし、また転送量問題
思い切って持ち出せば50パーセントで信者が2倍になる。
金なきゃ雑誌やTVにもっと顔出せばいいだけ。売名行為にもなる。
「ハッキング」から「夜のおかず」まで色々あるのでマジでお勧め。
http://www.2ch.net
あめぞうという昔旺盛を極めた掲示板は「誹謗・中傷・アダルトお断り」の文字を書き込んだ 事が原因の1つとなって潰れたが、いまの2chは「誹謗・中傷・密告お断り」というのを出したのと 同じ事なんだよなあ、、、
けんすうさん。 先程、「天才」と呼ばれた ディカブラットさまには頭を下げておきました。 皆さんが何を考えるか知りませんが 個人的に、 「結構ヤバイ」んです。 貴方方は気楽でしょうが。 末期がんに近い感じで追い詰められています(実際のクランケ御免なさい) コレ、嘘じゃないのです 聞いて下さい お願いします
もう全板IP取ってるの?
なんか、猛者のフラッシュが見たくなってきた...
よーするに、2ちゃんは悪権力と戦うために必要で 多少の事でゴチャゴチャいうやつらが 自覚無自覚はともかくネットの可能性を潰そうとする 悪権力の子分になってるという現実は理解しようね
単純に2ちゃん以外でやった方がいいような事なんじゃねーの 正直、2ちゃんねるが有名になったから訴えられるようになったと考えた方がいいと思うんだが?
確かに一般の場合はわからないが、原始根は使えるな・・
見にくいな。 特にそこの115はまとめになってないし。 それよりなんでそんなに頻繁にまとめ直すんだろう?
根性なしなので、こちらに記念よしあき ヽ(`Д´)ノ ウワァァン
応えてくれてありがとう。 皮肉な話だが2chで誰かに応えてもらったのって久しぶりだ>365
あれ?ニュー速もip記録してるの?
問題はこれがひろゆきの自由意志によって選ばれた結果ではなく、 「裁判で負けたからしぶしぶ」であることだよなぁ~。
がんがれ
ですね。 2chはもはや常人がふらっと来て書き込みするような雰囲気じゃない・・・
終わりのはじまり
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
匿名を希望する内部告発者もいたりするわけで、IP取られるとそういう情報も減っちゃうねえ・・
まちBBSはIP強制表示だけど、何か不都合あるの?
犯行予告・個人や法人に対する誹謗中傷 内部告発・差別的発言・タメ口・顔文字 ぐらいかな
スターシアも嘆いている 14万8千光年は遠すぎたのだ
541 名前:心得をよく読みましょう 投稿日:03/01/10 20:57 ID:XMZyyjdR 「韓国人は糞」← これくらいならどう足掻いても訴えられないっしょ。 543 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 20:58 ID:jWxHxvti 質の低い書きこみの例549 名前:fushianasan 投稿日:03/01/10 20:59 ID:XOyWB09Q でも実際の類の書き込みは減らないのでわ? 551 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 21:00 ID:jWxHxvti 逮捕者が出れば、もちっと書きこみ減るかと。
2chで内部告発的な事をするリスクが大きくなるのかな? 発信元がわかるんで、告発された側が「よーし金でねじ伏せちゃうぞー」 とか言って裁判でも起こしまくって。 そんな状況はガクブルだから、面白そうな(真実である事が前提の)投稿は、減る?のかな? 考え過ぎ?って言うか見当違い?どうだ?どうなんだ?
厨房板の荒らしは削除されたようだ いつか全板で強制表示になるのだろうか? スクリプトくめばどこの板だって荒らせるだろうし
実際にある人物になんかあった場合、 その人物になんかしたい、と書き込んだ人間についての情報は おれがもし警察だったら、一応知ろうと努力はする。 なかにはそうとうエグいのもあるし。
っていうか、ひろゆきの意図に反してIPログが流出したらどうすんの?
( ´_ゝ`) フーン
しかもレズですか・・・
管理人もISP責任法で責任負わなくていいとか ちゃんちゃらおかしい事抜かしてましたが、そこんとこどうよ
そう!ひろとしは偉い!!
IP取得開始前の過去ログが晒されたら、またその時点で侵害行為発生じゃん。 で、書き込み者が特定できないから云々・・となると思うが・・・。
嘘はついていないんだろうけど…。(;^ ^
(^^)
ガックシ・・(鬱
(^^)
hage
ねぇ、最近、なんで数学と算数の話が全然無いの?
算数はつかうけど数学はほとんどの人はいらないんじゃネーノ
>>449 先生、高校数学が馬鹿でも理解できる本教えてん
453 :
デフォルトの名無しさん :03/01/28 02:25
age
454 :
デフォルトの名無しさん :03/02/05 13:24
455 :
デフォルトの名無しさん :03/02/05 13:31
>>454 あなたはそこの174と180のどちらの方ですか?
457 :
名無し募集中。。。 :03/02/05 13:41
>>456 そうですか
もう納得してるかもしれませんね
>>451 与えられた仕様書通りにコーディングするだけなら算数で十分かもなぁ。
でも、研究開発とかでソフトウェア設計するなら数学いると思われ。
あと、理系科目全般、数学の知識は必須。
数学出来る人間は大体なんでも出来る。
459 :
デフォルトの名無しさん :03/02/08 01:10
ある直線がある円と交差してるか判定するにはどうしたらいいの?
>>459 円の方程式に、直線の方程式から得られる関係を代入して、
虚数でない解を持つかどうかを調べる。
461 :
デフォルトの名無しさん :03/02/08 01:55
解を持つかどうかの判定はどうすれば?
>>459 1.直線と直角の傾きで円の中心を通る直線の式を求める
2.円の中心から1で求めた直線と元の直線の交点までの距離を求める
3.求めた距離が円の半径より長ければ交差していない
以上
れすどうも 483はわかったけど460はわかりそうでわからないっす 脳みそ中学生でした
さて、
>>483 は脳みそ中学生にもわかるような求め方を提示しなければなりません。
466 :
デフォルトの名無しさん :03/02/08 17:36
数学板から来ました。 多変数多項式のGCDを求めるアルゴリズムを教えてください。
まずスカートを下ろしてください。
469 :
デフォルトの名無しさん :03/02/09 08:48
>>459 円と交差してるかどうかは、円の中心点から半径以内に直線があるかどうか
点と直線の距離がわかれば解けます。
1、円の中心を原点に平行移動して 検索ワード「原点迄の距離」
2、直線x軸に平行になるよう回転して、y軸との距離
どちらかを使います
>>466 この板で[多変数多項式のGCD]なんて言われても判りません。
もっと問題を判り易く解説して下さい。
多変数多項式とは? その多変数多項式の大小の定義は?
>>466 GCD って最大公約数よね?
多変数多項式クラス作って、それに適切な剰余演算定義してやれば
後はユークリッドの互除法にかけるだけだろ。
多変数多項式の剰余演算をどうやれば作れるかはム板の連中には荷が重いんじゃないかな。
>>470 >ム板の連中には荷が重いんじゃないかな。
といいつつ、間違っている
>>470 は、はたしてム板の住人でした。
>>469 すみませんでした。「多変数多項式」は、
a^2 - b^2 - ca + bc /* (a + b - c)*(a - b) */
ab + bc + b^2 - c^2 /* (a + b - c)*(b + c) */
というようなものを考えていて、例えばこの二つの式から、共通因数
a + b - c
を導き出す方法が知りたいということです。大小については、
(a^3 * b^3) > (a^3 * b^2) > (a^2 * b^3) > (a^2 * b^2)
という感じがいいです。
>>470 剰余演算とはどういったものでしょうか?
一変数に関する剰余演算(ほかの文字は定数とみなす)はやってみましたが、
全体の次数を減らす方向には動かないようでした。
>>471 詳しく教えてください。
473 :
デフォルトの名無しさん :03/02/09 16:50
(a^2 * b^2)ニッコニコー
perlあたりが役立ちそうだね。ゲノムのパターンマッチングにも使ってるみたいだし。 それより簡単じゃないかな。
>>472 いわゆる記号数式処理ですか・・・・出来るというかノウハウ持ってる人は限られてるなあ
このスレ見てるかなあ
>>472 結局 GCDはユークリッドの互除法しかないわけで、
ただ、スカラと違って大小関係が定まらないから収束の保証が無いのがネックだね
CRCの計算方法教えてほしい。CRCでいろいろ検索してみたが 俺には難しすぎるページばかり。 例えば8BitのCrcで生成多項式が1+X^3+X^7の場合はどのように 計算すればよいの? サルでも分かるレベルでお願い(;_;)
>>477 >例えば8BitのCrcで生成多項式が1+X^3+X^7の場合はどのように
俺も詳しくないのでビット数があってない(8bitならX^8が無い)場合に
どうすれば良いか分からんので1+X^3+X^7+X^8として説明するが
(恐らくX^8がなければ7bitのCRCとするべきなのだと思うが…)
生成多項式から次のように変換する
876543210 ← X^n のnに対応する値
110001001 ← 多項式にX^nが含まれていれば1
求めるCRCは8ビットなので、そのビットの値を無視して数値化し p とする
p = 0x91 (10010001) ← 多項式のX^0に対応するビットを最上位とする
CRCの初期値を0とする
CRC = 0
CRCを取りたいデータをnバイトのデータの配列 s とし
次からの一連(字下げ)の処理をn回繰り返す
CRCの最下位バイトに配列sのnバイト目のデータの値をxorする
CRC = CRC ^ s[n]
次からの一連(字下げ)の処理を(1バイト内の)bit回繰り返す
CRCの最下位ビットの値をflagとしCRCを1ビットシフトする
flag = CRC & 1 ← 最下位ビットを取っておく
CRC = CRC >> 1 ← そのビットをシフトして消す
flagが1ならCRCにpをxorする
CRC = CRC ^ p
以上、最後に残ったCRCです 正確にはCRCの値は、初期化の後に反転させたり、最後に反転させたり データの扱い方によって変わったりしますが、大体こんな所です で、この処理が何をやってるのか説明すると 元のデータをビットの列として並べて(この並べ方が結構曲者?) 一番左側を最上位と考え、最下位にCRCのビットに等しい0を追加します 次に1が立ってる最上位のビットに合わせて多項式の値でxorします 00011001000010000000… 元のデータ 000110010001 ← (多項式の値を最上位の1の位置に合わせてxor) &bnsp; ↓ 00000000000110000000… ↑の2つの値をxorした結果 00000000000110010001 ← ( 次の1の位置に合わせて ) &bnsp; ↓ 00000000000000010001… 以下略 小細工が入る事を除けば基本は、こんなところで ↑の処理を繰り返し、元のデータの領域の値を全て0にした結果 最下位に付け足したビットに残った値がCRCとなります
>>478 スマソ
字下げが上手く行って無かったので修正
次からの一連(字下げ)の処理を(1バイト内の)bit回繰り返す
CRCの最下位ビットの値をflagとしCRCを1ビットシフトする
flag = CRC & 1 ← 最下位ビットを取っておく
CRC = CRC >> 1 ← そのビットをシフトして消す
flagが1ならCRCにpをxorする
CRC = CRC ^ p
あぅ…この方法じゃ駄目だったのね…
>>478 &480は分かると思うけど
> 次からの一連(字下げ)の処理を(1バイト内の)bit回繰り返す
の文は、最後までの全ての文を対象としています
なんか時計が変ね。
>>478-481 これを読んで何とか計算するルーチンは分かりました。
丁寧にどうもありがとう。
485 :
デフォルトの名無しさん :03/02/15 20:27
4つの整数が与えられたときに、その最大公約数を求めるのはどうすれば一番すっきり求められるのでしょうか? 2つずつで最大公約数を求めて、その最大公約数どうしで、また最大公約数を求めようかと思っているのですが、 ほかに何かいいほうほうはあるでしょうか?
>>485 小さい方のふたつの公約数のうち、残りのふたつを割り切れるヤツってのは?
┏━┻━┓ ┏┻┓ ┏┻┓
maximum(a,b,c,d)=max(max(a,b),max(c,d)) と同等。 似たスレあったっけ?
>>485 たった4つぐらいならどうやってもいいような、
いや、(2つ,3つではなく)4つだからこそ難しいのか。
gcd(a,b) の計算時間は log(min(a,b)) に依存するし
maxやminと違って下限も決まってるから、
ソートされていれば小さいほうから順に
gcd(..gcd(gcd(gcd(n_1,n_2),n_3),n_4),...) が一番速いかと。
>>488 は入力される個数が増えると遅くなりそう。なんとなくだけど。
ソートされてなければ、入力される数の性質を吟味して
そのままやるかソートしてやるか選ぶのが吉。
後出しじゃんけんみたいな特異な例をあげると
(240^10000 , 3^10000 , 160^10000 , 5^10000)
これだと488が一番遅くて
(240^10000 , 160^10000 , 5^10000 , 3^10000)
これだとそのままやるのが一番遅い
491 :
デフォルトの名無しさん :03/03/01 23:52
ある数字の平方根を小数点以下切り捨てで求める 最速だと思われるアルゴリズムをおしえてください
n^2のテーブルを用意しる。
>>491 下から2桁づつ区切っていく。
それと0~99の平方根・・・というか、0~10の平方をテーブルに
494 :
デフォルトの名無しさん :03/03/04 17:54
点と平面があって、点から平面への交点の座標を求めるにはどうすればいいですか?
495 :
デフォルトの名無しさん :03/03/04 17:55
ミスりました。正しくは、 点と平面があって、「点から平面への垂線」と「平面」交点の座標を求めるにはどうすればいいですか?
>>495 まずはその点が原点になるように全体を平行移動させましょう。
平面をx-y平面と水平になるよう原点を中心に回転させましょう。
その後、平面のz軸座標に今の逆変換を行って下さい
497 :
デフォルトの名無しさん :03/03/05 00:28
ここで語ってるやつは、どのプログラミング言語を使ってれば 自分が生き残れるかしか頭に無いだろ。 技術なんてあるわけないじゃん。 「使えねぇ~OX」スレだって、自分の事だろ。やけに心情的に詳しいしさ。
498 :
デフォルトの名無しさん :03/03/13 07:58
問題募集
ICPCの過去門でもやったら?
例えば大量の千円~9千円ぐらいの領収書が大量にあったとして、 その中の組み合わせで3万円に 一番近い数字になるように計算して一番近い順にならべていく方法が あったら教えてください。 一応、考えている言語はC言語です。
501 :
デフォルトの名無しさん :03/03/14 13:35
あげ忘れた
502 :
デフォルトの名無しさん :03/03/14 13:40
503 :
デフォルトの名無しさん :03/03/14 13:45
506 :
デフォルトの名無しさん :03/03/14 18:45
>505 そんなことないよ。 てか、それの全ソースってWebで公開されてなかった? 他の書籍だっけか
アメリカのクイズ番組で実際にあったコーナーだ! 最後に勝ち残った者が3枚のドアから1枚だけ選ぶ! どれか1枚の後ろに賞品があって、当たればもらえるということだ! 番組の司会者はどのドアの向こうに賞品があるか知っている! 参加者が選んだところで、司会者が残りの2枚のうちはずれを1枚開けて、 『良かったらドアを変えてもいいですよ』と言う! では、ここで参加者は自分の選んだドアを開けるべきか?! それとも変えるべきか?!あるいは変えても、そのままでも関係ないのか?!
510 :
デフォルトの名無しさん :03/03/20 22:36
一見すると
>>510 のように考えるかもしれないが、
結局参加者が選んだドアが正解かどうかわからないのであれば、
選択肢が3つ(正解―はずれ―はずれ)から2つ(正解―はずれ)になっただけ。
よってそのままでも関係ない。
512 :
デフォルトの名無しさん :03/03/20 23:18
>>511 いまだにこんなこと言う人がいるのか。
結構、有名な問題だけどな。
めんどくさいので、数学板から転載。
参加者が最初に選んだ一枚があたりである確率は1/3なので、
司会者側にあたりがある確率は2/3になる。
司会者がはずれを1枚あけたとしても、司会者側にあたりがある確率は
2/3のままだから、変えたほうが得。
511は、ドアが100枚になっても同じ事を言うのかな。
参加者が1枚引き、司会者が残りのドアからはずれを98枚開いて、
参加者と司会者の2枚が残ったとき、あたる確率は同じといえるのか。
>>511 そんなことはない。
最初に自分が当たりを引く可能性は 1/3
この時は、司会者が残りのどちらをあけても最終的に残ったドアははずれだだから...
・変えた時ははずれ
・変えない時は当たり
最初に自分がはずれを引く可能性は 2/3
この時は、司会者ははずれを開けて最終的に残るのは当たりだから...
・変えた時は当たり
・変えない時ははずれ
つまり変えない時の確率は 1/3 の確率でしか当たらないが、変えた時は 2/3 の確率で当たることになる。
514 :
デフォルトの名無しさん :03/03/20 23:31
さぁ、みんなで考えよ~~う ○●◎
あれ?1枚目をめくったとき、自分が正解したかどうかわかるの? それなら話しは変わるのだが、そうでなければ結局同じじゃないのか?
>>516 > あれ?1枚目をめくったとき、自分が正解したかどうかわかるの?
それがわかったら、100% 正解できるだろうが。
そりゃそうだな。 ごめん、図示してようやくわかったよ。 Aを正解、B、Cを不正解として書く。 自分は「一番最初に引いたもの」であり、司会者は「その残りの選択肢」 残りは「司会者がその中の1つの不正解を外したもの」として考える。 自分 - 司会者 - 残り A ― BC - B(またはC) B ― AB - A C ― BC - A よって、最初で正解する確率は1/3、残りで正解する確率は2/3である。 もっと簡単に言えば「司会者が誤答を減らすので、残りのほうが有利」ということか。
C-AB - A やね…… (恥
清書せい清書を B(ry
問題設定自体があいまいで数学的でないような。。
Aを正解、B、Cを不正解として書く。 自分は「一番最初に引いたもの」であり、司会者は「その残りの選択肢」 残りは「司会者がその中の1つの不正解を外したもの」として考える。 自分 ― 司会者 - 残り A ― BC - B(またはC) B ― AC - A C ― AB - A よって、最初で正解する確率は1/3、残りで正解する確率は2/3である。 もっと簡単に言えば「司会者が誤答を減らすので、残りのほうが有利」である。
条件付確率の典型問題 最終的には、2枚の扉が残る。 どちらかひとつが当たりで、もう一方が外れ。 回答者はそれを選びなおすだけ。確率 1/2 。 先ほどまでに選んでいたものも、新しく選びなおすのも同じ確率。
最初から当たっていて、替えずに当たる確率=1/3*1/2 最初当たっていたのに、替えてはずれる確率=1/3*1/2 最初はずれていて、替えずにはずれる確率=2/3*1/2 最初はずれていたのに、替えて当たる確率=2/3*1/2
>>524 紛らわしいのは、問題の意味。
選択肢は「変える/変えない」であって「どのドアを選ぶか」ではない。
自分が正解を選んでいても、外れを選んでいても
司会者が外れを減らしてから選んだほうが正解率は上がる。
>>525 最初から当たっていて、替えずに当たる確率=1/3*1/2
最初当たっていたのに、替えてはずれる確率=1/3*1/2
最初はずれていて、替えずにはずれる確率=2/3*1/2
最初はずれていたのに、替えて当たる確率=2/3*1/2
以上より、
変えることで得する確率 2/3*1/2 = 1/3 , 損をする確率 1-1/3 = 2/3
よって「変えないほうが得」である。
>>526 >司会者が外れを減らしてから選んだほうが正解率は上がる。
それが条件付。
条件をつけられた以降は、その時点ですべてをリセットしないといけない。
したがって、司会者がドアを2枚に減らした時点で、
自分が選んだドア、と、選んでいないドア、の二つしかない。
だから、変更するかしないかであたる確率は 1/2 である。
...さて、どちらが正しい?
>>527 どっちも間違ってる。
> 最初から当たっていて、替えずに当たる確率=1/3*1/2
1/2 ってどう言うこと ?
最初から当たってる確率は 1/3 だ、絶対変えないと信念持ってる人は 1/3 の確率で当たることができる。
>
>>526 > 条件をつけられた以降は、その時点ですべてをリセットしないといけない。
アホチャうん ?
>>527 >
>>525 > 最初から当たっていて、替えずに当たる確率=1/3*1/2
> 最初当たっていたのに、替えてはずれる確率=1/3*1/2
> 最初はずれていて、替えずにはずれる確率=2/3*1/2
> 最初はずれていたのに、替えて当たる確率=2/3*1/2
>
> 以上より、
> 変えることで得する確率 2/3*1/2 = 1/3 , 損をする確率 1-1/3 = 2/3
> よって「変えないほうが得」である。
以上より、
変える事で損をする確率1/3*1/2 = 1/6,得する確率 1-1/6 = 5/6
よって「変えるほうが得」である。
+激しく矛盾+
>>529 条件付確率についてはそれで正しいと思うが?
確率の和が常に1になるようにしなければならないので。
プログラマなら、プログラムを作って勝負しる!
534 :
デフォルトの名無しさん :03/03/21 18:49
自分が当たりを選んだ時、司会者は残り2つのうち、どちらを選んでもよい。 自分がはずれを選んだ時、司会者は残り2つのうち、必ずはずれを引かなければならない。 1回目 司会者 2回目 -------------------------------------------- A B A = 1/3 * 1/2 * 1/2 B C = 1/3 * 1/2 * 1/2 C C = 1/3 * 1/2 * 1/2 C A = 1/3 * 1/2 * 1/2 B C B = 1/3 * 1/2 C A = 1/3 * 1/2 C B C = 1/3 * 1/2 B A = 1/3 * 1/2 選択を変えない場合……(1+1+2+2)/12=6/12 選択を変えた場合………(1+1+2+2)/12=6/12 結論:1/3のクジが1/2のクジになっただけで、変更に有利不利はない。
100枚のドアから1枚だけ選ぶ! 司会者は 参加者が1枚選んだところで、司会者が残りの99枚のうちはずれを98枚開けてくれる。 つまり、参加者が選んだドアが外れなら(外れる確率は99/100) とてもお得だよね。 さあ、変えた方が得かどうか
536 :
デフォルトの名無しさん :03/03/21 23:03
100枚のドアから99枚選んでいい確率と同じになる?
>>534 あんたの論理だと、選択変えない人が当たりを引く確率は...
A-B-A: 1/3 * 1/2 * 1/2
A-C-A: 1/3 * 1/2 * 1/2
の2つのパターンだから、2 * (1/3 * 1/2 * 1/2) = 1/6
になっちゃうんだけど、そこで既におかしいと思わない ?
538 :
デフォルトの名無しさん :03/03/21 23:43
>>537 B-C-B や C-B-C も入るのでは?
540 :
デフォルトの名無しさん :03/03/22 00:23
541 :
デフォルトの名無しさん :03/03/22 00:28
>>537 当たりを選んでから、選択を変える人が当たる確率は1/6、
はずれる確率も1/6。
当たりを選んでない場合は、選択を変えても変えなくても同じで、
その確率が2/3。
上のほうで、余事象で計算してる人が2人いたけど、
損も得もしない確率を忘れてるね。
>>541 一応530だけど
> 余事象で計算
してたので返してみました
・・・ってこのレスって意味間違えてないよね・・・?
>>541 意味わからん。
> 当たりを選んでから、選択を変える人が当たる確率は1/6、
当たりを選んでから、選択変えたら「必ず」外れるんじゃ ?
…
>>512 がでてるのにどうして議論が続くかな…
選択を変えた時に当たる確率は、最初の選択が間違ってる確率と同じ。
ドアが 3枚なら 2/3 だし、 100枚なら 99/100 。
# モンテカルロなら書いて確認したけど、読みたい?
ぐあ…モンテカルロって、円周率とかのやつだった… 普通に random にやってみて調べる program 、でした。
>>545 ん ? 別にモンテカルロ法って円周率だけじゃないと思うが ?
説明とプログラムは円周率が簡単だし、結果の検証もしやすいから例に良く取り上げられるだけだよ。
通常は モンテカルロ法=普通にrandomにやってみて調べるprogram
>>544 2ch では、正答を即答すればするほど、その後に(間違った)反論が続きます。
2ch での正しいレスの返し方は、多少のネタや誤答を待ってから行うことです。
俺がもし511だったら、 ドアが100枚だったら、 「参加者が1枚引き、司会者が残りのドアからはずれを【1枚】開いて、 参加者の1枚と司会者の98枚が残ったとき、あたる確率は同じか?」 のような例え/解説だってありえる。この場合結論は自明でないだろう。 つまり例えを用いるなら、その例えの妥当性も添えないと駄目。 とかゴネ煽って議論を混乱させるな。 俺は511じゃないからゴネないよ(w
>>550 まぁその場合「入れ替える」とは言わないけどナー
553 :
デフォルトの名無しさん :03/03/31 20:13
で、ソースはまだですか?
554 :
デフォルトの名無しさん :03/03/31 22:02
>>508- からのレスをよく読んでから考えてくれ。
参加者の前にはA,B,Cの3枚のドアがある。どれか1枚の後ろには賞品が隠されている。
参加者はAのドアを選ぼうと、心の中で決めていた。司会者がはずれのドアを開けた後
ドアを変えれば、2/3の確率で賞品をゲットできることも知っていた。
ところが今日の司会者は、参加者がドアを選ぶ前にBのドアを開けた。
『このドアははずれです、さてドアを選んで下さい』
ここで問題。今、参加者の前にはAとCの2枚のドアがある。
参加者がCのドアを開けたとき賞品を獲得する確率はいくらか。
解答を書く時は、
>>508 の問題でドアを変えた時の、賞品獲得確率も書いてほしい。
最初から一枚少ない状態と変わりなくない?確率
556 :
デフォルトの名無しさん :03/03/31 22:31
>>554 お前アフォちゃう ?
そんなん 1/2 に決まっとるがな。
>>555 ,556
>>508 の問題でドアを変えた時の賞品獲得確率は、
どうなると思うか、教えて下さい。
>557 ...どうなるかって、答えはもう出てるじゃないか。
いきなり出題ちゅうのは礼を欠いたかも、気分を害されたらスマソです。
>>508 の問題とその解答を読んで楽しませてもらいました。(レスは付けてませんが)
「ドアを変えたほうが2/3の確率で有利」という意見が大勢のように見えましたが
どうも、すっきりしない気分なので上のような問題を作ってみました。
(1)司会者が参加者の選択を見てから、他のはずれドアを開けた場合(
>>508 )
(2)司会者が参加者の選択を知らずに、たまたま他のはずれドアを開けた場合(
>>554 )
で、どう条件が違うのか 2/3派の方たちの意見もとむ。
変更前の確率 変更後の確率 1) 1/3 + 2/3 = 1 2) 1/2 + 1/2 = 1
>>554 この問題は、次のように書き直すことができる。
司会者の前にはA,B,Cの3枚のドアがある。どれか1枚の後ろには賞品が隠されている。
ところが参加者は遅刻をしてしまった。先に司会者がはずれのドアであるBを開けてしまった。
そのあと参加者はやってきたのだが……
ここで問題。今、参加者の前にはAとCの2枚のドアがある。
参加者がCのドアを開けたとき賞品を獲得する確率はいくらか。
************************************************************
ということで1/2。
参加者がどれを選択しても、それを司会者に伝えなければ影響はないので。
523じゃダメなのか?
563 :
デフォルトの名無しさん :03/04/01 19:22
数学板にスレあるの? もしあったら教えて! わからなかったので。
>>562 523は「Aを正解、B、Cを不正解として書く」という前提が誤り。
Aが不正解のケースを加味すれば1/2となる。
間違った 自分A 残りBC 司会者B 最終的な残りC 自分A 残りBC 司会者C 最終的な残りB 自分B 残りAC 司会者C 最終的な残りA 自分C 残りAB 司会者B 最終的な残りA だから1/2だ
今自分でプログラム作ってみたけど 選択を変えた方が有利になってしまいますね。 うあー,納得したくない・・1/2 だと信じて疑わなかったのに・・
あー,今
>>512 を冷静に見直してやっと納得できたです。。。
プログラムいじってると,また混乱してきたかも(笑い 10000 回の試行で, ドアを選ぶ→司会者がドアを開ける→そのまま派 .. 3333 回正解 同じく 10000 回の試行で, ドアを選ぶ→司会者がドアを開ける→選択を変える派 .. 6666 回正解 ちょっと考え方を変えて ドアを選ぶ→司会者がドアを開ける→ 「残ったドアのうち,どちらを選ぼうか」と考え直す派 .. 5000 回正解 まぁ大体こんな感じになりますた。むちゃくちゃ面白いー。 これってゲーム理論と通じるところがあるですか? ゲーム理論は昔から興味があったけど。
569 :
デフォルトの名無しさん :03/04/01 23:54
>>565 どうして最初の選択で、AがBやCの2倍?
確率というのは単純な場合分けじゃないよ。
>>568 ソースきぼん
よく分からないので、 ABCの内、最初にAを選んだとする。 Aが当たる確率は1/3。Aが外れる確率(BCの内どちらかが当たる確率) は2/3。 この場合はBCのどちらかに当たりが含まれる場合100%当てることができ る(司会者がはずれを教えてくれるから)。 よって変えた場合は確率2/3で当てることができる。 という認識でいいの?
>>570 いいよん。
「選択を変える」という戦略をとると、最初に当たりを選んでいた場合は
自動的に外れ、最初に外れを選んでいた場合は自動的に当たりになる。
だから、当たる確率は最初に外れを選ぶ確率に等しい。
>>567 >>512 は「番組の司会者はどのドアの向こうに賞品があるか知っている!」
という前提条件に違反しているので誤り。
各ドアに当りが有る確率は1/3、司会者がドアを1つ開けたとしてもそれは
100%ハズレのドアに決まっているので、残りのドアは選択肢が1つ減ったことにより
それぞれ当る確率が1/2に繰り上がる。
この問題は以下のように書きかえる事ができる。
「ドアが三つある。当りは1つ。ドアが1つ開けられ、それはハズレだった。
さて残りのドアの当る確率はそれぞれどれほどか?」
参加者が最初に選んだドアか否かは、当る確率に何ら影響を与えていない。
>>572 そこに条件付確率を入れると、問題の性質が変わるよね、ってことを言っているわけで。
>>572 そのものと、
最初に選んだドアが当たりだった場合、はずれだった場合に基づいて、
それぞれの選択変更による当たり・はずれの確率を求めること、と。
>>573 ん?「司会者が当りを知らないという前提」って事?
それならば残りの箱が当りの確率が2/3ってのは分かる。
// リクエストがあったのでソース。恣意的な部分はないと思いますが,ツッコミ希望 // 1 of 3 #include <iostream> #include <stdlib.h> #include <time.h> int answer, panelists_selection, hint_door; // ドアと賞品を準備 void prepare_3_doors_and_prize() { answer = rand() % 3; } // 解答者はドアを適当に決める void panelist_decides_door() { panelists_selection = rand() % 3; } // 司会者は一度ドアを開ける void master_decides_which_door_to_open() { for ( int i = 0; i < 3; ++i ) if ( i != panelists_selection && i != answer ) { hint_door = i; return; } throw "やべぇ"; }
自分が最初に選んだ扉が当たりの確率は、司会者が何をしようと1/3のまま。 あたりまえだろ。
>>572 ちゃんとすべてのパターンで検証した?
自分がはじめから当たりの場合と外れの場合で確率がことなるでしょ。
// 2 of 3 // 選択は変えない派 void panelist_does_nothing() { /* noop */ } // もう一方のドアへ選択を変える派 void panelist_changes_door() { for ( int i = 0; i < 3; ++i ) if ( i != hint_door && i != panelists_selection ) { panelists_selection = i; return; } throw "やべぇ"; } // 「2つのドアのうち,どちらを選ぼうか?」と改めて考え直す派 void panelist_decides_again() { int which = rand() & 1; if (hint_door == 0) { if (which == 0) panelists_selection = 1; else panelists_selection = 2; } else if (hint_door == 1) { if (which == 0) panelists_selection = 2; else panelists_selection = 0; } else { if (which == 0) panelists_selection = 0; else panelists_selection = 1; } }
// 3 of 3 int main( int ac, const char *av[]) { typedef void (*strategy_t)(); strategy_t panelist_final_answer[] = { panelist_does_nothing, // 戦略 0 panelist_changes_door, // 戦略 1 panelist_decides_again // 戦略 2 }; srand( time(0) ); for (int strategy = 0; strategy < 3; ++strategy) { int right = 0; // 正解の数 for (int i=0; i<10000; ++i) { prepare_3_doors_and_prize(); panelist_decides_door(); master_decides_which_door_to_open(); // 解答者は何をするか? panelist_final_answer[ strategy ](); if (answer == panelists_selection) ++right; } std::cout << "戦略 " << strategy << " 正解数 : " << right << std::endl; } return 0; }
>>572 >
>>512 は「番組の司会者はどのドアの向こうに賞品があるか知っている!」
>という前提条件に違反しているので誤り。
どこがどう違反してるのかわからん。
まさか、
>>512 の
>司会者側にあたりがある確率は2/3
を「司会者があたりをあける確率が2/3」と誤解してるのか?
全パターンを網羅するとこうなる ○:変えないで当りになる △:変えて当りになる ×:今回は考えなくて良いケース ■当りがAのケース 自分A 司会者B 残りC○ 自分A 司会者C 残りB○ 自分B 司会者A 残りC× 自分B 司会者C 残りA△ 自分C 司会者A 残りB× 自分C 司会者B 残りA△ ■当りがBのケース 自分A 司会者B 残りC× 自分A 司会者C 残りB△ 自分B 司会者A 残りC○ 自分B 司会者C 残りA○ 自分C 司会者A 残りB△ 自分C 司会者B 残りA× ■当りがCのケース 自分A 司会者B 残りC△ 自分A 司会者C 残りB× 自分B 司会者A 残りC△ 自分B 司会者C 残りA× 自分C 司会者A 残りB○ 自分C 司会者B 残りA○ よって1/2
582 :
デフォルトの名無しさん :03/04/02 01:53
>>580 >どこがどう違反してるのかわからん。
司会者は当りのドアを絶対に開けないので、選択肢が減った事による
確率の増加を残りのドアだけに与える理由が無い。
故に
>司会者がはずれを1枚あけたとしても、司会者側にあたりがある確率は
>2/3のままだから
は前提に違反している。
ドアが始めnあり、司会者がn-2の(はずれの)ドアをあけた場合に、 参加者がドアを変更することであたりを得る確率は、1-1/(n-1) ってことでよい? n=3, 1-1/2 = 1/2 n=100, 1-1/99 = 98/99
1/3が外れであることが確定した場合に残り2つのドアを選択する1/2の確率の 条件付確率だから、1/3 割る 1/2 で 2/3 だろ?
>1/3 割る 1/2 で だから、それが間違いだっつーの!(笑
A を選んだ時「あなたは 2/3 の確率でハズレですよー」と示唆されているわけで, じゃあ残りの 2/3 の可能性も検討してみようかとふと脇を見ると, なんと何時の間にか C のドアが開いているではないか! しかもハズレだっ! という事で,B が当たりの確率は 2/3 になります。 これと似たような雰囲気で頭を悩ませる問題は技術者なんたら試験にも出て来ますよね? 「システムが上手く稼動する確率は 0.9 だ」とか値が示されているけど, 実際に計算する場合は 1 - 0.9 = 0.1 みたいに「上手く動かない確率」を 求めておくってのがポインツだったり・・・詳しくは忘れたけど・・・
>>582 よく考えろよ。
「残り2枚に当たりがある確率は2/3」
↓
「司会者が外れを1枚除く」
↓
「残り1枚に当たりがある確率は2/3」
これの、どこにおかしい点があるんだ?
それと、
>確率の増加
なんて意味不明な言葉を使うのはヤメロ
最初に選んだ扉が当たりの確率は常に1/3。
減ったりも増えたりもしない。
>>586 >なんと何時の間にか C のドアが開いているではないか! しかもハズレだっ!
>という事で,B が当たりの確率は 2/3 になります。
偶然にCが空き、かつそれがたまたまハズレならばその通り。
しかしそれは「司会者はどれが当りか知っている」という前提に違反するので誤り。
>「残り2枚に当たりがある確率は2/3」 >↓ >「司会者が外れを1枚除く」 >↓ >「残り1枚に当たりがある確率は2/3」 > >これの、どこにおかしい点があるんだ? 司会者は100%ハズレのドアを開けるので、それは最初から存在しないドアであるのと同じ。 だから残りのドアの確立だけ1/3から2/3に上げる根拠は無いのに上げているのがおかしい。 参加者が選んだドアも、選ばなかったドアも、当りの確率は1/3、分母が1つ減って1/2。 なんで、残りのドアを特別扱いするのか不思議
>>590 司会者は自分が最初に選んだ扉を空けられないからだよ。
つか、自分が最初に選んだ扉が当たりの確率は1/3のままなんだってば。
「司会者が外れを空けたから確率は1/2に増えた」なんて言うのは、
偶然当たったあとで「俺が選んだ扉は100%当たり」って逝ってるのと同じ。
ただの結果論。
レベル低~
解ればもう一気に鼻の通りがよくなる程の快感なんだが 解らない時のもどかしさと言ったら… とにかくがんがれ>まだ解ってない人
594 :
デフォルトの名無しさん :03/04/02 05:05
『眠れる夜のグーゴル』に載ってるネタじゃな。 分からん人は読んでミソ。
わからない人にヒントじゃ。 司会者は、当たりを知らないとしよう。 Aが当たりとすると、パターンは6通りじゃ。 自司残 ABC CB BAC CA CAB BA しかし司会者が当たりを知っていると・・・
100枚の場合でいうと。 ドアを変えない場合は100枚のドアから一枚を選ぶ権利しか与えられないのと同じ。 ドアを必ず変える場合は100枚のドアから99枚選ぶ権利を与えられたのと同じ。 残り2枚になって運を天に任せコインを投げて変更するかしないか決めた場合は確率1/2。
597 :
デフォルトの名無しさん :03/04/02 07:06
>>596 「変えない」という決断をした時点で、2回目の選択をしたことになる。
結果的に同じものを選んだからといって、最初の確率と同じではない。
598 :
デフォルトの名無しさん :03/04/02 07:18
_,,...,_
/_~,,..::: ~"'ヽ
(,,"ヾ ii /^',)
:i i"
|(,,゚Д゚) <
http://www.k-514.com/ |(ノ |)
| |
ヽ _ノ
U"U
100枚のカードがあります。 左の扉にはそのうち1枚だけを 右の扉には残りの99枚を入れました。 あたりがどのカードかは判りません。 さて、A君は 1:99 である事を知っていましたが、 B君はその事を知らず、どちらかに当たりが入っているとしか知りません。 A君とB君の当てられる確率はそれぞれいくらでしょうか?
当たりが1枚しかない宝くじが300万1枚発行されました。 あなたは1枚買いました。でも残りの300万枚を買い占めた大富豪が あなたの1枚と大富豪の300万枚を交換してもいいといいました。 あなたならどうしますか?
大富豪「お前が当たるか俺が当たるかの二つに一つだから どのみち確率は1/2だな、がっはっは!」
602 :
デフォルトの名無しさん :03/04/02 09:25
日本語では二つに一つだが それと確立とは違うぞ
603 :
デフォルトの名無しさん :03/04/02 09:28
Establish?
604 :
デフォルトの名無しさん :03/04/02 09:35
y
>602 目の前に扉が2つ残されて、「どちらを選んでも確率1/2だな」 と思ってしまう状況を大富豪の台詞にしてみたんですが。 ちょっと強引すぎですかね。 >596, >600, >601書いたのは私です。
・日本国民の中から無作為に選ばれたA君。 ・残りの国民の中で最も足の速い人間B君。 このふたりが100m走をした場合、勝つのはどちらでしょう。 ってもういいですね。
N+N=NN
A=正解、BC=不正解 選択A(1/3) 司会者の持ってるカード:ABC-A=BC 不正解を1つ外した残り:BorC(どちらを選んでも結果は一緒)=不正解 選択B、C(2/3) 司会者の持ってるカード:ABC-(BorC)=A(BorC) 不正解を1つ外した残り:A=正解 選択を変えた場合 正解:不正解=2:1 これはもういいんだろ?
まだ2/3とか言っている人がいるんですか。 いいですか?司会者はハズレのドアを知っているので ・参加者が選んだドアと、はずれのドア ・残りのドア とドアを分類する事が可能です。それぞれ当たる確立は1/2です。 はずれのドアを開けてもやはり1/2であることに変化は無いのです。
おいおいおいおい…… 書いている意味がぜんぜん解らないよ…… 自分が最初にハズレのドアを選択する確率は、最初2/3だろ? そして司会者が色々やって残った奴が正解する確率は(その中で)1/1だろ? 2/3 * 1/1 = 2/3じゃないのか?
>>609 では次の問題なら?
3つのカードがあり、あたりは一つです。
これを2つの箱に入れました。 片方は1枚、片方は2枚入っています。
最初に箱を選択した後、 司会者はその箱にはカードは1枚しか入っていないと教えました。
その後、選択しなおしてもいいと言いました。
さあ、最初の箱のままにした場合の当たる確率はいくつ?
変更した場合の確率は?
> 司会者はその箱にはカードは1枚しか入っていないと教えました。 って選ぶ人も箱にカードを入れるところを見てりゃわかるじゃん。 「その箱」って、選択された箱、の意味だよね? それとも「正解のカードが入っている箱」の意味? 箱を選択することで、あたりが決まるの? 箱を選んだあと、カードを選ぶの? 選ぶ人にとって何が明らかで何がわからないことなのか、 文章から読み取れません。プログラミングのための国語と文章表現 スレを立てて、ほかの皆さんに教えを乞うてください。
611じゃないんだけどさ、はぁ~~ やれやれっていう感じだね。 まあ612の意味がわからないという指摘も最もだが、後ろの1行半は見苦しいだけ。 っていうか611が何を言いたいのか漏れもわからん。
ム板なんだし、ソースまで晒してくれたんだから
>>568 を評価してやれよ(w
特に1/2派の人。
つーか司会者イラネ
616 :
デフォルトの名無しさん :03/04/02 18:21
誰かババ抜きで実験してくれない? 当たりが1/10か1/13なら、各条件20回ずつぐらいでも有意な差が出ると思う。
617 :
デフォルトの名無しさん :03/04/02 18:22
ネットで調べたら、ruby用のソースがあったので、TCに移植してみた。
/* TurboC++用のソース */ #include <stdio.h> #include <stdlib.h> #include <time.h> #define SELECT 3 // 選択肢 #define MAX 10000 // 試行回数 int win; // 選択を変えて当たった回数 void monty(void) { int i, hit, choice, door, decide; hit=rand()%SELECT; choice=rand()%SELECT; // 当たりと最初の選択 for (i=0; i<SELECT; i++) { if((i!=hit) && (i!=choice)) { // 司会者が開けるのは、 door=i; break; // 当たりでも挑戦者の選択でもないドア } } for (i=0; i<SELECT; i++) { if((i!=choice) && (i!=door)) { // 挑戦者が選択を変えて選べるのは、 decide=i; break; // 最初の選択でも司会者が開けたドアでもないドア } } if(decide==hit) win++; } void main(void) { int i; win=0; randomize(); for(i=0; i<MAX; i++) monty(); printf("%5d / %5d\n", win, MAX); getch(); }
代数学
幾何学
>>607 (あ)極限が1進数になるので不可能。
(い)ローマ数字なら出来るともいえる。
i + i = ii (1 + 1 = 2)
X + X = XX (10 + 10 = 20)
622 :
デフォルトの名無しさん :03/04/02 22:30
>>622 いや、十分恥じるべきだと思うが・・・
中学受験にも出たことのある問題だよ。
今現在1/2派の人って何人いるんだろ? 1人だけ?
しょうがねえなあ、わかりやすく611を書き直してやるか。 これで納得いかない1/2派には、どうしようもないので。 司会者は3つのボールと大きさの異なる2つの箱を参加者に見せた。 「この3つのボールのうち、1つは当たり、残り2つは外れです。」 参加者は、その中から1つを選んだ。 司会者は参加者が選んだボールを小さいほうの箱に入れ、 残り2つのボールを大きいほうの箱に入れた。 司会者は参加者に尋ねた「さあ、どっちの箱に当たりが入っていると思う?」 当然、大きい箱のほうが正解する確率は高いだろう? 大きい箱からボールを1つ取り出すなんていう行為は、何にも関係ない。 むしろ、回答者を混乱させる罠。 <<<< 話題を変えるために、ネタ募集中 >>>>
ボケが居ないように補足するが、ボールは外から見ても当たりか外れかは解らないからな。
今日の参加者はモナーとギコの二人だ。
モナーはAのドアを選び、ギコはCのドアを選んだ。
ここで、司会者は残ったBのドアを開ける。はずれだ。
『ドアを変えても良いですよ。』
モナーはCのドアに変えれば2/3の確率で賞品獲得、
ギコはAのドアに変えれば2/3の確率で賞品を獲得できる。
これであってるの?
>>2 /3派の人
>>627 残念だけど、交換しても確率は1/2だ。
A) 最初の問題は、必ずハズレを除いた場合にどうなるか
これは 1:1+1 になる
B) 新しい問題は、たまたまハズレの場合にどうなるか
1/3の確率でBには当たりが入っていた。だから、
1:1:1 となる。
蓋をあけた時点でゲームが終る確率が1/3あったという事
問題がすり変わってるし…… いいか、もちついてよく聞け。 2人以上参加するのであれば、 1.他人が選択したものが何であるのか解らない 2.司会者は各人別々に選択肢を1つずつ外す 必要がある。 そうでなければ前提条件が変わってしまうので、確率も変わって当然。
っていうかそもそも残ったドアが正解だったらどうなるのさ(笑)
631 :
デフォルトの名無しさん :03/04/03 14:20
箱の中に玉が5つ入っています。 赤い玉が2つ。白い玉が2つ。黒い玉が1つです。 箱の外から中の玉を見る事はできません。 貴方は箱に開けられている穴から両手を入れ、 左手と右手に玉を1つずつつかんで取り出しました。 左手につかんでいる玉を見てみると赤い玉でした。 その時に、右手も赤い玉をつかんでいる可能性はどのくらい有るでしょうか?
1/4
633 :
デフォルトの名無しさん :03/04/03 19:13
いい加減やめろよ。 これ以上この手の問題やりたいなら 「論理思考力トレーニング法:気がつかなかった数字の罠」 マリリン.サヴァント著、東方雅美訳訳、中央経済社 を読め。 モンティホールジレンマをはじめにコラムに出したマリリン嬢の書いた本で その問題をはじめ色々な問題がのってる。
つーか出題する前に日本語をもっと勉強しる
635 :
デフォルトの名無しさん :03/04/03 19:37
天才数学者でもわからなかったくらいの難問。 気にするな。
つーか元ネタを間違って解釈した上に機械翻訳を256回かけたような日本語に辟易としているだけと思われ
とりあえず事実は認めるべきだと思う。
>>544 氏もモンテカルロ法で確かめた事があると言うし
>>575-579 >>589 >>618 にはソースコードもある。
コード内で恣意的に確率をコントロールしている部分が
あると主張したいなら、その部分を指摘するべきだし、
そうでないなら次は "なぜこれが正しいのか" を考えるのが建設的。
3日止めた(´ー`)y-~~
639 :
デフォルトの名無しさん :03/04/07 11:53
みんな読書中・・・??
>633や637に同意したと思われ。 というか次にageるときは、何か問題書いてくれ!
(^^)
∧_∧ ( ^^ )< ぬるぽ(^^)
保守age 問題募集中
644 :
デフォルトの名無しさん :03/05/02 07:58
問題 直径rの円の円周の長さを2πとする。 また、円の面積を円周によって囲われる内側の領域の大きさとする。 この時、円の面積Sをrとπを用いてあらわしなさい。 (当然のことながら公式そのまま書くだけってのはなしね)
πもってきたら公式しか書きようがないと思うが
646 :
デフォルトの名無しさん :03/05/02 08:05
>>644 直径rの円の円周の長さを2πとする。
↓
直径rの円の円周の長さを2πrとする。
>>645 それじゃ面白くない。
もっと笑えるネタキボン
>>647 人の名前使わないように・・。
公式の証明というか導出問題のつもり。
積分使えば一発(0からrまでのxでの円周長の定積分∫2πx=πr^2)なのかな。
できれば小学生か中学生レベルの回答を見てみたい。
人の名前を勝手に使わないようにだって?
644と名乗ったのはこのスレでは
>>647 が初めてだと思うが。ログ読んでいないがな。
中学生なら 3角形の面積は 底辺*高さ/2 円を3角形でN分割すると 一つの3角形の底辺はおよそ 2πr/N 高さは r 面積=πr^2/N N個分の面積は πr^2
printf("π\n");
(微小面積) = (円周) X (微小半径) dS = 2πrdr 0-rで積分して s = πr~2
>>649 >>644 のカキコと共に暗黙に 644 の一時コテハンが定義される。
このコテハンのスコープは当該スレのみとする。
統計的熱力学方程式における ボーズアインシュタインの法則を 示せ。(東大82) (答え) アインシュタインにボーズという接頭語が付くことによって それによるアインシュタインのカツラである可能性を示唆している。 逆にアインシュタインという接尾語が付くことにより それに伴うボーズのアインシュタイン性も問われてくる問題。 落ち着けば解ける本問は合否を分けるポイントといっても いいだろう。 解き方だがまずボーズについて解き、リサイクリックな3変数関数g(x) して仮定し、かつ真性包茎条件と、童貞条件より e- >= 2/3*(yzu+アイーン)+シュタイナー; と同値変形できる。 だがこれでは実測の値と大きく異なってしまうので アインシュタインが修正を加え、不確定要素としてSを右辺に加えた。 e- >= 2/3*(yzu+アイーン)+シュタイナー+S; これがボーズアインシュタインの法則である。 物理学的にはただしいのだが、この式を工学的に実用に耐えうるものに するには微分係数をkと置きそれ導く。 g(x)+Sのグラフを書くと右図のようになり(ry) 見事にアインシュタインの髪の形になって、カツラをここに見出せた。 g'(x)のグラフの場合も同様にボーズのアインシュタイン性を示すものとなる。
656 :
デフォルトの名無しさん :03/05/02 22:00
わらいどころがまったくわかりません。
本当のボーズアインシュタインってどんなんだっけや?
偶数 奇数の問題でしょ。 偶数は2つに別けられる数 奇数は真ん中がいる数ね 偶数だと ボーズアインシュタイン統計に従う。 この場合、同じものを置換すると対称になる。 奇数だと、置換操作で反対称になる。 同じものを置換して反対称になるという事は、 もし、2つが同じ状態にあると置換すると反対称になる事になり、矛盾する。 だから、この場合、同じ状態になれない。 ボーズアインシュタイン統計は全てが同じ状態を取る事が出来る。
なんかちがくない?
>>512 そうだね
この場合、究めて高い確率で司会者の方にあるのだから。
その圧縮された解を選択するほうが得ですな。
うーん、だから例えば 級数展開 a0+a1*x+a2*x^2+.... で 偶数次以外の係数がゼロなら、偶関数と呼ばれてるよね たとえば cos は 遇関数 で、f(x)が偶関数だと、f(x)=f(-x) 奇関数だとf(x)=-f(-x) ね 二つに別けられるかどうかの単純な性質が、凝縮するかどうかにまで影響するって面白いよねって話でしょ
663 :
デフォルトの名無しさん :03/05/04 19:57
プログラミングに必要な数学の分野というのは 具体的にどのへんなんですか?
>>663 プログラミングを何の為にするかの問題で、
例えば、GUIを使ったCAD とか ゲームを作りたいならベクトルとか行列は必要だしね
でも、プログラミング全般の為に必要な数学は無いと言ってもいい。
ただし、概念に名前を付ける事、そして帰納的な思考は共通するものがあるよね。
10進数の数字を32ビット実数型に変換する方法教えて下さい
10進数は Σan*10^n の形で表現されています ですんで、その通りに計算すれば良いです。 逐次計算に変換するなら、 例えば123なら 1、先頭の 1 を代入 2、次に2を見て 前の1を10倍して 2を足す 結果12 3、次に3を見て 前の12を10倍して 3を足す。 結果123です
自分頭悪いんでよくわからないんですが 10進数 32ビット実数型 75 → 00009642 100 → 0000C842 例でいうと↑になるらしいんです どうやれば32ビット実数型になるのか知りたいんです
>>667 それは10進数->実数変換じゃなくて 整数->実数変換が知りたいという事?
10進数->実数変換は、四則演算が定義済(作成済)なら四則演算から
>>666 のように作成すればいい
>>668 すみません 整数->実数変換 の方です
両方の内部表現を知らないといけないんですか
かなり難しそうですね ちょっと勉強してきます
簡単に変換してくれるツールみたいな物でもあればいいですが
その辺はスレ違いっぽいのでそろそろ消えます
答えて頂いてありがとうございました
671 :
デフォルトの名無しさん :03/05/04 22:51
川合堂ライセンス(´_ゝ`)
>>657 ボーズ・アインシュタイン統計
ボーズ粒子の従う統計。
ボーズ粒子は粒子の交換に対し波動関数が不変な粒子である。
粒子が同じ状態にいくつも存在する事ができ、
その事を考慮した統計になっている。
波動関数の符号が変わる粒子をフェルミ粒子と呼び、
この場合は同じ状態には1個までしか粒子が入れない。
これを考慮した統計をフェルミ・ディラック統計と呼ぶ。
これらは粒子数を多くしていくと
古典的なマクスウェル・ボルツマン統計に近似的に等しくなる。
しかし、「ボーズ・アインシュタインの法則」なんて言い方
今まで聞いた事無いんだが、東大、大丈夫か?
673 :
デフォルトの名無しさん :03/05/05 20:30
全然、このスレを読んでもわからん 小学生には難しい・・
674 :
デフォルトの名無しさん :03/05/05 21:40
毛生えたか?
675 :
デフォルトの名無しさん :03/05/05 21:49
673はほんとに小学生なのか? 35だろ。
小生の間違いか?
677 :
デフォルトの名無しさん :03/05/07 00:52
小学6年生でつ 毛生えてますよ
>>672 > これらは粒子数を多くしていくと
> 古典的なマクスウェル・ボルツマン統計に近似的に等しくなる。
「温度が高くなると」かも。
>>677 いいなぁ。俺、中学に上がってからだよ。
681 :
デフォルトの名無しさん :03/05/09 06:53
C言語スレで見つけた問題 ピタゴラス数 a^2=b^2+c^2 を満たす 整数 a,b,c が共通の約数を1以外持たない時 a,b,cのいずれかは素数である。 これは真か? どうも、a=a1*a2 b=b1*b2 c=1c*c2 となる場合もありそうな気がするのだが
682 :
bloom :03/05/09 07:13
>>681 65 16 63
この場合どれも素数でないけど共通の約数はないよね?
間違ってるかも。
684 :
デフォルトの名無しさん :03/05/09 19:23
685 :
デフォルトの名無しさん :03/05/16 11:52
1-sqrt(1-x)においてabs(x)<<1のときに誤差が大きくなる原因と その解決方法を探しています。 スレ立てるまでもない質問スレで級数展開を教えていただきましたが その他の方法はありませんでしょうか?級数展開はわかんないんです。
686 :
デフォルトの名無しさん :03/05/16 12:08
誤差が大きくなる原因は、 電卓ででも、 a =1-a; a =1-a; とこの計算を2度やってみましょう。 数学的には元に戻る筈ですが、aが小さい程誤差が大きくなります。 浮動小数点数は c*2^d という方式で表現します。c,dのビット幅は固定です。 その為、1-a の段階で aの下位ビット情報が捨てられてしまう事になります。 ただし 1-a という計算結果ちゃんと 実数部の精度があります。 級数展開は 質問スレで書いたとおり x/2 + x^2/8 + x^3/16+5*x^4/128+.. です。 x^4 が無視出来る程度に小さい時に 3次までの結果を使うといいでしょう.
他の方法が無いかという件ですが、 y=1-√(1-x) として (1-y)^2-(1-x)=0 と変形、ニュートン法で解くのが速そうです
688 :
デフォルトの名無しさん :03/05/16 12:14
>>686 一部私の理解力の限界を超えましたが
取り敢えず3次の級数展開をやってみます。
ちなみにsqrt(1-x)=x/2 + x^2/8 + x^3/16+5*x^4/128+..
なのでしょうか?
どこを級数に展開するのかも・・・
その級数展開は 1-sqrt(1-x) です sqrt(1-x) は 1-x/2-x^2/8 ・・・・ となります。
ある整数 x を N 進数表現したいとき、どうすれば効率よく、かつシンプルに出来ますか? いまは N, N^2, N^3 と累乗していって、割ったときに0 になるまで増やしていって、 例えば、 25 を 3 真数でやるなら、 25 = 2 * 3^2 + 7 7 = 2 * 3^1 + 1 1 = 1 * 3^0 という感じでループを使っているのですが、もっと効果的な方法があるのではないかと思いまして。
691 :
デフォルトの名無しさん :03/05/16 12:34
ニュートン法で精度を上げる方法
準備
z=(1-y)^2-(1-x)=y^2-2*y+x これをyで微分
z'=2(y-1)
手順
1、y =1-sqrt(1-x)でyの初期値を求める
2、y =y-(y^2-2*y+x)/(2y-2) を2~3度繰返す
>>691 sqrt(1+x) ならその通りですが、1-sqrt(1-x) なので全項が+です
>>690 普通はシフト演算とビットを見る事で行います。
msbを見るなら 16ビットなら $8000 と and して 左シフトしてゆきます
lsbを見るなら 1とand して右シフトしてゆきます
>>686 687 689 692
取り敢えず級数で教えていただいたものを
用いたら正しいものができました。ありがとうございます。
ニュートン法の方も試してみます。
なんか感動しました。
ありがとうございました。
ニュートン法挫折・・・д だめだ・・・
>>690 ごめんなさい、N進法を聞いてるんでしたね。
除算命令があるCPUなら 除算命令は割算結果と剰余が同時に出るので
25を変換する場合 3で割っては剰余を求めていけばOKです
25 = 8*3+1
8 = 2*3+2
2 = 0*3+2
という事で3進法 221 が求まります。
除算が高速でないCPUの場合、テーブル検索を使います。 16bitの場合、上位H と 下位L に別けると H*256+Lとなります。 それぞれ 8ビット分のテーブルを用意しておきます。 3進法だと11桁分必要です。 11桁分のバッファを用意しておいて、3進加算をするわけです。 下位桁から3^5+3^2+3+1 から計算してもいいのですが
>>698 y*y-2*y+xが誤差を表しているんですね
ということは、cでは、何らかの命令文を
使用して、その誤差が一定値いかに収まるように
その計算を繰り返す方法をとればよいと?
取り敢えずやってきます。
do whileでいけるのかな・・・
c超初心者なんでがんばります
>>699 ループしなくても
y =1-sqr(1-x) は十分良い近似値なんで
double の精度範囲なら
y =y-(y*y-2*y+x)/(2*y-2)
を無条件で2回実行すれば十分です。
>>699 メモ電卓で計算すると確かに2回で十分ですね。
一応プログラムとして提出しなければならないので
形にしておきました。
誤差のy*y-2*y+xが-方向から0に近づくことを
忘れていて誤差範囲の指定をプラスにしてしまった
ため途中死にそうになりましたが、
なんとか、なりました。
ありがとうございました。m(_ _)m
697の続き もっと一般的には n 進数加算を作っておき 2倍しながら2進数変換と同じように変換してゆきます つまり n 進数で 1 2 4 8 16 32 64 256 516・・・を作って はデータのLSBを見ては加算しデータを右シフトするわけです
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
704 :
デフォルトの名無しさん :03/05/28 20:20
あげ
705 :
デフォルトの名無しさん :03/06/06 07:58
保守
706 :
デフォルトの名無しさん :03/06/06 08:55
2進、10進、16進の相互変換を脳内でスパッとできるようになりたいのですがどのような訓練をすればいいですか?
実際に脳内で毎日相互変換したら?
>>706 まず、次の数列を空で言えるまで練習しる。
2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536
ひとつずつ指を折りながら、4番目が16、8番目が256、12番目が4096、
16番目が65536だ。
指でやってる人が他にもいるとは・・・ 「それなにやってるの?」と言われてからあまり人前でやらないように してる。
>>76 ダンプリストを毎日眺める。
ファイルフォーマットの解析をしたりすると覚えられるかも。
713 :
デフォルトの名無しさん :03/07/05 23:02
保守的になにか質問ありますか? と聞いてみる
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
>>713 PerlでCGI組むだけのおしごとしてるんですが、
知っておくと便利な数学知識ってありますか?
つーても数学得意なのに文系の大学言ってたので、
高校数学まではばっちし、大学の数学はわからん。
(雑誌「大学への数学」の元、学コンマンですた・・・
つーても、しらんか)
プログラミングするなら、言語に関わらず ブール代数ぐらいは知っといた方がいいような…
>>718 まぁ、当たり前だな。結局、そう言う言語非依存のところが武器になってくるわけで。
でも、わざわざ勉強するほどのことかとも思う。特に1ビットな演算なら。
>>719 で、そういう基礎がすこんと抜け落ちてる椰子多くね?
日本語もそうなんだが。
あー、画像処理や図形描くのにすら数学的知識が必要なようだ。 三角関数以来数学を投げ出した(赤点回避以上の勉学をしてない)俺が プログラマとして大成するのは無理というものだろう。 709のような小技というか小手先の鍛錬は文系向きだと思った。
とりあえず2^nは麻雀で覚えた訳だが
coeciffientの決定はどうなってるの?
(^^)
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536
coefficient
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
っていうかそもそも残ったドアが正解だったらどうなるのさ(笑)
問題 ある点をクリックされました。 その点がある四点で囲まれた図形の範囲内に あるかどうかを求めなさい。 ある点とある四点はすべて違う位置にあるものとします。
ある4点のうち、3点が直線に並んでたりすると極めてめんどくさかったりするんだよね。 その手の問題って。
>>730 まず二次元なのか三次元なのかはっきりさせろ。
(クリックとか言ってるから、二次元だろうと思うけど...。)
内積というのはなんですか?
>>733 ほんとに内積か?
4点をA, B, C, D として、クリックされた点をPとする。
P が ベクトルAB,ベクトルBC,ベクトルCD,ベクトルDAのすべてに対して同じ側にあればよい。
PがベクトルABに対してどちら側にあるかは
ベクトル AP を p, ベクトル AB を q として
p.x * q.y - p.y * q.x が 正か負かで判断できる。
四角形 ABCDが凸多角形でない場合は、二つの三角形に分割して、
どちらかの三角形に含まれるという条件で判定する。
736 :
デフォルトの名無しさん :03/08/26 13:26
706じゃないけど、漏れも暗算できるようになっときたい。 709の数列は言えるけど、それだと2進と10進の変換だよね? 2進と16進の脳内変換方法も教えて
>>730 三角形の頂点3つと、中の点1つを考えて見ましょう。この4点が囲む
図形は一意に定義できません。凸でない図形3つがありえる。
さらには、外側の三角形も対象に含む場合もあるでしょう。
「4点が張る凸包内に」と問題を与えれば適当だったことでしょう。
>>735 正負で判断できるのは、ABCDが(辺が互いに交わらない)多角形の
頂点順に整列している場合のみで、4点に辺をつけたとき鼓の形に
なる場合うまくいきません。よって、一般の場合を考えて奇偶(パリティ)
を使ってください。
>>730 あるいは凸包がいやなら、四辺形の頂点になるよう4点に順番をつけて
問題を与えるとか。
739 :
デフォルトの名無しさん :03/08/26 14:57
「凸包」ってなんて読むの? とつほう/おうほうでいいのかな?
「おうほう」なんて言葉はたぶんない。
>737 質問! パリティをどんなふうに使ったら解決しますか?
2進→16進なんて、2進数を読めるかどうかしかないと思うが。 4ケタずつに区切ったら後はパターン認識だろ。2進→10進よりかずっと楽。
>>735 733ではないが
4点をA, B, C, D として、クリックされた点をPとして、
A, B, C, D がPの周りを時計回り、または反時計回りの順番に並んでいる場合は
APB, BPC, CPD, DPA のなす角の合計が2πまたは-2πになることで
判断できることが言いたかったんでないの
この場合だと、凹でもOK
3点から角度を取るにはどうすればいいっけ?
余弦定理
double dx1 = p1.x - p0.x; double dx2 = p2.x - p0.x; double dy1 = p1.y - p0.y; double dy2 = p2.y - p0.y; double a = atan2(dx1 * dy2 - dx2 * dy1, dx1 * dx2 + dy1 * dy2);
750 :
デフォルトの名無しさん :03/08/30 17:30
ある点の回転 // 回転する角度(radian) // M_PI == 3.1415... double s = 90*M_PI/180; // 回転させる点 double x = 1; double y = 0; // 支点 double fx = 0; double fy = 0; // 支点からの距離 x-fx y-fy double xx = ((x-fx)*cos(s)-(y-fy)*sin(s))+fx; double yy = ((x-fx)*sin(s)+(y-fy)*cos(s))+fy; 結果 xx6.1230317691118863e-017 yy1.0000000000000000 yyはOKなんですがxxがふっとぶのはなぜなんでしょう。。。
ふっとんでるようには見えませんが?
あれれ。。 0を90度回転しても0なんじゃ(+_+ 高校の教科書開いてきます
あ、浮動小数点についてわかっていなかった。ごめんなさい。& thx!
齢27にして、数Iの参考書買ってきました。とほほ。 ちょっと複雑な式見るたびに丸1日考え込むのには飽きた。基礎から叩き直す。
755 :
デフォルトの名無しさん :03/09/11 19:15
誰か、ある1点から均一に放射される線を乱数で生成する方法教えてくれ。 昔、2chの数値計算かどっかのスレで見た記憶があるんだが忘れてしまった。。。
0~2πまでの乱数を作って(0.0) ~ (sin(r),cos(r) )の直線を引く
757 :
デフォルトの名無しさん :03/09/11 20:10
>>756 あ、すまん。重要なこと書き忘れた。
「空間内で」です(汗
0~2πまでの乱数を2つ作ればいいでしょ?
こういう時の「均一」ってwell definedな中でuniqueに定まるの? 自明な一つは想像付くけど、自明でない奴もあったりしない?
>>758 極座標のthetaとphiに一様乱数を振ると北極と南極に偏るっス。
>>759 uniqueとかどうかとかの議論は良いので、
とりあえずその自明な1つを教えてplease
>>759 すまん。読み間違えた。
解法がuniqueかどうかってレスしてるのかと思った。
ある球面に一様に分布する乱数点の生成がやりたいんです。
これでuniqueですよな?
>>760 一様乱数なのに、どうして極に隔たるのですか?
球じゃなくて円筒なら偏らないのにね。
ああ、なるほど 緯度経度方式にしちゃったんですね? そうじゃなくて2度直行する方向い回転させてはダメ?
3次元空間の場合、回転軸が一定な限り 極に分布が偏ると思う。 クォータニオン使えば回転軸に縛られないから できるかも・・・
X,Y,Zの3軸で0~2πの回転させればいいじゃないの?
>>764 おっしゃるように緯度経度でやってました。
2度直行する方向に回転させるつーのは、具体的には何やるんですか?
>>765 できるかもっていうか初めて聞いた言葉なんですが。。。
球面上の一様分布って、Knuthの本に載っていたような気がするけど、 手元に本がない
(-1,-1,-1)~(+1,+1,+1)の乱数を発生させて、原点からの距離が1より大きいのは破棄するとか。
>>769 それだと、球「面」じゃなくて、球体の中になるぞ
>>768 探してみます。
>>769 それで、球体内の点を球面上に移せば一見良さそうですが、
やはり捨てる分の点の偏りが出る気がします。
>>767 クォータニオン(四元数)っていうのは簡単に言っちゃうと、
一般の複素数を拡張したような概念で、a+bi+cj+dk(a,b,c,dは実数、i,j,kは虚数)
っていうふうに記述されたりする。
これを使うと3次元でのあらゆる回転を4つだけの値で表現できる・・・
っとまぁ、詳しいことは興味があれば自分でしらべてもらって、
で難しい話抜きにしてクォータニオン使った場合の、
一様分布な球面座標値の計算手順は次のようなかんじです
(実際に確認してないのであまり自身ないです)
1.4つの値、a,b,c,dを乱数により生成
2.a,b,c,d各値の2乗の和が1になるように、それぞれの値を正規化する。
3.次の式より、x,y,zの値を求める
x = 1 - 2 * (b * b + c * c)
y = 2 * (a * b + c * d)
z = 2 * (a * c - b * d)
これで求めた(x,y,z)が半径1の球体上の
球面に位置する任意の座標値となるはず。
でも、こんな小難しいことしなくても
766の方法でシンプルにいけるかもしれませんね。
>>771 > それで、球体内の点を球面上に移せば一見良さそうですが、
> やはり捨てる分の点の偏りが出る気がします。
あ、そうか、それでうまく行くかも知れない。
球体内に均等分布するから、各点の座標を、中心からの距離で割ってやれば、
偏りはない。
(乱数そのもの質が悪くて、3次均等分布しないなら別だけど、まさかそんな
粗悪品をライブラリに入れているやつはおるまい)
>>772 実装してみましたが、偏ってました。
でも、面白そうなので勉強してみます。
>>773 球面内は確かに一様ですが、球外の捨てる分の点の分布は
球面に対して一様ではないと思うのでまずい気がします。
>>766 の方法は具体的にどうやるんでしょうか?
774>> すいません、補足です。 2.の手順で正規化された値を求めるとき、 とりうる範囲が-1.0~+1.0なので 乱数だすとき、負の値も考慮する必要があります。 偏ってしまったのは正の値のみの乱数で計算してしまった ためかと思われます。
776 :
デフォルトの名無しさん :03/09/12 06:28
>>774 > 球外の捨てる分の点の分布は
> 球面に対して一様ではないと思うのでまずい気がします。
捨ててしまったものについては、考えなくていいと思う。
と、いうより、一様分布に悪影響を与えるものを捨てているのだ。と、
解釈したほうがいいんじゃない?
つまり、
「x,y,z が -1から1の範囲だというだけだと、立方体の中で
均等分布するから、これを中心からの距離で割って球面上に
移しても、球面上に均等分布はしない。立方体の頂点付近の
密度が高くなる)。
だから、球の外にある点は捨てる。」
と、いうこと。
777 :
デフォルトの名無しさん :03/09/12 06:33
777なら明日阪神優勝
>>755 1. φを[0, 2π)の一様乱数で作る。
2. tを[-1, 1)の一様乱数で作る。
3. θ=arccos(t)
4. x=sin(θ)cos(φ)
5. y=sin(θ)sin(φ)
6. z=cos(θ)
7. パンにはやっぱりネオソフト
8. (゚д゚)ウマー?
>>778 極地方を引き伸ばせばいいのだとは思ったけど、そっか、arccos なのか・・・
れれ?
>>778 z=cos(θ)=cos(arccos(t))=t だから、これは高さ(z)に関して
点の密度を一様にしようという戦略といえるよね。
でも、赤道付近で1周まわした幅1センチの帯と、
極付近の幅1センチの帯では、赤道付近の方が
面積大きいじゃん。だから778だと、球の面積あたりの
点の密度は違ってしまう気がするけど。
>>775 確かに、0~1.0にしてました。
-1.0~1.0にすると、確かにそれらしいものができました。不思議だ。
>>776 勘違いしてました。確かに、これでできますね。
>>778 これも実装してみるとうまくいっているみたいですが、、、
この式はどうやって出てきたんだろう?
こうやって振り返って見ると結構解法あったんですねぇ。
直観的には776が一番分かりやすいかな。
みなさんどうもありがとうっス。
>>781 > この式はどうやって出てきたんだろう?
2次元の単位球面だよ。
778でうまくいくのか。 プ>疑った俺 もっと勉強するか。
>>781 計算量という点でも、三角関数を使わないので776に書いたやり方が
お勧めではないかと。
ところで、Knuth の本を押入れから探し出して読んでみたら、おそるべき
回答が載っていた。
『平均ゼロ分散1の正規分布乱数』をN個用意して、
(x1,x2, ... XN) を作り、これを中心からの距離 sqrt(x1*x1 + x2*x2 + ... xN*xN)
で割ると、N次元空間の球面に一様分布する。
と、いうことなんだそうな。
776と似ているけど、一様分布の乱数ではなく正規分布の乱数を使うと、
*何も捨てていない* のに、球対称に分布するというのがポイント。
本には詳しい説明はなかったけど、考えてみると確かにそうだ。
単純に考えると、一様分布の時と同じで、立方体の頂点に近い場所の密度が
高くなりそうだけど、x,y,z はそれぞれ正規分布しているので、x,y,zの3成分が
同時に大きくなる確率は低いということで、うまく辻褄があう。
正規分布乱数同士の和は正規分布するので、座標軸を回転させても、
新しい座標軸で見た各成分は、やっぱり平均ゼロ分散1の正規分布乱数になる。
結局、この球状に広がる点々たちは中心からの距離にのみ依存する密度関数を
持つから、各点の座標値を中心からの距離で割ってやれば球面上に均等分布すると。
3次元だったら、776のほうが単純でいいと思うけど、高次元の空間については、
捨てる場合が増えてくるから、こちらのほうがいいかも。
>>782 極座標なのは分かるんですが、arccos使ってるあたりが謎なんです。
>>785 うーん、xyzの独立した正規分布合わせると
軸の方向によらずに一定の正規分布になるってことですかね?
本当なんですかね、、、Knuth疑うわけじゃないんだけど。
なんか考えると熱出そう。。。
ところで、正規分布の乱数はボックスミュラー法とやらで作るのかな?
(さっきググった)
>>780 「高さに対する密度」であることに注目だね。
赤道付近で1周回した高さ1センチの帯と、
極付近の高さ1センチの帯は
極付近だと半径が短い分、幅が広くなっているので、
面積は実は等しくなるってことで。
>>785 z=cosθな部分の円周の長さは2πsinθになるから、
θの確率密度が sinθ/2 になるようにすれば、球面上での分布が一様になる。
-1~1の一様乱数(確率密度=1/2)である t との変換を考えると、
∫(-1~t) (1/2) dx = ∫(0~θ) (sin(x)/2)dx
になればいい(確率密度を積分したもの = 確率 が等しくなるようにする)。
これを解くと t = -cosθになる。
てなわけで、θ=arccos(t)
787 :
デフォルトの名無しさん :03/09/29 07:59
もまえらクォータニオンって言うなよ。 Hamiltonの四元数(しげんすう)って和名がちゃんとあるんだ。まあ別にいいけどさ。 # octonion (ケイリーの八元数)もあるぞ んで、やっぱKnuthのTAoCPって持っているべき? 上で驚異的な解法がもたらされたりしているようだが。
>>787 ハミルトンの四元数は四元数の一部だぞ?
わかってるか?
四元数って実際には使わないモノだと昔教わったものだが…… 3D関連で利用されてるんだね。
>>789 クォータニオンによる回転表現はジンバルロックが起きないのが便利です。
アフィン変換と違って、クォータニオンでは移動や拡大縮小が表現できないので、
アフィン変換行列を作る下請けに使うことが多いけど。
そろそろ表現論ヲタが口を挟みそうな予感。
793 :
デフォルトの名無しさん :03/10/23 11:20
ご相談です。 16bit マシンでaに 0~0xffff の値を設定し、実際に使う時bはスムーズに変更させたいとします。 そこで、毎サイクル b := b+(a-b)/256 のような計算をさせる事にしました。 が、これを整数演算ですると不感帯が出来てしまいます。 32bit中間レジスタ w(wh+wl) を用意して w := a*256L+ b*256L if w>0 then wh:=wh+1 else if w<0 then wh:=wh-1 b := b+wh とすればいけるのですが、分岐を使わず、上手い計算手法はないでしょうか?
用途は組込で、実際はアセンブラで書いています。 毎サイクル±1ならCFを使って上手く書けるのですが、それでは今度は時間がかかりすぎる為 b=b+(a-b)/256付近の変化量にしたいのです。
あ w := a*256L- b*256L です 今考えているのは 16bitレジスタ w w := (a - b) して if ボロー then begin //負数 w-> キャリーを含めた右シフトx1 w-> 算術右シフトx7 b:=b+w; end else begin ( w+$FFFF) して CFを残す w-> 算術右シフトx8 b:=b+w+CF end; これでもまだ分岐が一つ入るので、なんとかこの分岐を減らせないかなと 使うCPUの特性は バレルシフト可能・ 分岐は4サイクルと重いのです
単純に
long w =(long) ((unsigned long)a - (unsigned long)b);
int pls=-((-w)
>>16 L); //1以上ならなら 1
b = b+(w >> 8L);
b = b+pls; //算術右シフトで失った 0~255 をカバーする
これでいいんじゃないの?
>>796 あ! そのせんで考えてみます。ありがとうございました。
数学板に書き込もうか迷ったんですけど… 論理回路の問題で 「全加算回路の真理値表から直接論理式を構成してみなさい」 っていう問題でつまづいています。 真理値表 a b c | s c' ------------- 0 0 0 | 0 0 0 0 1 | 1 0 0 1 0 | 1 0 0 1 1 | 0 1 1 0 0 | 1 0 1 0 1 | 0 1 1 1 0 | 0 1 1 1 1 | 1 1 うまく表になったかな? 入力a,bと下からの桁上げcが与えられて、 その和sと上への桁上げc’を出力する回路です。 ブール代数の流れから来てる問題なんですけど、 ググっても理解できなかったのです(-_-;) 数才のない女に知恵を貸してください(m__m)
799 :
デフォルトの名無しさん :03/11/05 20:14
>>798 まず結果が1になるもの全てについて成り立つ式を考える
それから簡略できるところを簡略するって感じで行くのが良いかと。
bool s,a,b,c,c_dash;
s = ( !a && !b && c ) || (!a && b && c) || etc.....
c_dash = ( !a && b && c ) || (a && !b &&c ) || etc....
ってな感じで
>>798 27にもなって
なんでそんなことやってんの?
>>800 さん
レスありがとうございます!
記号の意味(&&とか!)を他の教科書を参考にして解読してみます!
>>799 できればしたいです。
>>801 このまま行くとケコーンできないかもしれないという焦りから、
高校の教員免許を取る為に通信制の大学に入学したのです。
必修科目のレポートの為なのです(汗
>>802 &&はAND、||はOR、!はNOT相当。
×:s = ( !a && !b && c ) || (!a && b && c) || etc.....
○:s = ( !a && !b && c ) || (!a && b && !c) || etc.....
だった。スマソ
カルノー図を描いてみたけど、sは
>>800 のより簡単にはならないみたいだな。
c' の方は、少しは簡略化できる。
805 :
デフォルトの名無しさん :03/11/06 01:34
>>800 xorが使えるなら、
s = a^b^c なんだが。。
あとは、
c_dash = (!a && b && c) || (a && (b || c))
ってのどう? お前ら確かめて下さい。
ageスマソ.. あと、s/800/798/g スマソ..
c_dash = (b && c) || (a && (b || c)) になった。
みなさんありがとうございました! c_dashの簡略化がわかるまで時間がかかりましたが、 なんとかできました。 おかげさまで、違う問題まで解けました。 プログラミングは必修なので、逃れられないけど、 この板を参考にがんばります!
数学というより統計なのだけど、時々見かける erf は何の略ですか?
Error function の略じゃないですか? 正規分布・ガウス分布 googleで検索したら 誤差関数 erf(X) は、ガウス分布関数を 0 から x まで積分したもの とか出てくるよ。
812 :
デフォルトの名無しさん :03/12/13 11:36
816 :
デフォルトの名無しさん :03/12/14 00:20
既出かもなんですが、時間間引きFFTでまず順番を偶奇に並び替えて
fftsample/2のfftを二回再帰で呼び出していって、fftsampleが2に
なったら2sampleのdftを計算してretしたcodeをかいたんですがなんか
間違ってますでしょうか??
諸先輩方の御意見賜りたく候。
みたいな。。。
http://ea.uuhp.com/~rifkw/fftk.c なんかうまくいかないんです。。
排他論理和を教えて下さい
>>817 入力1 入力2 出力
偽 偽 偽
偽 真 真
真 偽 真
真 真 偽
排他的論理和についてこれ以上何が知りたいというのだ…
入力1 入力2 出力 偽 偽 偽 真 真 偽 この二つは理解しがたい。 偽を1、真を-1とすれば理解できるけど。ってそりゃ積か。
820 :
デフォルトの名無しさん :03/12/20 12:37
「排他」論理和ですよ。 一人しか通れない穴みたいなものを想像して理解しよう。
>>819 排他的論理和は a != b のときに真になる演算。
和と付くのは、
真…1、偽…0で、
a XOR b = a + b を2で割ったあまり
という風にも考えられるからかな?
>>822 だからベン図書けば名前の由来もすぐ分かるんだって。
論理を数字で考えるから混乱するんだって! a^b ↓ (a & !b) | (!a & b)
>>819 なんていうか、排他的論理和はそういうものって納得するしかないだろう。
2入力1出力の論理関数は全部で16種類あるが、入力1と入力2について対称なのはそのうち8種類
そのすべてに名前を付けてるだけだな。
入力それぞれのパターンに対する出力を並べてみると、
両方偽 真と偽 両方真 関数名
偽 偽 偽 恒偽
偽 偽 真 論理積(AND)
偽 真 偽 排他的論理和(XOR)
偽 真 真 論理和(OR)
真 偽 偽 否定論理和(NOR)
真 偽 真 排他的論理和の否定(XNOR)
真 真 偽 否定論理積(NAND)
真 真 真 恒真
と、これだけの関数があることになる。
恒真関数や恒偽関数は意味がないし、NAND/NOR/XNOR はそれぞれ AND/OR/XORの否定だから省くと、
論理和(OR, |)/論理積(AND, &)/排他的論理和(XOR, ^) の3種類が残る。
XORをなぜ「排他的論理和」と呼ぶのかは、
>>823 の言うとおり。
XNORって、どこの方言よ? 普通は EQUIV とか EQUIVALENT とかいわねえか?
>826 キーワード意味を理解して使用するなら何でもよろし。
ぐぐってみたらXNORって結構たくさん見つかった。反省。
どうでもいいが、 XNOR: exclusive negated OR より、 NXOR: negated exclusive OR の方がいいんじゃないか?
830 :
デフォルトの名無しさん :03/12/24 22:00
pとqは排他的論理和 = p ≠ q = (p ∨ q)∧-(p ∧ q)
∧_∧ ∧_∧ =( ´V`)∧-( ´∧`)
p∀q
>>829 入力側でNOTしても出力側でNOTしても同じだから意味的にはOK
MSX-BASICにはIMPがあったけど、外のBASICはどうだったんだろ
∧_∧ (゚Д゚ ,,) {age) (u u_)~
>>836 (!a ^ !b) == !(a ^ b)
どこか間違ってるか?
完全に間違ってるな。 ごめんなさい。
ワロタ。ドンマイ ド・モルガンの法則だな。 あれ、ド・モアブルってのもあったな
>>840 a || b == !(!a && !b)
これのことだよな。
今度は間違ってないよな?
842 :
デフォルトの名無しさん :04/01/13 08:36
>>838 こうか?
・ (!a ^ !b) ==(a ^ b)
・ (!a ^ b) == !(a ^ b) == (a ^ !b)
843 :
デフォルトの名無しさん :04/01/13 09:39
>>837 Impって小悪魔のことだよね。
小悪魔演算子?
844 :
デフォルトの名無しさん :04/01/13 22:21
MATLABで線形計画を解くのですが 定式化をお願いします! 5種類の合金を混合して、40%がスズ、 35%が亜鉛、25%が鉛から出来ている 新しい合金を作る。 |スズ|亜鉛|鉛 |価格 __________________________________ 合金1|60|10|30|22 合金2|25|15|60|20 合金3|45|45|10|25 合金4|20|50|30|24 合金5|50|40|10|27 最小の購入費用で目的の合金を 作るために各合金はどれだけ 購入すればよいか、定式化せよ Min 22*x1 + 20*x2 + 25*x3 + 24*x4 +27*x5 s.t. という感じでお願いします
60*x1 + 25*x2 + 45*x3 + 20*x4 + 50*x5 ≧ 40 10*x1 + 15*x2 + 45*x3 + 50*x4 + 40*x5 ≧ 35 30*x1 + 60*x2 + 10*x3 + 30*x4 + 10*x5 ≧ 25
もう一問お願いします。 3つの工場でそれぞれ缶詰を製造し、 4つの問屋に販売している。 輸送費を最小にする輸送計画を求める 線形計画問題として定式化せよ。 各工場から問屋への輸送費は次の通り 問屋A |問屋B |問屋C|問屋D| 工場1|464 |513|654|867 工場2|352 |416|690|791 工場3|995 |682|388|685 各工場の生産の上限 工場1|75 工場2|125 工場3|100 各問屋の需要 問屋A|80 問屋B|65 問屋C|70 問屋D|85 Min ??? s.t. ??? お願いします
>>874 二匹目の泥鰌は居ない
という事じゃなかろうか(藁
1つで御の字と我慢しつつ自力で頑張ってみろと言うのが正解かと(藁
849 :
デフォルトの名無しさん :04/01/15 06:33
文字列から(32bit)整数へのハッシングで計算負荷の軽いヤツ、 って言われたら皆さんどんなの使いますか?
>>849 *(unsigned long int *)string;
三文字以下だとゴミが入るから注意してくれ。
>>850 それだと三文字以下のを考慮しても 32bit 整数全体を舐めれない。
0x00 が途中に入ってくる数値を表せないし、
0x01-0x1F (\r, \t, \n を除く), 0xFD-0xFF とか
普通入ってこないし。
((unsigned long*)str)[0] + ((unsigned long*)str)[1]
の七文字以下を考慮したものとかどうかな?
>>851 > 32bit 整数全体を舐めれない。
そんな要件は書いてないけど ?
> 計算負荷の軽いヤツ
が最優先だろ。
>>852 すいません.
ハッシングという言葉で32bit全部なめるという意図を含められると思っていました.
できれば32bit全部をなめられるほうが良いです.
>>850 ,851
すいません.よく分からないのですが,他のメモリ空間の値をハッシュとして使う
という発想だと理解してよいでしょうか?
>>853 > ハッシングという言葉で32bit全部なめるという意図を含められると思っていました.
ハッシュにそんな意味はない。
ただ、32bit 全て使うほうが衝突が減るので効率的になるため、通常は 32bit 全て使うようにする場合が多い。
> すいません.よく分からないのですが,他のメモリ空間の値をハッシュとして使う
> という発想だと理解してよいでしょうか?
ぜんぜん間違ってる。つーか、「他のメモリ空間」ってどっから出てきた ?
C 言語を知らないと言うことか ?
だったら使う予定の言語書いてくれ。
極端な例なら、0とか0xffffffffとか0xdeadbeafとか決め打ちでも
hashはhashなわけかも。常に衝突するから意味ないけど最速。
それに比べれば
>>850 は結構いけると感じた。a-zしか現れないと
大胆に仮定しても、26^4(ほぼ2^19)ものhash key値を取りうるやん。
リアルな英文だったりすると相当偏るかもね。
>>850 ほど速度を追求しないなら、32bit単位で全体をxorするのが
普通に考え付く汎用で速いhaskじゃないかな。実際よく見るでしょ。
>>854 ようやく理解しました.Cは知っているつもりだったのですが・・・_| ̄|○
K&Rの角に頭ぶつけて逝ってきます・・・
>>850 これだと4文字以上の同じprefix持っている文字列に
同じhashが割り振られるのが気持ち悪いんですよね.
>>855 l = strlen(str);
hash = 0;
for(i = 0; i < l / 4; ++i){
hash ^= ((unsigned long int *)str)[i];
}
a = (l / 4) * 4;
for(i = a; i < l; ++i){
hash ^= ((unsigned long int)str[i] << ((i - a) * 8));
}
こういうことですよね?
これは"veryverylong"と"long"に同じhashが割り当てられるのが気持ち悪いんですよね.
そんな細かいこというなら「計算負荷が軽いもの」とか書くな!って言われそうですが・・・
結局,計算負荷とhashの一様性・予測不可能性がtrade offなんで
そこらへんの兼ね合いを皆さんどこで折り合いつけるのかなと思って聞いた次第です.
もちろん,hashの用途にもよるんですが・・・
って,最初からこう書けば良かったんですね.すいません.
>>856 > これだと4文字以上の同じprefix持っている文字列に
> 同じhashが割り振られるのが気持ち悪いんですよね.
違う。
気持ち悪いとかの問題じゃなくて、きちんと動作しない。
--- test.c ---
#include <stdio.h>
unsigned long int hash(const char *const key){ return *(unsigned long int *)key; }
char A[] = "AAAA";
char B[] = "BBBB";
int main(){
char *Key = "X";
strcpy(A, Key);
strcpy(B, Key);
printf("hash(\"%s\") -> %lx\n", A, hash(A));
printf("hash(\"%s\") -> %lx\n", B, hash(B));
return 0;
}
$ cc test.c
$ ./a.out
hash("X") -> 41410058
hash("X") -> 42420058
$
同じキーに対して違うハッシュ値が帰ってきたらまずいだろ。
>>860 >>858 で自分が引用した文章を100辺読み直して、
「
>>865 はなにが気持ち悪いといっているのか?」
「
>>858 はなにが違うと考えているのか?」
という設問に答えられる程度の日本語力を身に着けてから出直してください。
>>861 > 「
>>865 はなにが気持ち悪いといっているのか?」
さあ ? 俺、予言者じゃねーからなぁ...。(藁
ププッ。
>>849 自分はPerlかなんかからぶっこぬいて使ってる。
倫理的にはまずいだろうな…叩きレス付きそうな予感
867 :
デフォルトの名無しさん :04/01/19 08:56
>>857 それなら シフトや掛け算を追加するとかすりゃいいじゃない。
for(i = 0; i < l / 4; ++i){
hash *= 2689 ;
hash ^= ((unsigned long int *)str)[i];
}
>>860 >>857 のコードはゴミは入らないと思うが?
ただ、高速にしたいなら、switchで別けて一度にやればいいのにと思うけど、
まあ、そうするとインディアン依存になってしまうしな。
なんか出張から帰ってきたら変な方向に・・・すいません.
850の意図もちゃんと理解したつもりです.
私が856で気持ち悪いといっているのは,850の方法では
たとえば"aaaabcde・・・"と"aaaazyxw・・・"に同じhashが振られるように,
先頭4文字でhashの値が決まるのが
気持ち悪い(用途によってはダメダメなhashになる)ということです.
850のような方法を知らない,あるいは一見してその意味を理解できなかったのは
まだまだ私の修行不足ってことでしょうね.がんばります.
>>867 そうですね.そんな感じに落ち着けるのが無難でしょうね.
最後2行に書いてあることがよく理解できないんですが,
こういう「詰めた実装」をやるための細かい工夫が勉強できるスレってないですかね?
最後だけ
hash ^= ((unsigned long int *)str)[l
>>2 ] & tbl[ l & 3]
みたいに処理すれば速いよ って話だよ。
870 :
デフォルトの名無しさん :04/01/30 21:35
エクセルのファイルの中身を取り出したいんだけど、 エクセルのファイルを解説しているホームページとか本とか知らない? 英語のページなら見つけたんだけど、英語苦手で。 スレ違いなら無視してくれ。
871 :
デフォルトの名無しさん :04/01/30 21:36
素万。 誤爆だ。
872 :
デフォルトの名無しさん :04/02/01 18:53
2つの直線が交差する座標を知りたいのですが、 やり方を教えていただけませんか?
中学校の教科書を見直してください
>>872 直線は平面座標上では関数 y = ax + b だわな。
交点は2つの一次関数を方程式の形に置き
換えたときの、それぞれの連立方程式の解。
これは直線に限らない話。
875 :
デフォルトの名無しさん :04/02/01 22:45
>>874 x = a+td = A+TD
y = b+te = B+TE
という 状態からどう導けばよいのかわかりません。
多分何かを誤解してます。 平面上を十字に区切ったものが座標で y = ax+b のxは 水平な座標を、yは垂直な座標を指すのが慣例ですし、 その式だと x と y はどっちも同じ軸上の座標値を表してます。 まず a+td = b+te を変形して t = (a-b)/(e-d) です。 もう一度 x = a+td か y = b+te に、さっき出たt軸の値を 代入するともう片方の軸の座標値が帰ってくる、と。
>>875 普通の解釈では、tによる媒介変数表現で、交点も何も、1本の線しか描けない。
tが横軸、x,yが縦軸あるいは直線の式を表しているとするなら、
>>876 のように解けばよい。
もう一度、問題を見直すことをおすすめする。
>>875 ここ馬鹿ばっかりだな :-)
その方程式を解けばいい。
t d - T D = A - a
t e - T E = B - b
だから行列、
d (-D)
e (-E)
の逆行列
(1/(- Ed + De)) {{-E, D},{-e, d}}
を
A - a
B - b
に掛けると(t, T)がわかるので代入。
879 :
デフォルトの名無しさん :04/02/02 00:39
>>878 すみません、厨なのでまだ行列は習ってないとおもいます。
>>877 現在やりたいことは
A:321.801, 238.908
B:421.388, 229.832
C:266.647, 308.221
D:327.560, 228.913
点A,Bを通過する直線1と
点C,Dを通過する直線2が交差する座標を知りたいのです。
>>879 とてもレベルが低そうなので説明するのがだるい。
親切な数学系の掲示板で聞いたほうがいい。
>>879 まだ学校で習ってないからと言って逃げる奴はプログラマには向かない。
高校の教科書でも買ってきて読むくらいの事しろ。
とりあえず、ベクトルとか行列で調べてみろ。
ネットでもそこそこ解説してるところがあるはず。
緊張するなあ~
>>879 大学生向けの中等数学(高校生が習う
レベルの数学)指導書でも買いなされ。
参考書はジャンル分けがいびつなので
高校生以外の人にとっては検索性が悪い。
べつに行列使う必要ないような 連立方程式解くだけでしょ 漏れがアフォなのかもしれんが、わざわざ媒介変数表示にしてる意味も良くワカラン
885 :
デフォルトの名無しさん :04/02/02 13:44
連立方程式を3回使えば中学生でも解けるけど、 パラメータとして4点の座標点を貰って計算する方法が わからないぽ。誰か教えてぽ。
888 :
デフォルトの名無しさん :04/02/02 15:14
松坂和夫先生の本はそんなにわかりやすいのですか? 細野真宏先生が良いという話も聞いたことがあるのですが、 両方知っていたら感想聞かせてください。 とりあえず、明日本屋に行ってみますが・・・
結局>878氏と同じ式になるのだが x = a+td = A+TD (1) y = b+te = B+TE (2) この式からtをくくり出して2つのt=の式(3),(4)を作る。 (3) = t = (4)なので(3) = (4)という式(5)を作る。 式(5)からTをくくり出せばT=の式(6)が得られる。 これで終わり。 式(6)の分母が0かどうかを最初にチェックするのを忘れずに。 分母の値が0の場合、2直線は平行。 (6)の式で求めたTを使ってx,yを求めればよい。
891 :
デフォルトの名無しさん :04/02/20 07:47
へこんだところを見つけたら、そこで分割してけばいいんじゃないの?
では、まずどうやって凹んでいるのかの判定から
角度で判定できるだろ。
輪ゴムを巻きつけて出来る図形上に無い点がへこんでる点さ
凹凸は二次微分で判定するんじゃないの?
2次元なら、三角形分割で凸な空間に分割できるよね。 3次元以上でも同じ考えで四面体に分割でいけるんじゃないの? 有限要素法方面調べれば、そんなの沢山みつかりそうだけど。 もっとも、三角形や四面体は、それなら「十分」という条件。 細かすぎるかも。計算量考えるともっと少ない分割にしたいわな。
ていうかPVSクリッピングの技術資料あされば出てきそうだが。
そのPVSとやらについて知らないのですが 「割と簡単に分割できることに気がついてがっかり。なんで今まで気がつかなかったんだろう...。 」 といえる程簡単なの?それとも彼は天才?
とにかく凹で分割してけばいいんだから凹見つけたら、 その周辺で一番底を見つけて、 底から一番遠い頂点を結んで、 その線と垂直方向にいちばん近い頂点の3点で分割する みたいな分割を繰り返してけば大丈夫じゃないの?
西暦y年1月1日が所属している週を第0週とした場合、 西暦y年m月d日が所属している週は、いったい第x週でしょうか? ただし、週は日曜日から始まり土曜日で終わるとします たとえば、西暦2004年がうるう年で1月1日が木曜日なら、 西暦2004年1月10日は第1週であり、 西暦2004年3月1日は第9週となることを 指を折って数えました x = f(y,m,d) となるような計算式はどうなりますか?
どこの学校の宿題か教えてくれれば回答しないでもない
>>900 とりあえず Zeller の公式を引っ張ってくれば後は簡単。
903 :
デフォルトの名無しさん :04/05/03 20:04
ところで x→a ってなんて読むの?
904 :
デフォルトの名無しさん :04/05/03 21:34
メルセンヌツイスターを誰か解説してください。
>903 x implies a
907 :
デフォルトの名無しさん :04/05/05 19:11
>905 レス、サンクス。 連休を利用して、数学をやり直してます。 細野とはじめからていねいにシリーズを使ってる。 記号の読み方ってわからないのが多いな。難しい・・・。
>>907 細野なつかしいな。大学受験でおせわになったよ。
pc関係詳しい方! ぜひこの暗号解けないものでしょうか!? 325argf493rdtr521styh075artg625agfa113ller041fsre.2122ffj7343qer7813fda
>>910 #include<MMR.h>
#include<iostream.h>
int main(void){
cout<<MMR("325argf493rdtr521styh075artg625agfa113ller041fsre.2122ffj7343qer7813fda");
return(0);
}
MMRライブラリが必要だから落としてこい。
なんだそのMMRライブラリってのは ちょっとほしくなってきたぞ
きっと出力は「なんだってー!ΩΩΩ」だぞ
916 :
デフォルトの名無しさん :04/07/10 17:11
保守
917 :
デフォルトの名無しさん :04/07/16 22:13
フーリエ変換によってバンドパスフィルタを作りたいのですが、変換した複素数 の扱いかたがわかりません。 高校の数学でアップアップなので、参考書が難しいのです。 たとえば、ある波形をフーリエ変換して、その結果が struct { double *x; double *yi; } cmprx; のような構造体に入ったとして、500Hzから1000Hzのバンドパスフィルタを作る にはどのような計算をすればいいのでしょうか?
918 :
デフォルトの名無しさん :04/07/16 22:35
有向ハミルトン経路のアルゴリズムがわかりません
919 :
デフォルトの名無しさん :04/07/16 22:46
引き算がわかりません
920 :
デフォルトの名無しさん :04/07/16 23:15
921 :
デフォルトの名無しさん :04/07/17 09:01
>>917 フーリエ変換でという事になると、データ全体が収まっているのですよね?
でしたら、フーリエ変換した周波数軸上で、500~1000以外の全部の値をゼロ(複素数なので実も虚も)にしてしまえば良いのです。
もし、データーをブロック処理したいなら、そればFIRフィルタを理解しなければなりません。
922 :
デフォルトの名無しさん :04/07/19 23:35
923
10^(-2.0+0.4*x) =(10^-2.0)*(10^0.4*x) =0.01*{10^(4/10)*x} =0.01*(10^4)*(10^1/10)*(10^x) でいいんですか?
>924 ('A`)イクナイ
>926 セリオ?
素因数分解のアルゴリズム(特に数体ふるい)を比較的分かりやすく 説明しているサイトを教えてください>_<;
素因数分解とエラストテネスでググル以上の情報源がある?
930 :
デフォルトの名無しさん :04/08/09 08:55
「3次の平滑化スプライン」と「3次式に適用する最小2乗法」は、 同じことなのですか? (ごめんageさせて)
違います
はぁ、やっぱそうか。勉強するか...
エラトステネスの呪い
((;゚Д゚)
>930 同じです
ごめん、再びageさせて。
>>931 >>935 んんんー、どっちなの?
同じに思えてしかたがないんです。
どちらも、細分された区間毎に3次式で内挿するものなので、 必要とされる手法・知識はほぼ共通ですねー。 ただ、「平滑化スプライン」の方は、区間の境界をなめらかにする ために、微分係数を調整することが違うといえば違うかな。 微分係数というと難しく聞こえるけど、ただの連立2次式だから 最小二乗法を知ってる人なら楽勝よ。
z=ax**3+bx**2+cx+dy**3+ey**2+fy+gを最小自乗ですねー。 実際には直交のポリラインにする事が多いからf(x),g(y)で使う。 弱点は、上への関数しか扱えないこと(山腹にある洞窟は不可)。
cosθ= a・b / |a| |b| でなす角を求められる訳ですが、 0°<=θ<=360°の範囲で求めたい。 外積使おうとしても同じ結果だし、 どんな方法が有りますか。
atan2(y,x)使えば解決しそう。
高校生の教科書読めよ。
945 :
デフォルトの名無しさん :04/09/03 15:29
950越えると一定日数で落ちてしまうので、新スレ必要なら
>>950 建てて下さい。
そうなの? ふつうにacos(a・b / |a| |b|)かと思ったが
>>941 向きも考慮したい(a と b の位置関係が逆になったら角度も逆にしたい)ってこと?
a, b を複素数とみなして、
a' = a / |a|, b' = b / |b|
c = b' / a'
θ = atan2(Im(c), Re(c))
で、-180<θ≦180 の範囲で角度が出る。
>>946 それだけと、角度向きが分からない。
>>947 c = a / b で十分。余計な乗除算は時間の無駄。
しかも範囲は -2π<θ≦2π になる。ラジアンだから。
>>948 細かいこというなら
a = ax + i ay, b = bx + i by として、
c = a / b * |b| = (ax bx + ay * by) + i(ax * by - ay * bx)
とした方が計算コスト低いけどな。
レスありがとうございました ベクトルを1つずつ0度からの角度をatan2で求めてその差から 求めました。 c = b/a って何を意味するものなんでしょう? 割る事による図形的な意味が分からない。。。 949さんの仰る計算コストという点で自分のしたやり方は無駄が多そうな。というか、絶対そう。
ん、二次元でいいわけね。 >950 複素平面上で考えるといい。 複素数の割り算が極座標形式でどうなるかということ
952 :
デフォルトの名無しさん :04/09/05 10:44
>>950 複素数勉強しる。
一応、複素数の知識無しで説明しとくと、
a = (ax, ay), b = (bx, by)、θ = ∠AOB とすると、
ax * bx + ay * by = |a| |b| cosθ
ax * by - ay * bx = |a| |b| sinθ
θ = atan2(sinθ, cosθ)
= atan2(|a| |b| sinθ, |a| |b| cosθ)
= atan2(ax * by - ay * bx, ax * bx + ay * by)
3Dプログラミングとか見てると 行列とかベクトルってのが出てくるのですが これらは何なのでしょうか?
>954 大体の感じだが、 ベクトルというのは、空間座標の点 っで、ベクトルに行列を掛けた結果は、 その点の移動(ある平面に関する対象点や、回転、平面への射影など)後の 点の座標を表していると考えればいいんじゃないかな?
>>951 >>953 わかりやすい解説ありがとうございました。m(_ _)m
みなさんのやってたやり方って3Dの計算だったんだ。
2D前提で勝手に思い込んでました。
>>952 スレの立て方がわからない~。
役立たずですみません。ぐはっ。
960
961 :
デフォルトの名無しさん :04/09/06 07:36
天寿をまっとうさせる為にあげます。
962
963
964
965 :
デフォルトの名無しさん :04/09/06 19:49
おまえら、いくら算数スレだからって、数字書くだけで満足なのか?
967 :
デフォルトの名無しさん :04/09/06 20:55
埋めるだけのためのレスを40も使うスレが良スレなのかと(ry
>>968 その前後に()とか?@とか√とか+-×÷とか記号が並んでなかったかえ?
970
971 :
デフォルトの名無しさん :04/09/06 23:34
973
スレが可愛想。
厨房率高い板だと、950以降は無意味なAAばかりで埋まってくもんなんだけど。 この板って結構1000レス近くまでまともに利用されることが多いよな。
975
977
978
979
980
>>975 この板も厨房率高いけど、厨房とそうでない香具師の棲み分けが
一応成り立ってるのが大きいかも。
気付けばこのスレ2001年から立ってるね。乙
984。
985。
986。
987。
無意味にカウントアップするスレはここですか?
poooooooooooooooooooo!!