プログラミングの為の数学と算数 vol.2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG語りましょう。TIPS/Q&Aスレです。
0529デフォルトの名無しさん
2006/04/24(月) 11:15:56そうか?
0530デフォルトの名無しさん
2006/04/24(月) 13:10:28クリッピングや論理演算は数学の範疇だと思うんだけどな
0531デフォルトの名無しさん
2006/04/25(火) 12:28:25DirectXはスレ違いだし、クリッピングの話なんてどこにも出てないが?
0532デフォルトの名無しさん
2006/04/25(火) 14:21:17窓の中の昴〜♪
0533ルカ
2006/04/26(水) 16:58:08てかこれどういう意味?符号関数ってなんですか・・・
すいませんここはプログラムとかそういうサイトっぽいけどたぶんここしか頼れる所がないので・・・
大学の数学で出てきたんですけどもしよろしければ誰か教えてください(>_<)
0534デフォルトの名無しさん
2006/04/26(水) 17:02:02まあ、マジレスすると、符号関数でぐぐればいくらでも説明出てくる。
0535デフォルトの名無しさん
2006/04/26(水) 18:13:04固有ベクトルの求め方で質問させていただきたいことがあります。
固有値はハウスホルダー変換と2分法で求めました。
その後、逆反復法を用いようと思っているのですが、
初期ベクトルの決め方と、繰り返し回数がわからず困っています。
どなたか教えていただけないでしょうか?
0536デフォルトの名無しさん
2006/04/26(水) 20:23:480537デフォルトの名無しさん
2006/04/27(木) 01:34:48sgnの読み方はともかく、意味は分かるだろう。符号関数とも書いてるから
探しているものという確認も取れるし。
そしてシグネーチャーでオッケイかを知りたければシグネーチャから思いつく
綴りを全部辞書で調べろ。
0538デフォルトの名無しさん
2006/04/27(木) 02:01:54初期ベクトルは、求めたい固有ベクトルの成分がゼロ、
もしくは、よほどゼロに近くない限りなんでもいいんじゃない?
ランダムなベクトルにするとか。
例え、偶然にも求めたい固有ベクトルの成分がゼロの初期ベクトルを
選んでしまったとしても、なんだかんだで誤差が出てくるので、なんとかなるかも。
収束は遅くなるだろうけど。
繰り返し回数は、求めたい精度に達するまでやればいいと思う。
Aを行列、aを固有値、xを求めた固有ベクトル、として、
(x,Ax)/(x,x)を計算すれば、固有値aの近似値が求まるから、
その精度を、既に求まっている固有値aと比較するとか。
0539535
2006/04/27(木) 11:26:58参考にさせていただきます。
0540デフォルトの名無しさん
2006/05/03(水) 12:47:46行列の成分の
90%が0
8%が1
2%がその他
という行列を解くには
どんなアルゴリズムを使えば高速に解ける?
こういう行列に限り高速にできるとか
そんなアルゴリズムないかなと思ったんだが。
0541デフォルトの名無しさん
2006/05/03(水) 14:35:25非ゼロの位置に特徴が無い場合は、行列をリスト表現して計算するくらいしか。
0542デフォルトの名無しさん
2006/05/03(水) 17:01:03サンクス
非ゼロの位置に規則性はないわ。
あきらめとく。
0543デフォルトの名無しさん
2006/05/03(水) 18:30:420544デフォルトの名無しさん
2006/05/05(金) 01:27:02たけしのコマネチ大学数学科
http://live22x.2ch.net/test/read.cgi/livecx/1146759594/
0545デフォルトの名無しさん
2006/05/07(日) 17:26:16非零が疎な行列だと反復法系のアルゴリズムが案外早いぞ。
0546デフォルトの名無しさん
2006/05/23(火) 08:07:13待望の翻訳!!、なる案内がきたが、定評と待望についてよろしく。
しかし\31,500とはずいぶんだな。
0547デフォルトの名無しさん
2006/06/15(木) 10:42:400548デフォルトの名無しさん
2006/07/16(日) 09:13:350549マイク ◆yrBrqfF1Ew
2006/07/19(水) 14:31:54n個の区間Ii = [ai, bi](i=1,2,...,n)が与えられる時重なりを持つ区間の対を
全て列挙したい。なお[ai, bi]は実数の集合{x∈R | ai <= x <= bi}を表し、
二つの区間IiとIjが重なりを持つとは[ai, bi]∩[aj, bj]が空集合でないことを
意味する。全てのi = 1,2,..,nに対してaiとbiは整数でai<=biを満たし、
また任意のiとj(i != j)に対してai != ajを仮定する。区間のデータは
端の値aiとbiが配列で与えられており2つの数の大小比較や四則演算などの基本操作は
全てO(1)時間で可能とする。
(i) 区間対全てに対してそれぞれ重なりの有無を調べて
該当するものを列挙する方法が要する時間量を述べよ。
(ii) 重なりを持つ区間対の総数をkとする時、そのような区間対を列挙する
O(nlogn+k)時間のアルゴリズムを与えよ。
(iii) 重なりを持つ区間対を列挙するのではなく、その総数kのみを出力する
O(nlogn)時間のアルゴリズムを与えよ。
0550デフォルトの名無しさん
2006/07/19(水) 15:07:180551デフォルトの名無しさん
2006/07/19(水) 15:23:21>549に代わってお願いします。
ぜひC++で(ry
0552デフォルトの名無しさん
2006/07/19(水) 15:23:34そういう態度だから何処へ行っても嫌われる。
0553デフォルトの名無しさん
2006/07/19(水) 21:59:50死に晒せヴォケ
0554デフォルトの名無しさん
2006/07/20(木) 07:11:30>>551
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2409.cpp
方針は以下:
(1) は自明.
(2) はソートして左から数える.ソートしたおかげで単調性が得られ,
一度交わらなくなったらそれより先を調べる必要がなくなる.
(3) は (2) でどこまで調べないといけないかを二分探索を行う.
0555デフォルトの名無しさん
2006/07/20(木) 08:09:59http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28099
(i) 区間対の個数はO(nn)、重なりの有無の判定はO(1)だから、全体でO(nn)。
(ii) >>554に同じ。
(iii) 与えられた区間の始点と終点を列挙し、ソートし、各点に何個の始点・終点が重なっているか調べる。
区間のネストの数を把握しながらこの列を走査して重なりの総数を得る。
実際のコードでは始点・終点の個数の計算と最後の操作を一つのループで行っている。
0556マイク ◆yrBrqfF1Ew
2006/07/20(木) 19:23:08・・・
2chネラにこんなことを言うのもあれだが
お前らすげーな。
どこの金子勇的風貌の京大院生だ?
0557デフォルトの名無しさん
2006/07/20(木) 22:30:46今からでも勉強してみたらどうでい。
0558デフォルトの名無しさん
2006/07/30(日) 08:15:10三次元上の多面体の体積を求めるには何か方法はありませんか?
0559デフォルトの名無しさん
2006/07/30(日) 10:47:514面体OABCの体積は
1/6( ax by cz + ay bz cx + az bx cy - az by cx - ax bz cy - ay bx cz )
0560デフォルトの名無しさん
2006/07/30(日) 10:49:240561デフォルトの名無しさん
2006/07/30(日) 11:00:040562デフォルトの名無しさん
2006/07/30(日) 12:06:07外積
0563デフォルトの名無しさん
2006/07/30(日) 16:12:500564デフォルトの名無しさん
2006/07/30(日) 16:14:360565デフォルトの名無しさん
2006/07/30(日) 18:27:31体積を求めたい多面体が凸でない場合は4面体の和に分割するところが面倒かもよ
凸多面体でも分け方によって誤差が変わってくるからそんなに簡単ではないかもよ
0566デフォルトの名無しさん
2006/08/06(日) 16:49:430567デフォルトの名無しさん
2006/08/06(日) 18:06:170568デフォルトの名無しさん
2006/08/06(日) 20:54:07対象が凸多面体で原点を多面体の内部か表面にとればそれは正しい
0569デフォルトの名無しさん
2006/08/06(日) 21:45:34符号付き、というのはたぶん
原点から見て裏面が見えてるときはマイナスの体積、ということだろうから
そうすると原点に関して星状であるという条件はいらなくなるよ
Aが星状というのは原点とAの任意の点とを結ぶ線分がAに含まれることね
0570デフォルトの名無しさん
2006/08/06(日) 23:55:550571デフォルトの名無しさん
2006/08/07(月) 12:48:29便利なライブラリ or 公式とかある?
もしもなかったら、
衝突判定がしやすい曲面の表現方法教えてもらえませんか。
0572デフォルトの名無しさん
2006/08/07(月) 21:29:190573デフォルトの名無しさん
2006/08/07(月) 21:41:17形状を簡単に変えることができるものであればいいんですが、
球も表現したかったのでNURBSを考えていました。
0574デフォルトの名無しさん
2006/08/08(火) 11:21:05NURBS曲面かどうか調べてないが、Newtonとか言うGAME向けの物理演算ライブラリがある
0575デフォルトの名無しさん
2006/10/01(日) 18:50:02当選口指数 {数.数} = 当選口数 ÷ 販売口数 × 100万倍
http://sea.advenbbs.net/bbs/yybbs.cgi?mode=res&no=1593&id=loto66
0576デフォルトの名無しさん
2006/10/04(水) 20:30:010577デフォルトの名無しさん
2006/10/12(木) 11:02:110578デフォルトの名無しさん
2006/10/12(木) 11:02:530579デフォルトの名無しさん
2006/11/03(金) 10:21:15マウス(2次元)座標をゲーム画面(3次元)の座標に
変換したいんだけれど、
やり方がわからないです。
[やりたいこと]
大航海時代Onlineのように、
「キャタクターの行先(目的地)」を「地面をマウスクリックする」ことにより
指定し、その後、キャラクターが動き出す。
ということをやりたいと考えています。
0580デフォルトの名無しさん
2006/11/03(金) 10:29:29DirectXを使っているならDirectX隔離スレへ。
その他3D表示ライブラリを使っているならそれらのスレへ。
そうでないなら自分で勝手に計算汁。
0582デフォルトの名無しさん
2006/11/23(木) 14:10:24ちなみに
・グレゴリウスの定義
・西暦1年1月1日は月曜日
・1年365日だが、閏年は366日
・4または400で割り切れる年は閏年
・100で割り切れるのは閏年ではない
もしわかった方いましたらお願いします
0583デフォルトの名無しさん
2006/11/23(木) 14:15:04C++の擬似コードだと、こんな感じかなぁ・・・
main(){Youbi 曜日; カレンダーを見る(新聞の日付, &曜日);
if (時計の時間<新聞配達時間) 曜日.進める;
return 曜日;}
0584デフォルトの名無しさん
2006/11/23(木) 15:01:22普通はAPIを使う。
こんな所で質問してる奴が組んだ物は怖くて信用おけないから。
関係無いけど、ANSI C準拠のtime()関数系の1970/01/01 00:00:00からの通算秒で
有効桁31bitの場合は、全部閏年で換算しておk。
0585デフォルトの名無しさん
2006/11/23(木) 15:06:49{
if (month < 3) {
year--; month += 12;
}
return (year + year / 4 - year / 100 + year / 400 + (13 * month + 8) / 5 + day) % 7;
}
0586デフォルトの名無しさん
2006/12/10(日) 12:20:07にあるprime-test()で多倍長整数の場合、最初に判定を間違える数って何?
0587デフォルトの名無しさん
2006/12/10(日) 13:01:52マジレスすると西暦1年1月1日にはまだグレゴリオ暦は発明されていなかった罠。
0588デフォルトの名無しさん
2006/12/10(日) 15:35:33遡及的に定義できる。
0589デフォルトの名無しさん
2006/12/10(日) 17:39:40ミラーラビンテストでぐぐったら強擬素数ってのが出てきた。
あとは頑張れ。
0590デフォルトの名無しさん
2006/12/10(日) 20:48:11>>589 強擬素数はフェルマーテスト
0591デフォルトの名無しさん
2006/12/11(月) 02:24:03適当いったらだめなんじゃね。
0592デフォルトの名無しさん
2006/12/17(日) 00:24:50他に適当なスレが見つからなくて。
私は会社の事務員なのですが、
手間のかかる手作業がありまして、パソコンにやらせたいのです。
職場の人員のスキル的に見て、自分でやるしかない状況です。
エクセルのVBAで何度かプログラムを組んだことのあるレベルです。
以下が問題の概要です。
1から100までの整数の並びがある。
そのうちランダムに20個程度の数が欠番となっている。
この状態から、残った数を並べ替え、
隣り合う数同士の差の絶対値が全体でなるべく等しくなるように、
つまり等間隔に並ぶようにしたい。
ここ一ヶ月くらい悩んでみましたが、アイディアが浮かびません。
何か既存のアルゴリズムで、応用できそうなものを紹介してもらえませんか。
0593デフォルトの名無しさん
2006/12/17(日) 00:31:57判りにくいな。例えば、1, 2, 90, 91があったら1, 90, 2, 91に並べ替えるってことか?
#前者は隣同士の差が1, 88, 1で、後者は89, -88, 89だから後者の方が差の絶対値はほぼ均等になる。
0594デフォルトの名無しさん
2006/12/17(日) 00:39:09総当りで調べるとかかなぁ。
「隣同士の差」の分散辺りを評価基準にして、全部の組み合わせ試して一番分散の小さいのを選ぶ。
0595592
2006/12/17(日) 00:52:03わかりにくくてすみません。
実例を出すべきでした。
まさに、その後者のように並べたいのです。
今は人間がエクセル上で手作業であれこれと
数値を入れ替えし、納得いく結果になるまで
3日はかかってしまいます。
>>594
分散、とは統計学の用語ですか。
調べてみます。
0596デフォルトの名無しさん
2006/12/17(日) 06:08:03単純に、小さい値と大きい値で2つに分けて、ソート後交互に配置じゃだめなん?
0597デフォルトの名無しさん
2006/12/17(日) 08:18:01>596でよさそうだけど。
0598デフォルトの名無しさん
2006/12/17(日) 12:29:101, 22, 23, 24, 25, 26, ..., 99, 100
というデータに対して>>596をすると
1, 61, 22, 62, 23, 63, 24, 64, ..., 59, 99, 60, 100
となって、「隣同士の差」のレンジは20にもなってしまう
しかしたとえば
1, 22, 42, 23, 43, 24, 44, 25, 45, ..., 39, 59, 40, 60, 41, 61,
81, 100, 80, 99, 79, 98, 78, 97, ..., 64, 84, 63, 83, 62, 82
というほうほうならレンジは2
0599デフォルトの名無しさん
2006/12/17(日) 16:18:54それならソートしただけのデータでもインジャネ?
相対的な距離に関する最適解は総当りじゃないと求まらないんじゃない?
しかも「分散の小さい物」という条件だから足切りも出来ない。
0600デフォルトの名無しさん
2006/12/17(日) 22:37:120601デフォルトの名無しさん
2006/12/21(木) 21:47:49整数乗算についてなんですが、2048ビット程度だと、fftかまして乗算しても恩恵はない。
と聞きました。実際のところはどうなんでしょうか?どなたか検証サイトなどご存知ではありませんか?
0602デフォルトの名無しさん
2006/12/22(金) 01:05:13乗算が加算よりどれだけ遅いかも評価に入れなきゃいけないだろうし。
0603デフォルトの名無しさん
2006/12/22(金) 01:45:310604デフォルトの名無しさん
2006/12/22(金) 12:31:04RSA の乗算+剰余演算の場合、FFT による方法じゃなくて、
Montgomery multiplication っていう高速化手法があるよ。
検証したことはないけど、2048 ビット程度では FFT の効果はない
あるいは逆効果ってのはそうだと思う。
せめて1万ワードくらいの長さはないと。
0605デフォルトの名無しさん
2006/12/22(金) 12:37:35上位・下位半分ずつ、再帰的に計算することで
乗算回数減らす方法もある。
下位桁の乗算結果使って、上位桁の乗算をサボる。
昔、RSA のプログラムの最適化の仕事したことあるけど、
「単純に畳み込みで乗算 & 引き放し法的な剰余」を
「再帰乗算 & Montgomery 乗算法」に変えたら
鍵長256bitでも動作速度を250倍以上速くできた。
0606デフォルトの名無しさん
2006/12/22(金) 12:41:24速度250倍達成は、あと、
バイト単位で多倍長整数演算してたのを、
1ワード32ビット単位に変えたのも含めてだわ。
0607デフォルトの名無しさん
2006/12/27(水) 13:26:09CADのプログラムですが、CADの掲示板で質問してるけど、3次元の幾何計算の話なので、あまり回答が返ってきません。
誰か助けてぇえええ!!
http://www.mura.sh/bbs/wwwbbs.cgi?print+200612/06120169.txt
0608デフォルトの名無しさん
2006/12/27(水) 13:52:380609デフォルトの名無しさん
2006/12/27(水) 15:42:41そうはいってもあそこはCADユーザーの掲示板で、
プログラム関係はほとんどレスがつかないんですよ。(´・ω・`)
餅は餅屋ということで、こっちにも質問してみる。
0610デフォルトの名無しさん
2006/12/27(水) 16:54:00マルチポストうぜぇよ。
見たら解答ちゃんと出てんじゃねぇか。
それを理解出来ないお前の頭までは救えねぇよヴォケ。
0611デフォルトの名無しさん
2006/12/27(水) 16:58:17横のソリッドがX軸方向に伸びてるならいい。
しかしそれ以外の方向ならお手上げなんだけど。
0612デフォルトの名無しさん
2006/12/27(水) 22:31:43回転してX軸に来るようにしたらいいんじゃね
0613デフォルトの名無しさん
2007/01/06(土) 04:41:040614デフォルトの名無しさん
2007/01/06(土) 18:10:16例えば天気図の気圧の図があったとして、
高気圧が何個あって、どの座標に中心があるかを調べたい
というような問題です。
ピークがない場合やたくさんある場合があります。
こういう計算はどういうジャンルの学問になるんでしょうか。
0615デフォルトの名無しさん
2007/01/06(土) 21:05:180616デフォルトの名無しさん
2007/01/06(土) 22:14:53いいヒントをありがとうございました。
「山登り法」というキーワードでいろいろ探せそうです。
0617デフォルトの名無しさん
2007/01/07(日) 22:14:230618デフォルトの名無しさん
2007/01/07(日) 23:02:490619デフォルトの名無しさん
2007/01/09(火) 11:29:24∂z
----
∂x
∂z
----
∂y
0620デフォルトの名無しさん
2007/01/09(火) 11:36:150621デフォルトの名無しさん
2007/01/19(金) 14:01:03例えば1MB固定のデータファイルが n個あります。
これに任意の m個のエラー訂正用のファイルを作ります(エラー訂正というより、補完をしたい)。
たとえば、n=8、m=2 で、全部で 10個のファイルを作ります。
この 10個のファイルのうち、どれか n個だけ揃えば元の n個のファイルを復元できる、
みたいなことをやりたいのです。
ここで、n や m の取り方に、なにか制限はあったりするでしょうか?
例えば n は偶数じゃないといけないとか、m は 2のn乗じゃないといけないとか、
そういうなんらかの制限です。
できれば n も m も、その都度自由に設定したいのです。
あと、元データを復元するために必要なファイルの数は、n個だけで充分なのでしょうか。
それとも、n個よりも少し多く必要だったりするでしょうか。
今こんなことをやりたいがためにリードソロモン符号についての勉強を始めたのですが、
今結論だけを端的に知りたいです。
あるいは、他の符号化についての候補などあったら知りたいです。
よろしくです。
0622デフォルトの名無しさん
2007/01/19(金) 15:31:54やっぱりプログラム、コンピュータの基盤となるのは数学だから
数学的な知識があるとないじゃ、雲泥の差だという事を、つくづく思い知らされたよ。
とりあえず、ちょっとでもスキルアップ出来る様に、勉強し直そうと思うよ…
0623デフォルトの名無しさん
2007/01/19(金) 16:56:360624デフォルトの名無しさん
2007/01/19(金) 17:04:45最近は分数が出来ない文系の大学生も多いらしいからねぇ。
書く言うおれも、中学レベルの数学が既にあやしい…orz
0625デフォルトの名無しさん
2007/01/19(金) 17:49:25にほんごもあやしいようだね
0626デフォルトの名無しさん
2007/01/19(金) 19:49:50Luigi Rizzo氏のHPにReed-Solomon符号を使ったデータ復元プログラムのソースが置いてあったような...
確か、制限はn+m<2^8 またはn+m<2^16。
復元もn+m個中n個を受信すれば大丈夫だったはず。検索して調べてみてください。
0628621
2007/01/20(土) 12:46:41情報ありがとうございます。
検索の結果それっぽいページにたどり着いたものの、いかんせん英語が不得手でして・・・
実装例は自分が行き詰ったときに見ることにして、とりあえずやりたいことはできるのだろうということはわかりました。
n+m<2^8 とか n+m<2^16 とかの制限は、多項式の係数を何ビットで計算するかによるのでしょうね。
8bit で計算すればエンディアンの問題が無くて都合が良さそうですが、できるだけ多ビットで計算した方が計算回数が
少なくて高速になりそうですね。
# 実は 8bit しか念頭に置いていませんでしたが、実験として 32bit くらいでやってみようかと思いました
■ このスレッドは過去ログ倉庫に格納されています