プログラミングの為の数学と算数 vol.3

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラムに必要な数学、算数に関する話題について語りましょう。
TIPS/Q&Aスレです。
宿題は自分で解き終わってから持ってきましょう。

前:プログラミングの為の数学と算数 vol.2
http://pc11.2ch.net/test/read.cgi/tech/1094368921/
2デフォルトの名無しさん:2007/12/08(土) 06:31:51
それと社会と美術も頼む
3デフォルトの名無しさん:2007/12/08(土) 07:45:13
>>1 おつかれ〜

過去ログ
プログラミングの為の数学と算数
http://pc.2ch.net/tech/kako/997/997150743.html

関連過去ログ

フーリエ変換について教えてください
http://piza2.2ch.net/tech/kako/996/996929748.html

交差判定アルゴリズム
http://piza2.2ch.net/tech/kako/996/996157997.html

最速の素数判定アルゴリズム
http://pc.2ch.net/tech/kako/993/993457354.html
4デフォルトの名無しさん:2007/12/12(水) 01:25:49
3次元ベクトルの外積についての質問なんですが、
a×bの外積は

a×b = (a.y * b.z - a.z * b.y a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x)

で求められると思うのですが、始めに教えてもらったときに

dot = DotProduct(a, b)とするとき、
a×b = (a.x - dot * b.x, a.y - dot * b.y, a.z - dot * b.z)

と教えてもらったのですが、これでも外積を求められるのでしょうか?
5デフォルトの名無しさん:2007/12/12(水) 01:49:03
a×b = a + (a・b) b

を主張してると思うけど、
この式の左辺は a と b の外積だから
当然 a と b の張る平面内にない

いっぽう右辺は a と b の一次結合

何かのまちがいかと
6デフォルトの名無しさん:2007/12/12(水) 01:50:34
>4
試算すりゃ一発でわかんだろ?
7デフォルトの名無しさん:2007/12/12(水) 02:03:08
>>5
やっぱり違いますよね。「これでもいける」と力説されてちょっと不安だったので安心しました。

>>6
一応計算はしてみたのですが、最近ベクトルについて勉強し始めたばかりで、
どっちがあっているかわからなかったもので…
もっと勉強しなきゃ orz



ありがとうございました。
8デフォルトの名無しさん:2007/12/12(水) 12:38:54
>>7
力説した奴は誰?
9デフォルトの名無しさん:2007/12/12(水) 22:55:24
3次元空間において各離散点(x,y,z)がスカラーを持つとき、ある任意平面で切った断面図を計算する
一般的な方法はあるんでしょうか?どんな探索・補間をすればいいのかいまいち分かりません。
10デフォルトの名無しさん:2007/12/12(水) 23:08:40
なんつうか、思ったんだが、スレタイとしては、「数学のためのプログラミング」ってのが
いいんじゃない??
11デフォルトの名無しさん:2007/12/12(水) 23:30:01
>>10
それはそれで面白いと思うけど、でも別のスレだな
12デフォルトの名無しさん:2007/12/12(水) 23:31:49
>>9
任意平面への投影図ではなくて?
点たちはばらばらに存在しているの?
断面にはまれにしか点が乗らなくね?
139:2007/12/13(木) 13:15:58
>>12
対象は、4面体や6面体が混ざった有限要素で、離散点は綺麗な格子状ではなくバラバラです。
↓のような感じで断面図を出したいのですが、どうやるのが一般的なんでしょうか?
ttp://infoshako.sk.tsukuba.ac.jp/ShakoDoc/MATLAB5/jhelp/techdoc/ref/slice.html

おそらく私が知らないだけで、すごいコモンな手法が既にあると思うのですが・・・
14デフォルトの名無しさん:2007/12/13(木) 16:08:26
>>13
Matlab は使ったことないんだけど、それは、連続なスカラー場の断面図?

離散点で値を持ってるなら、補間とかしないと無理かな。
4面体だと、バイリニア補間とかバイキュービック補間でいいと思うけど。
6面体だとどうしたもんだろう。ニアレストネイバーでいけそうな気もするか。
15デフォルトの名無しさん:2007/12/13(木) 21:42:39
>>13
そこにある例題のように、空間内のスカラー値関数 v = f(x, y, z) に対して
特定の断面に沿った v の値の分布が見たいということ?

そしてその関数 f は具体的な式などでは与えられていなくて、サンプルとして
いくつかの点における値だけがわかっているということか

補間する前に、空間全体に回転行列をかまして、断面が xy 平面になる
ようにすると処理が楽になったり?
16デフォルトの名無しさん:2007/12/13(木) 22:38:06
>>15
空間の方を回転するのは無駄だと思う。
補完って、逆から座標変換するような感じでするのが普通。

表示される xy 平面のこの点は元の空間ではこの点にあるはずだから・・・
というように。
179:2007/12/13(木) 22:47:15
>>14,15
>Matlab は使ったことないんだけど、それは、連続なスカラー場の断面図?
そうだと思います。私も使ったことはなくて、ググってたら見つけたページです・・

すいません言い忘れましたが、求めたいのは断面図だけでなく、
断面積で重み付けした値の和(つまり全断面の積分値)もでした。

要素内のある1点の値を補間で求めるのは教科書などにあり、4面体内の点(x,y,z)の場合
x=x1+ξ(x2-x1)+η(x3-x1)+ζ(x4-x1),y=・・・,z=・・・から要素内座標ξ,η,ζを求めて
p=p1+ξ(p2-p1)+η(p3-p1)+ζ(p4-p1)で補間値pが求まります。ですが、
その点の位置(x,y,z)をそもそもどうやって決めるんでしょうか?
もしかして要素との断面の重心?
18デフォルトの名無しさん:2007/12/13(木) 22:55:57
例えばよ、基底ベクトル a と b で張られる平面
P = x a + y b
上の断面図を求めたければ、
P 上の点 (1, 1) に相当する三次元空間上の点は a + b だから、
この点の値を求めればいい。

この点に一番近い格子点4点を探して、
その4点に対してその補完式を使う。
19デフォルトの名無しさん:2007/12/13(木) 22:58:22
あっ、言葉足らずかも。

> P 上の点 (1, 1) に相当する三次元空間上の点は a + b だから
この作業を (x, y) に関して繰り返すのね。
一定範囲決めておいて。

積分したいんなら、↑の (x, y) の探索を十分広い範囲でやって、
求めたい有限要素の外にある場合は値を 0 にでもしておいて、
総和を求めればいいんじゃないかと。
あくまで、離散近似になるけど。
20デフォルトの名無しさん:2007/12/14(金) 02:28:32
ちょっと気になって前スレ950の
> |(PA×PB)・PC| / |AC・BC|
を試してみたんだけど、
a(0,0,0) b(1,0,0) c(0,1,0) p(1,1,0)
で計算したら距離0になったんだけど、俺の計算が間違ってる?
21デフォルトの名無しさん:2007/12/14(金) 02:44:32
>>20
その式、分母が間違ってるね。
四面体の体積 ÷ 底面積 = 四面体の高さ = 点から面への距離
と計算したいんだと思うんだけど、
その式だと分母が底面積にならない。

底面積は 1/2 |AC| |BC| cos∠ACB だ。
AC = (a, b), BC = (c, d) とすると、(ad - bc) / 2

あと、分子も、それだと四面体じゃなくて
PA, PB, PC を辺とする並行6面体の体積になるから、
1/6 掛けないとだめかも。
22デフォルトの名無しさん:2007/12/14(金) 02:48:16
っていうか、平面までの距離って、
(CA × CB)・CP / |CA| |CB| な気がする。

(CA × CB) / |CA| |CB| が平面の単位法線。
CP に単位法線掛けると、平面から P までの距離。
23デフォルトの名無しさん:2007/12/14(金) 04:01:00
>>21-22
ああ、そういうことか。
どのみち、体積から求めてるなら三角形からの距離ではないし、
僊BC平面上に点Pがあるときは求まらないか。
世の中には都合のいい公式があるもんだなぁ、とちょっと感心したんだけどそんな甘くはないかw
24デフォルトの名無しさん:2007/12/14(金) 12:08:11
ごめん、21 にも 22 にもちょっとずつミスが。
22 の分母は |CA×CB|。
25デフォルトの名無しさん:2007/12/14(金) 12:09:25
Pが平面状にあるときはちゃんと0になるはず。
26デフォルトの名無しさん:2007/12/14(金) 12:30:54
2726:2007/12/14(金) 12:37:41
あ、すまそ、ポリゴンへの距離と勘違いした・・・
28デフォルトの名無しさん:2007/12/20(木) 05:03:48
      ttp://blog.livedoor.jp/dankogai/archives/50962361.html
の冒頭のグラフにあるような、実験結果のプロットからy=j+kxのj,kや、y=j+kln(x)のj,kを
求めるのって、どういうアルゴリズムでやるのでしょうか?最小二乗法でしょうか?

おねがいします。
29デフォルトの名無しさん:2007/12/20(木) 14:26:09
>>28
単にグラフ化したいなら普通に補間。

その式で言う j や k などの定数を求めたいなら最小二乗法。
ただ、もちろん、その式が j + k x の形になるとか j + k ln(x) の形になる
って当たりがついてるのが前提。

当たりつけるのは、グラフの形眺めて見て主観で決めるか、
いくつかのパターン試して二乗誤差が一番小さい奴を選ぶ。
30デフォルトの名無しさん:2007/12/20(木) 21:02:55
>>29
ありがとうございます。

「補間」というのは、単にプロットした点を直線で結ぶということでしょうか?
31デフォルトの名無しさん:2007/12/20(木) 21:15:39
線形補完ならそうだし、
非線形の補完も、2次補完とか、3次とか色々ある。
32デフォルトの名無しさん:2007/12/20(木) 22:30:43
まあ、>>28 みたいなのは補間ではないけどね。
フィッティングって言うかな。
33デフォルトの名無しさん:2008/01/10(木) 09:22:17
ある程度実践的な例で、動的計画法を勉強してみたいんですが、よい例題が載ってる
簡単な入門書やサイトってありませんか?
34デフォルトの名無しさん:2008/01/10(木) 09:51:26
>>33
実践的で簡単つーのはなかなか難しそうだが、
TopCoderやPKU JudgeOnlineの問題を解いてみてはどうだろう?
動的計画法を扱う問題を見つけるのが少し面倒だが、
TopCoderのSRMなら、Problem Set & Analysisにアルゴリズム名が載ってるから探しやすい。
(最新のはhttp://www.topcoder.com/tc?module=Static&d1=match_editorials&d2=srm386
35デフォルトの名無しさん:2008/01/14(月) 21:50:08
(A&&B)||(C&&D)は
(A||C)&&(A||D)&&(B||C)&&(B&&D)に
変形できると聞いたのですが、やりかたがよくわかりません。公式などあったら教えてください。
36デフォルトの名無しさん:2008/01/14(月) 21:59:01
最後は B||D だよね?

単なる分配法則だが、
ややこしくなるだけなのでやる必要性はない。
37デフォルトの名無しさん:2008/01/14(月) 21:59:01
分配法則
(a && b) || c = (a || c) && (b || c)
38デフォルトの名無しさん:2008/01/14(月) 22:00:23
>>36
ごめんなさい。最後は||です。
>>36-37
ありがとうございました。
39デフォルトの名無しさん:2008/01/14(月) 22:02:52
(A||(C&&D))&&(B||(C&&D))
=
((A||C)&&(A||D))&&((B||C)&&(B||D))
=
(A||C)&&(A||D)&&(B||C)&&(B||D)
40デフォルトの名無しさん:2008/01/14(月) 23:50:56
C系言語だと、||と&&は、
副作用によって結果が変わるかもしれないので注意すべし。
41デフォルトの名無しさん:2008/01/15(火) 00:04:35
適当なスレが無かったんで、ここでオナガイシマス
Excelでグラフを作成すると、Y軸の補助目盛りが上手い具合に、自動的に
振り分けられるますよね、そのアルゴリズムってどうなってるんだろう?
今、VCでグラフを描画するソフトを書いてるんだけど、そこでちょっと
悩んでるところです、Excelにこだわらず、補助目盛りの振り方の、いいアイデアを
知っていたら教えてホスイ
条件として
負数の値はありません
最大値、最小値は同じ桁の場合もあれば、そうでない場合もあります
グラフのY軸の描画エリアは、グラフの下限値は0ではなく
要素の中の最小値(付近の値)として、最大値は要素の最大値(付近)の値です
この様な条件で、理想的な数式を教えてください
42デフォルトの名無しさん:2008/01/15(火) 00:12:54
なんかそれは理論があったはず
階級幅の適切な取り方とか
43デフォルトの名無しさん:2008/01/15(火) 00:31:35
>>42thxです
階級幅 適切 グラフ
でググッたら
地理学調査研究法(第3年度)2004年度
http://www2.ipcku.kansai-u.ac.jp/~moto/KyozaiContents/43.htm
ここに、ヒストグラムの書き方で(目的は折れ線グラフだけど数式は同じなんでしょうね・・・多分?)
階級数=1+log(n)/log2 階級幅=(最大値 - 最小値)/階級数で得ることができる。
こういうのがありましたが、これのことでしょうか?
44デフォルトの名無しさん:2008/01/15(火) 00:38:07
あーうん多分俺が見たのもそんな感じだったと思う
45デフォルトの名無しさん:2008/01/15(火) 00:43:43
>>44
比較的簡単そうなので、実装できそうです
ありがとう
46デフォルトの名無しさん:2008/01/15(火) 01:27:46
大きさNの配列をヒープ構造に変換する処理の計算時間がオーダーNというのがよくわかりません。
難しい数式なしで、なるべく直観的な説明をしているサイトや本は無いでしょうか?

変換処理はインプレイスでなくてもかまいません。よろしくおねがいします。
47デフォルトの名無しさん:2008/01/15(火) 01:41:44
48デフォルトの名無しさん:2008/01/18(金) 01:04:37
最小二乗法の直線Aでうまく近似できる、n個の点の集合n'があるとします。
最小二乗法の直線Bでうまく近似できる、m個の点の集合m'があるとします。
もしn'とm'が混ざってしまっているとき、直線Aと直線Bを求める方法としては
どのようなものがあるのでしょうか。
また、直線ではなく多項式近似などの場合もできればヒントなどをお願いします。

具体的には、×や§みたいな形に点の分布している場合を想像して
悩みまくり・・・どうすればー。
49デフォルトの名無しさん:2008/01/18(金) 02:42:00
最初てきとうに二つのグループに分けておいて回帰直線求める
1個の点を選んで他のグループに移した方が適合度上がるなら移す
それをずっとやる
50デフォルトの名無しさん:2008/01/18(金) 03:41:02
>>48
それ基本的に不可能だよ
クラスタリングすれば綺麗にわかれるとか特殊な場合に求められる
51デフォルトの名無しさん:2008/01/18(金) 04:14:27
>>49-50
ありがとうございます。やってみます。
52デフォルトの名無しさん:2008/01/18(金) 05:09:30
3組以上の可能性は考えなくて良いのだろうか?
53デフォルトの名無しさん:2008/01/18(金) 08:38:43
点と近傍点k個を繋いだ線分の傾きと切片を新たなxyとして係数空間にマッピングして
山をみるとかかな。ハフ変換の亜種になるのだろうか。
54デフォルトの名無しさん:2008/01/18(金) 09:29:22
2本の直線を表現する式があれば、それに対して最小2乗法を適用すればいけるんじゃないかな?

a*|x+d|+b*y+c=0
とかさ。
55デフォルトの名無しさん:2008/01/18(金) 10:42:44
何本混じっているか不明だし不可能だろう
2点ずつ1000本とかもできる
56デフォルトの名無しさん:2008/01/18(金) 11:55:17
まあ課題は2本の直線だから
媒介変数表示で 0〜∞が直線A 負数が直線Bになるような表現が出来れば
いけそうに思えてきた
57デフォルトの名無しさん:2008/01/18(金) 12:54:01
>>53が筋が良さげに見えるな
58デフォルトの名無しさん:2008/01/18(金) 18:14:11
(ax + by)^2 = (cx + dy)^2
みたいな式が、交差する2直線になるんで、
これをベースに最小二乗法つか使ってみたら?
59デフォルトの名無しさん:2008/01/18(金) 18:15:37
ああ、2直線の交点が原点でない場合、
(ax + by)^2 = (cx + dy + e)^2 とかね。
60デフォルトの名無しさん:2008/01/18(金) 18:17:50
一般の2次式を取り扱ったほうが簡明
61デフォルトの名無しさん:2008/01/18(金) 18:28:38
>>59
その式から誤差はどう計算するの?
62デフォルトの名無しさん:2008/01/18(金) 18:31:50
>>60
課題らしいから、2直線以外の結果が得られるのはまずいのでは?

>>61
a, b, c, ... 等で微分。

最小二乗法は、式さえ分かってれば直線に限らずどんな関数でもフィッティングできる。
63デフォルトの名無しさん:2008/01/18(金) 18:33:57
ああ、そうか x1,y1 って点があったら、その式のxに x1を代入して
yを求めて、複数の答えが出るから、それぞれ (y-y1)^2 出して小さい方を採用すればいいのか

でも、小さい方を採用するって事は非線形だから、解を出すのに
普通の直線みたいに楽に出せないな。
64デフォルトの名無しさん:2008/01/18(金) 18:44:24
うーん、そうか・・・
任意の関数をフィッティングできるっていっても、
陽関数形(y = f(x) みたいな形)になってないと、単純な方法では出来ないのか。

でも、
f(x, y) = (ax + by)^2 - (cx + dy + e)^2
として、求めたい直線が f(x, y) = 0 だから、

Σ_{i = 1}^N f(x_i, y_i)^2
を最小化するものとして、
これをパラメータ a, b, c, ... で微分したのが 0 って条件で式立たない?
65デフォルトの名無しさん:2008/01/18(金) 18:46:48
yについて解いたおけばいいだろ
66デフォルトの名無しさん:2008/01/18(金) 18:48:55
あと、この式だと、パラメータ a 〜 e のうち、1つは冗長かな。
f(x, y) = 0 が必要な条件式なんで、全体を a^2 で割って、

f(x, y) = (x + b'y)^2 - (c'x + d'y + e')^2

としていいはずなんで。
67デフォルトの名無しさん:2008/01/18(金) 18:50:03
>>65
それは無理。
y = ±(ax + b)
みたいな式が出てくるはず。
“2直線”みたいな変な関数を、
1価の陽関数ではあらわせない。
68デフォルトの名無しさん:2008/01/18(金) 18:52:01
yについて解けば2解出る それぞれについて調べる
69デフォルトの名無しさん:2008/01/18(金) 19:05:36
>>68
それだと最小二乗法的な結果得られないって。
70デフォルトの名無しさん:2008/01/18(金) 19:22:53
>>68 それについて調べるといっても、サンプル点1点毎に、
どっちが小さいかって関数が必要になるから、結局は数式で解けなくて
数値解として、微分して0の箇所を探す事になる。

つまり、2直線の方程式のまま、誤差の小さい方を選択するのと全く同じ事。
でも、微分ゼロ点は複数あるのが確実だから、ランダムにシャッフルしては前回より小さくなってないか
調べる事になるわけで、コレがホントに最小かどうかってのは難しいだろな。
71デフォルトの名無しさん:2008/01/18(金) 19:24:37
2式を f(x) g(x) としたときに、距離関数 d(y) を y = f(x) および g(x) において極小値を持つような
4次関数として定義できれば、可能なのかな。

自分には数学的に解く自信がないけど。
7271:2008/01/18(金) 19:56:38
h(x) = (f(x) + g(x))/2 として、

d_n = ∫[0, y_n] (y-f(x_n))(y-g(x_n))(y-h(x_n)) dy
D = Σ d_n
として、Dを最小化する f(x) g(x) を求めればいい気がする。

ただ、最終的に出てくる連立方程式はかなり複雑になりそう。
h(x) の定義も妥当かちょっと迷う。
73デフォルトの名無しさん:2008/01/18(金) 20:44:31
>>71
そんな凝るなら、>>64でよくね?
7471:2008/01/18(金) 22:48:33
>>73
自分には>>64の式が理解できない。
というか、バグってる気がしてならない。
75デフォルトの名無しさん:2008/01/20(日) 02:19:44
Longest Increasing Subsequence問題をDPで解くってのがさっぱりわかんない。
だれか解説して。
76デフォルトの名無しさん:2008/01/20(日) 12:13:00
diff も Longest Increasing Subsequence問題というやつなのかな。

以前、予備知識もなしに diff もどきを作ったことがあるけど、最終的にはパート図で
クリティカルパスを求めるアルゴリズムになって、ちょっと意外な感じがした。もっと効率的な
アルゴリズムも在るんだろうけど。
77デフォルトの名無しさん:2008/01/20(日) 13:00:24
diffをdpを利用して取る論文って調べりゃいくつか出てきそうな希ガス・キセノン・クリプトン
78デフォルトの名無しさん:2008/01/20(日) 21:49:11
N+N/2+N/4+N/8+...+1回の比較処理を行うときの計算時間はO(N)だと聞いたのですが、
kNの係数kはどれくらいの大きさになるのでしょうか?どうやって計算したらいいか教えてください。
79デフォルトの名無しさん:2008/01/20(日) 22:01:19
N が 2 の累乗のときは
 (1)   S = N + N/2 + N/4 + N/8 + ... + 4 + 2 + 1
とおくと
 (2)   2S = 2N + N + N/2 + N/4 + N/8 + ... + 4 + 2
となる
(2)から(1)をひいて
.       2S - S = 2N - 1
つまり S = 2N となる
80デフォルトの名無しさん:2008/01/20(日) 22:03:08
>>79
どうやったらそんな発想が・・・。limとか使うのかと思いました。
どうもありがとうございます。

。。。Nが2の累乗じゃないときはどうしたらいいでしょうか
81デフォルトの名無しさん:2008/01/20(日) 22:03:39
>>78
何が知りたいかわからんが、
1+1/2+1/4/+...=、についてなら、
四角形の半分を塗りつぶして、残りの半分を塗りつぶして、残りの…と続ければわかるよね?
8281:2008/01/20(日) 22:04:19
うあ、遅かった。ちゃんとリロードしないとな。
83デフォルトの名無しさん:2008/01/20(日) 22:07:32
> 四角形の半分を塗りつぶして、残りの半分を塗りつぶして、残りの…と続ければわかるよね?
わからん
8481:2008/01/20(日) 22:27:18
>>83
わかりづらかったかな。
半分ずつってのが、1/2, 1/4, 1/8,..に対応していて、
半分ずつ塗りつぶしていく→最終的に全部塗りつぶされる≒1
ということなんだけど、説明下手でごめんなさい。
85デフォルトの名無しさん:2008/01/20(日) 22:29:33
>84
SUGEEE
86デフォルトの名無しさん:2008/01/20(日) 23:20:34
>>84
計算時間と面積は関係無いだろ?
87デフォルトの名無しさん:2008/01/21(月) 00:05:46
>>84==81
それだといつまでも塗りつぶしが終わらないのでは
88デフォルトの名無しさん:2008/01/21(月) 00:07:24
2Nの話をしてるんじゃないのか?
89デフォルトの名無しさん:2008/01/21(月) 00:25:10
離散の世界だから有限で終わる
90デフォルトの名無しさん:2008/01/21(月) 01:54:48
>>80
79じゃないけど、そういうのは高校数学の「数列の和」とか
そのあたりでやる気がする。
91デフォルトの名無しさん:2008/01/21(月) 02:10:44
>>90
kwskお願いします
92デフォルトの名無しさん:2008/01/21(月) 02:48:27
1から100までの数を全部足すと
S = 1 + 2 + .... + 99 + 100
S = 100 + 99 + ... + 2 + 1

2S = 101 + 101 + ... + 101 + 101

2S = 101 x 100 = 10100

S = 5050

では1から101までの数を全部足すといくつですか?
93デフォルトの名無しさん:2008/01/21(月) 02:48:55
5050 + 101 = 5151
94デフォルトの名無しさん:2008/01/21(月) 03:12:48
>>91
等比級数の総和とかやらんかった?
1 + r + r^2 + r^3 + ... + r^n を求めるとか。
こんなやつ。

M = 1 + r + r^2 + r^3 + ... + r^n
rM =    r + r^2 + r^3 + ... + r^n + r^(n+1)

rM-M = r^(n+1) - 1
∴ M = {r^(n+1) -1} / (r-1)

r=1/2なら解き方も全部そのままなんだけどさ。
まだ習ってないっていうなら、そのうち習う。
文系だとやらんかもしれんけど、そんときは数学の先生に聞いてみるといい。
95デフォルトの名無しさん:2008/01/21(月) 03:14:50
-100 x -99 x .... x 99 x 100
を求めなさい
96デフォルトの名無しさん:2008/01/21(月) 03:16:28
>>86
N + N/2 + N/4 + N/8 + ... = N (1 + 1/2 + 1/4 + 1/8 + ...) → 2N
97デフォルトの名無しさん:2008/01/21(月) 03:16:50
>>95
0
98デフォルトの名無しさん:2008/01/21(月) 03:42:32
1/2! - 1/3! + 1/4! - 1/5! ....
99デフォルトの名無しさん:2008/01/21(月) 03:44:00
>>98
わからん。計算方法まとめてあるページ教えて。
100デフォルトの名無しさん:2008/01/21(月) 04:20:46
連分数?
101デフォルトの名無しさん:2008/01/21(月) 07:32:51
テイラー展開だろ
102デフォルトの名無しさん:2008/01/21(月) 07:37:57
e^x = 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5! + ...
∴ e^-1 = 1 - 1 + 1/2! - 1/3! + 1/4! - 1/5! + ... = 1/2! - 1/3! + 1/4! - 1/5! ....
103デフォルトの名無しさん:2008/01/21(月) 08:16:06
べき乗に「^」使う人良く見かけるけど
何でなんだろうね
CだとXORの記号なのに
漏れはx**yの方が好み
104デフォルトの名無しさん:2008/01/21(月) 08:19:32
google 電卓も ^ がべきだし Excelがそうなってるからだね
105デフォルトの名無しさん:2008/01/21(月) 10:33:01
数学板とかでは TeX 書式準拠だしね、数式。
^ はベキ。
106デフォルトの名無しさん:2008/01/21(月) 11:25:51
ASCIIの '^' は、上向き矢印(↑)だったことがあるから
107デフォルトの名無しさん:2008/01/21(月) 11:27:40
あと、BASICでも^をべき乗に使っているものがある。
**はFORTRAN由来。
108デフォルトの名無しさん:2008/01/21(月) 11:30:53
POWER(x,y)が好み
109デフォルトの名無しさん:2008/01/21(月) 14:40:55
>ASCIIの '^' は、上向き矢印(↑)だったことがあるから
ASR33 (TTY) だったっけ?
言語としては APL かな?
110デフォルトの名無しさん:2008/01/21(月) 17:39:28
ていうか「**」のほうが少数派だよな
111デフォルトの名無しさん:2008/01/21(月) 18:39:35
FORTRAN やら Ruby やら gnuplot やらは ** だな。
俺は TeX 的に ^ を使う派だが。
112デフォルトの名無しさん:2008/01/21(月) 20:43:47
log(n!)の近似値っていくつでしたっけ?
113デフォルトの名無しさん:2008/01/21(月) 21:08:27
スターリングの公式
11448:2008/01/24(木) 02:25:40
以前、2本の回帰直線が交差するようなデータを近似しようとして
質問した者です。

当初やろうとしていたサンプルが少ない場合ですと、>>49の方法が
思っていたより高速でした。時間さえあれば3直線や4直線でも
近似できそうです。ただ、高速化のテクニックが不足しているせいか
サンプル数が増えていくと辛くなってきました。

で、つい先ほどハフ変換の仮実装が完了しました。
資料見ながら6時間もかかりましたが、とりあえず誤差無しの画像データに
うまくフィットする形で直線を表示するところまできました。

画像みたいに点だらけだと楽なのですが、サンプル少ない&誤差が
あるときのデータの誤魔化し方などは考え中です…

ハフ変換は、おそらく統計学での回帰分析や主成分分析、
クラスタリング処理等と何かしら対応関係があるような気がします。
統計学はまだ学習中ですが、なんとか理解していきたいです。
115デフォルトの名無しさん:2008/01/24(木) 02:42:54
おお
時期的にもしかして卒論?
がんばれ
116デフォルトの名無しさん:2008/01/24(木) 12:03:52
>>114
ちなみに、↓こんなのが。
ttp://d.hatena.ne.jp/ufcpp/20080120/1200806676

ハフ変換って↓これよね。
ttp://mikilab.doshisha.ac.jp/dia/research/person/shuto/research/0626/tyokusen.html
(ρ, θ) 平面上の曲線の交点をクラスタリングすればそれっぽい結果が得られそうな気がする。
117デフォルトの名無しさん:2008/01/24(木) 23:15:09
すげえ
やっぱ技術のある人はすごいな

>>116の上のこのソースって言語何?
118デフォルトの名無しさん:2008/01/24(木) 23:20:48
C#だろ
119デフォルトの名無しさん:2008/01/24(木) 23:44:26
あーそうなのか
拡張子知らなかったわ
d
120デフォルトの名無しさん:2008/01/25(金) 09:29:40
誤差を最小にするんじゃなくて、一致度を最大にするような定義にしたらどうなのかな
Σexp(-(x-Xn)^2) が最大になるというような定義

121デフォルトの名無しさん:2008/01/26(土) 02:03:21
>>116が顔文字だと思った人の数
122デフォルトの名無しさん:2008/01/26(土) 14:59:39
>>120 が顔文字に見える
123デフォルトの名無しさん:2008/01/26(土) 15:14:31
会社に、プログラミングをさせてくださいとオナガイしたら、基本情報の資格を取ったらね
と言われて、只今勉強中で、自分で問題を作りマスタ、が
Windowsの計算機では小数を表す16進数が表示できないため、答えが合ってるか、どうか分かりません、答えが合ってるかどうか、教えてください、宜しくオナガイシマス算数の得意なエロイヒト

【自分で作った問題です】
7E.3Aを10進数の分数で表したらどうよ

【式と答え】
2進化16進
0111 1010.0011 1010
整数部と小数部に分ける
= ( 2^7 + 2^6 + 2^5 + 2^4 + 2^1 ) + ( 1/8×1 + 1/16×1 + 1/32×1 + 1/128×1 )
128で約分する
= ( 126 × 128 ) + ( 16 + 8 + 4 + 1 ) / 128
= ( 126 × 128 + 29 ) / 128
= 16157 / 128
この解答でどうよ?
124デフォルトの名無しさん:2008/01/26(土) 16:01:22
>>!23
答えは正しいです。
電卓で0x7E3Aを10進数に変換すれば検算できます。
手計算なら16、256、4096という数を暗記しておいて
16進数から直接10進数に変換するほうが速いです。

7E.3A
= 0x7E3A / 0x100
= (7 * 4096 + 14 * 256 + 3 * 16 + 10) / 256
= 32314 / 256
= 16157 / 128 (約分する場合)
125123:2008/01/26(土) 16:30:29
>>124thxです
凄い!プチ神が、降臨シマスタ
カミングアウトしますが、実は計算がとても苦手なんです
実際試験中に、計算方法(式)が分かっても
途中で計算を間違える人なので物凄くありがたいのですが、一つ質問させてください
7E.3A
= 0x7E3A / 0x100
整数化するために、0x100を乗してますが、どんな場合でも0x100を乗したらいいのでしょうか?
例えば、D7E.3Aの場合
D7E.3A
= D7E3A / 0x100
でいいのでしょうか?
126123:2008/01/26(土) 16:39:00
スマン、訂正です
>>×整数化するために、0x100を乗してますが、どんな場合でも0x100を乗したらいいのでしょうか?
○整数化するために、0x100を除してますが、どんな場合でも0x100を除したらいいのでしょうか?
127123:2008/01/26(土) 16:40:44
スレ汚しごめんなさい、頭のいい人がいるので、興奮して、あわててます
○整数化するために、0x100で除してますが、どんな場合でも0x100で除したらいいのでしょうか?
128デフォルトの名無しさん:2008/01/26(土) 16:54:46
小数点以下が16進数2桁のときに0x100を使います。
D7E3.A = D7E3A / 0x10
D7E.3A = D7E3.A / 0x10 = D7E3A / 0x100
D7.E3A = D7E.3A / 0x10 = D7E3.A / 0x100 = D7E3A / 0x1000
129デフォルトの名無しさん:2008/01/26(土) 16:57:17
別に、>124が特段頭がいいわけじゃないから落ち着けよ。あんたが間抜けなだけなんだから。
何も16進数を持ち出すまでもなく、10進数でも筆算のときに同じことをしているんだぞ。
例えば、123.45に6を掛けるときにどうするか考えてみろ。
一旦小数点のことは忘れて12345*6を計算し、その結果に123.45同様右から二桁のところに小数点を書くわけだ。
130123:2008/01/26(土) 17:06:10
>>128
>>129
ありがd、とてもよくわかりました
ここは凄い板ですね、感動シマスタ
色んな参考書や、サイト見てるけど、124氏のような解説は無かった
131デフォルトの名無しさん:2008/01/26(土) 19:13:50
16進数の小数があってるかどうか分からないって?
適当な数だけ下駄を履かせりゃいいだろ。
132デフォルトの名無しさん:2008/01/26(土) 21:45:15
ラムダ計算の勉強をしたいのですが、いちばんやさしい入門書を紹介してもらえませんか?
133デフォルトの名無しさん:2008/01/27(日) 01:05:27
計算幾何学勉強しようとしてんだけど
普通の幾何学からやらんとダメか?
134デフォルトの名無しさん:2008/01/27(日) 01:36:05
計算機科学じゃなくて計算幾何学のほうだとすれば
ある程度は幾何学わかってないと自分が何やってるかすら
把握できないんじゃないかと思うけど
135デフォルトの名無しさん:2008/01/27(日) 06:20:34
>123,>132,>133
お前等にはプログラミングとか向いてないよ。
馬鹿すぎる。
諦めろ。
136デフォルトの名無しさん:2008/01/27(日) 10:47:04
中学生かも知れないじゃないか
137デフォルトの名無しさん:2008/01/27(日) 11:04:49
>>136
中学生が会社に「プログラミングをさせてください」ってお願いするのか?
138デフォルトの名無しさん:2008/01/27(日) 11:23:00
>>135
現代の現場でのプログラミングの主流はライブラリ検索型。

つまり、全てのライブラリが用意されていて、そのライブラリの使い方を調べて組み立てるだけ。
だからこういう質問が出る方が適性があるとも言える。
139デフォルトの名無しさん:2008/01/27(日) 12:47:02
140デフォルトの名無しさん:2008/01/27(日) 16:46:57
>>132
いちばんやさしいかは知らんが
http://www.amazon.co.jp/dp/4839920818/
141デフォルトの名無しさん:2008/01/28(月) 19:47:29
馬鹿下駄問題かもしれませんが、教えてくださいエロイヒト
逆ポーランド表記法の問題です、式と答えが、あってるかどうか教えてください
【問題】
Y = ( A + B × C ) ÷ ( D - E )
上記の式を、逆ポーランド表記法で表しなさい
【式】
括弧の中から先に
Y = ( ABC×+ ) ÷ ( DE- )
括弧と括弧の割り算
Y = ABC×+DE-÷
最期に=の計算
YABC×+DE-÷=
【答え】
YABC×+DE-÷=
これで合ってますでしょうか?
142デフォルトの名無しさん:2008/01/28(月) 21:01:06
いつも思うんだが
ポーランド表記法に改めて
「逆」を付ける理由が分からん
143デフォルトの名無しさん:2008/01/28(月) 21:18:37
記法が逆になってるじゃん。
144デフォルトの名無しさん:2008/01/28(月) 21:21:27
ポーランド表記法は + 1 2 だから。

----

で、問題のほうだが、

Y= の部分が問題に含まれているのが激しく微妙すぐる。

RPNへの書き換え自体は問題ないが、そのRPNの式に従ってスタック計算機で
計算した場合、計算の最後は

------------ スタックトップ
( A + B × C ) ÷ ( D - E )
------------
Y に元々入っていた値
----------------------------------------- スタックボトム

という状態のスタックに "=" という演算子による演算を適用する、ということになる。
問題の式における Y とか = の意味がそういうものだというのなら問題ないのだが。
145141:2008/01/28(月) 21:50:14
thx>>ALL
 後置表記法(逆ポーランド表記法)では、例えば、式 X=(A−B)×C を
 XAB−C×=と表現する。

  次の式を後置表記法で表現したものはどれか。
  X=(A+B)×(C−D÷E)

 ア XAB+CDE÷−×=

 イ XAB+C−DE÷×=

 ウ XAB+EDC÷−×=

 エ XBA+CD−E÷×

答え ア

この問題と解答を手掛かりに、練習問題を自分で考え、質問させてもらいましたので
果たして、自分の考え方(式)や答えが正しいのかさっぱり分かりません、
もし、このような問題だった場合、先の解答、考え方は、正しいのでしょうか?
146デフォルトの名無しさん:2008/01/28(月) 22:24:47
スタックに入る時点では変数として入って
それを読み出すときに文脈によって右辺値または左辺値として
評価されるという言語かもしれないじゃないか

それにそもそも=は比較演算子かもね
147141:2008/01/28(月) 22:37:37
>>146
どうもです
148デフォルトの名無しさん:2008/01/29(火) 06:31:53
中置記法の式をツリーにして、そのツリーを反時計回り(左優先)、深さ優先で
post-orderトラバースすればRPNに変換できるよ。post-orderというのは、その
ノードを抜ける(親ノードの処理に移る)ときにノードの値の表示を行うという
こと。
149デフォルトの名無しさん:2008/01/29(火) 14:46:33
教えて欲しい問題があります!

データベースに登録した同じ次元のベクトルをコサイン尺度によって類似度を求めたいのですが,
コサイン尺度のプログラムが書けなくて困ってます!

以下がコサイン尺度の数式です.

cos(dj,q)
=(Σ_[i=1, m] dij*qi)/(√(Σ_[i=1, m] dij^2)^(1/2)) * (√(Σ_[i=1, m] qi^2)^(1/2))

※q=検索質問ベクトル,dj=各文書ベクトル
となっています.

また,dj*q はベクトル間の内積を表していて,
dj*q = Σ_[i=1, m] dij*qi
となってます.

少し複雑な計算式ですが,とりあえず書いてみました.

Railsのスレで質問したのですがこのスレの方が良いと言われたので書き込みました.
どなたかRubyになおしてもらえるならお願いします(×_×)
150デフォルトの名無しさん:2008/01/29(火) 21:34:17
>>149
まず、include Mathする。

でもって、コサインは
cos(t) # Math.cos(t)

平方根は
sqrt(x) # Math.sqrt(x)

一次元ベクトルaの成分和は、
a.inject {|x, y| x + y }

a,bの内積はa.size == b.sizeだとして
a.zip(b).map {|x, y| x * y}.inject { |x, y| x + y }
かな。
151デフォルトの名無しさん:2008/01/30(水) 01:10:11
>>149
cos(dj,q) = dj・q / |dj||q|
これが計算したいと予想。名前にコサインって入ってるし。

inner(x,y)=xとyの内積、norm(x)=|x|=sqrt( inner(x,x) )とすると
cos(dj,q) = inner(x,y) / { norm(dj) * norm(q) }
152デフォルトの名無しさん:2008/02/11(月) 12:05:23
f(t) = b1*t + b2*t^2 + b3*t^3 + b4*t^4...
tは0〜1の範囲としてf(0)=0 かつ f(1)=1 で この間 増加続ける係数群が欲しいのです
つまり b1=1-(b2+b3+b4...) です。

・ 2次の場合, f(t)=(1-b2)*t + b2*t^2 でb2の範囲は-1〜1
・ 3次の場合も、微分して0,1になる値を求めて場合分けして解けました。

4次以上になると微分結果も3次式になって簡単に解けません。

数学板で聞いたのですが、
>一般には難しい
>というよりきれいな結果が出ないタイプの問題にみえる

という事でした。 
でも、こういった問題は既に解かれていると思うのです。
たとえばZ変換/ラプラス変換や周波数特性が凸凹でないという条件と同じですから
ヒント等ございませんでしょうか?
153デフォルトの名無しさん:2008/02/11(月) 12:15:20
数学板でそういわれたんなら、そうなんだと思うけど。

とりあえず、周波数特性が凸凹でないってのと、
その関数の単調増加性は全然関係ないと思う。
154デフォルトの名無しさん:2008/02/11(月) 12:52:46
f' > 0 なら増加だから
3次関数で、正のものをえらんで積分すればよい
155デフォルトの名無しさん:2008/02/11(月) 12:56:40
(x-a)(x-b)(x-c)(x-d)の形で始めればよい
極値は簡単にわかる
156152:2008/02/11(月) 13:31:13
レスありがとうございます。
>>153
直線位相のFIRの場合 Σ An*cos(n*w) = ΣBn*cos(w)^n というふうに展開すれば
cos(w) は -1〜+1なので、 HPF/LPFなら座標変換すれば >>152の条件に戻せると思います

>>154
3次関数で全区間プラスの係数群を求めればいいという事ですね
でも結局3次方程式を解いて、係数の方向を見ていかないといけないですね

>>155
なるほど、それだと係数は複素数になるので
2次式の積の形に分解して解けばよいわけですね。

結局次数におうじて場合分けしてゆくしかないとしても、これなら解けそうに思えてきました。

ヒントありがとうございました。
157デフォルトの名無しさん:2008/02/11(月) 14:37:08
1次式と2次式の0〜1の範囲の正負が判明すれば何次でも判明する
158デフォルトの名無しさん:2008/02/11(月) 15:53:20
1次式で、条件を満たすのは f(x) = x のみ

2次式は f(x)=( (1-a) + a*x)*x のみ

3次式は
( (1-a) + a*x)* ( (1-b) + b*x)*x 【* c +(1-c)* ( ( (1-d) + d*x)*x 】

かな? 【】内が必要かどうか判らない

4次式以上もこの方式で拡張出来る?
159152:2008/02/11(月) 19:06:08
ありがとうございます。 【】の中は必要なようです。
それで拡張してゆきます。
160デフォルトの名無しさん:2008/03/20(木) 17:44:42
来年高校生なのですが、プログラミングを今から始めても遅くないですよね?
161デフォルトの名無しさん:2008/03/20(木) 17:49:34
Yes
162デフォルトの名無しさん:2008/03/20(木) 21:52:13
何をするのに遅いというのか
163デフォルトの名無しさん:2008/03/21(金) 10:51:47
ったくいまどきのガキときたら
164デフォルトの名無しさん:2008/03/22(土) 00:24:11
>>160
大丈夫。MIT で採用してるのを勉強するのが吉。

もうひとつの Scheme 入門
http://www.shido.info/lisp/idx_scm.html

文面中の mit-scheme-7.7.1-ix86-win32.exe はここにある。
http://ftp.gnu.org/gnu/mit-scheme/stable.pkg/7.7.1/mit-scheme-7.7.1-ix86-win32.exe
165デフォルトの名無しさん:2008/06/24(火) 23:39:39
単位取れなくてもまあいいやって思って情報数学の授業をぼんやり受けてたら掃き出し法もろくに解けなくてワロタ
166デフォルトの名無しさん:2008/08/15(金) 07:11:12
hage
167デフォルトの名無しさん:2008/09/27(土) 17:20:52
オーダーのO(n)とO(nlogn)ってどっちが速いですか?
lognはnが10なら1だからO(n)の方が速いと思ってるのですが、
とあるブログでO(nlogn)の方が速いって言っててわからなくなりました
168デフォルトの名無しさん:2008/09/27(土) 17:26:49
O(n)が速い
そのブログは嘘
169デフォルトの名無しさん:2008/09/27(土) 17:28:02
>>168
167の自分の考えは間違っていないですか?
170デフォルトの名無しさん:2008/09/27(土) 17:30:06
^2 が抜けてたとかそういう落ちか、
オーダーの問題じゃなくて n が小さい時の挙動の話か。
171デフォルトの名無しさん:2008/09/27(土) 17:32:13
>>170
だいたい自分の理解の仕方は間違っていないということはわかりました
ありがとうございました
172デフォルトの名無しさん:2008/09/27(土) 17:32:27
どのブログ?
173デフォルトの名無しさん:2008/09/27(土) 17:35:54
いつもお世話になってるとこなんで穏便にお願いしますね

ttp://monsho.blog63.fc2.com/blog-entry-83.html
174デフォルトの名無しさん:2008/09/27(土) 17:36:52
オーダーだから「nが10なら1」というような意味はない...けど、
(底が10の対数、という意味ではないから)
nlognのほうが早い、ってことはないな。
175デフォルトの名無しさん:2008/09/27(土) 17:41:35
>>174
そうなんですか
てっきり常用対数なのかと思ってました
176デフォルトの名無しさん:2008/09/27(土) 17:46:31
177デフォルトの名無しさん:2008/09/27(土) 18:11:04
>>173
やっぱ n が小さい時の挙動じゃん。

アルゴリズムの改良って、
オーダーが小さくなる代わりにオーバーヘッドが大きくなることがよくある。

この場合、
オーダーが小さい → n を大きくしても平気
オーバーヘッドが大きい → n が小さい時は逆に不利
178デフォルトの名無しさん:2008/09/27(土) 18:33:34
単純に計算するとn<10でn*logn<nになるな
少ない要素数に対して何度も適用する場合においては有利になるとかなんかな?
実例としてはどんなのがあるんだろう
179デフォルトの名無しさん:2008/09/27(土) 18:35:14
>>177
>このオーダーの計算は n が∞に向かった場合の処理の速さを相対的に表現したものに過ぎません。O(n) と O(nlogn) なら O(nlogn) の方が速いわけです。

この一文に関しては前後の脈絡関係なく単独で判断できると思うんですよ
そうすると間違っているということじゃないんですか?
180デフォルトの名無しさん:2008/09/27(土) 18:41:35
logの底が10だと思ってる奴って結構いるのかな
181デフォルトの名無しさん:2008/09/27(土) 18:46:51
>>179
その認識で合ってる
182デフォルトの名無しさん:2008/09/27(土) 18:48:22
>>181
主語はどっちですか
183デフォルトの名無しさん:2008/09/27(土) 18:51:26
日本語に主語は無い
184デフォルトの名無しさん:2008/09/27(土) 18:55:50
底が省略されてるときの底がeだったり10だったりとややこしいから機雷
185デフォルトの名無しさん:2008/09/27(土) 18:57:18
そんな意地悪しなくてもw
いやどっちが合ってるって言ったのか確信が持てなくて
まあ『認識』って書いてあるから俺の考えてることで合ってるって意味だと思いますけど
ブログの方が合ってると言うなら『記述』とか書くでしょうから
186デフォルトの名無しさん:2008/09/29(月) 01:49:17
O(f(n))とO(g(n))があったら
f(n)/g(n)→∞(n→∞)ならg(n)のほうがnの増加に対して効率がいい。
f(n)/g(n)→0(n→∞)ならf(n)のほうがnの増加に対して効率がいい。

アルゴリズムイントロダクション第一巻読め。
187デフォルトの名無しさん:2008/09/29(月) 01:54:23
やあ今頃来たのかい
188デフォルトの名無しさん:2008/09/29(月) 09:52:29
アルゴリズムイントロダクション新品で売ってない・・・
189デフォルトの名無しさん:2008/09/30(火) 00:26:00
抽象度の高いクラスを設計するには数学力を鍛えると良いと聞きました。
数学は抽象の宝庫であると。
集合論が一番の基礎だと思うのですが、抽象度の高いクラス設計に必要な地力をつけるために
数学を学ぶとしたら、集合論からどのような分野にステップアップしていけばよいですか?
190デフォルトの名無しさん:2008/09/30(火) 01:28:12
クラス設計の本でも読んで、試行錯誤しながら実装しる。
現実世界ではペンキ塗ったりワックスがけしたりして空手が強くなるということはない。
191デフォルトの名無しさん:2008/09/30(火) 10:34:46
クラス設計に関しては、現状ではやれデザインパターンたどかリファクタリングだの
アスペクト指向やらと試行錯誤といった状態だと思う。

またマシンの性能が確保できる時はいいけども、
組み込みや容量・速度といった制限のかかっている場合は、
クラスを使わないようにすることがベストなんて場合もある。

作業者のスキルが揃わなかったり、昔ながらの人が居たりで、
グローバル変数べったりのコードを書かざる得ない状況だって実務的にはあった。

数学は大学に入る時の能力で後は下がる。
歳を取ったら新しいロジックを頭で追いかけ切れなくなって
結局はパターン的に処理してるだけ時もくる。

ただ何か頑張ろうという意欲は大切だと思うので、
今、目の前の問題に関するところから広げていくくらいでいいのでは思う。
192189:2008/09/30(火) 23:39:17
>>190
試行錯誤はそこそこしてるつもりです。
これまでに自分で設計したクラス数は大小あわせて100〜200くらいでしょうか。
最初に比べればずっとうまくなったと思ってますがやはりまだまだわからないことが多い。
無手勝流では限界があるような気がしてます。
数学を学ぶことで抽象的な発想を得られるのではと思いました。

>>191
目の前の問題に関するところから広げていくのも確かに現実的な方法ですが、
叶うならば体系的な知識を学んで骨太の地力を付けたいと思っています。


193デフォルトの名無しさん:2008/10/01(水) 00:41:31
>>192
そんな貴方には代数がオヌヌメ。
単に抽象を求めるなら、集合論だけでも相当イカれた領域まで突っ走れるけど、
計算機からは離れていってしまう感が強いので。
194デフォルトの名無しさん:2008/10/02(木) 00:05:04
The Art of Computer Programmingでも読もうか
195デフォルトの名無しさん:2008/10/05(日) 16:47:46
ゲーム以外で、数学ってどこで使うの?
196デフォルトの名無しさん:2008/10/05(日) 17:56:59
待ち行列理論とか
197デフォルトの名無しさん:2008/10/05(日) 17:59:15
>>195
「計算」と「数学」の違いはわかるか?
198デフォルトの名無しさん:2008/10/05(日) 19:57:45
なるべくでいいから質問を質問で返すな
スレが荒れるから
199デフォルトの名無しさん:2008/10/07(火) 10:43:34
今25なのですが、プログラミングを今から始めても遅くないですよね?
200デフォルトの名無しさん:2008/10/07(火) 11:51:29
うん
201デフォルトの名無しさん:2008/10/07(火) 12:38:46
何をいつまでにやるかによるだろ
202デフォルトの名無しさん:2008/10/07(火) 13:58:47
センスある奴は年いってからでものびるみたいだけど、
このスレでアホな質問してる>>199は絶望的
203デフォルトの名無しさん:2008/10/07(火) 19:43:08
>>199
高校の数学が理解できるなら遅くない。
高校の数学が怪しいならやめとけ。

数列とか理解できるか?
204デフォルトの名無しさん:2008/10/07(火) 20:00:08
>>199
人々の権利を守る為にと
独学で数学とプログラミングを学んで暗号システムを開発したおっちゃんだっている。
気合があれば余裕。
205デフォルトの名無しさん:2008/10/08(水) 16:24:27
プログラミングは大半の人にとっては何かを実現するための手段だからな。
実現したい情熱さえあれば何とかなるべ。
車や飛行機作るのと違ってあまり高価な設備投資いらないしな。
206デフォルトの名無しさん:2008/10/11(土) 22:29:39
http://www.forest.impress.co.jp/article/2007/04/24/dfsupt.html
↑テキスト比較ツール「DF」のように2つのテキストファイルを比較して
お互い一致しない行を探し出すプログラムを自前で組みたいとおもっています。
(C#を予定)

この手のプログラムを組むにはどのようなアルゴリズムを調べれば実現できる
ようになるでしょうか?
207デフォルトの名無しさん:2008/10/11(土) 23:01:15
O(ND)アルゴリズムとかO(NP)アルゴリズムとか
208デフォルトの名無しさん:2008/10/12(日) 11:07:17
>>206 diffの原理を調べれば解かると思うけど、
同じで無い行が 違いのある行 として扱うようにすればいいんじゃないの
209デフォルトの名無しさん:2008/10/19(日) 14:41:19
viviの実装についての説明がわかりやすかったような
ttp://b.hatena.ne.jp/entrymobile/548258
210デフォルトの名無しさん:2008/11/15(土) 21:28:45
ほす
211デフォルトの名無しさん:2008/11/27(木) 22:15:16
物理の話になるんですけど聞いてください
反発係数が1で重さが1の物体aと物体bが衝突した後の速度って

物体aがVb(衝突前の物体bの速度)
物体bがVa(衝突前の物体aの速度)

であってます?
212デフォルトの名無しさん:2008/11/27(木) 22:30:22
>>211
あってません。
213デフォルトの名無しさん:2008/11/27(木) 22:35:23
んっ、合ってるだろ
速度が交換する
214デフォルトの名無しさん:2008/11/27(木) 22:36:48
式変形するとわかるんだけど
どういう理屈なんだろね
215デフォルトの名無しさん:2008/11/27(木) 23:15:33
>>214
どういう理屈もなにも、止まっている物体に動いている物体がぶつかったときの事を考えれば判るだろ?
衝突したのに止まっている物体が止まったままで動いている物体が動き続けていたら気持ち悪いじゃないか。
216デフォルトの名無しさん:2008/11/27(木) 23:30:38
斜めにぶつかった場合は・・・
217デフォルトの名無しさん:2008/11/27(木) 23:47:01
>>216
斜めにぶつかろうと同じことだよ。
相対論的な速度でないのだから、片方の物体と等速度で移動している系から観測すれば
その物体は静止しているのと同じように振舞うのだから。
218デフォルトの名無しさん:2008/11/28(金) 03:25:56
多分216の言ってる斜めってのは、


 ○
みたいな意味じゃね?
219デフォルトの名無しさん:2008/11/28(金) 05:42:17
接線に対して垂直になるようにベクトル分解して後は同じじゃねーの?
220デフォルトの名無しさん:2008/11/28(金) 07:42:12
後は同じってなんだよ
テキトーなこというなよ
現在進行形で悩んでる俺に解説キボン
221デフォルトの名無しさん:2008/11/28(金) 07:52:37
等質量で塑性変形を考慮しなくていいなら、>219で事が足りるだろ。
要は、ビリヤードで言うところのイマジナリボールだ。
222デフォルトの名無しさん:2008/11/28(金) 10:01:42
保存則考えればわかるべ。
223デフォルトの名無しさん:2008/11/28(金) 10:40:02
オブジェクト指向を圏論とか型理論、数理論理学を使って説明している本とか論文ってないですかね?
責務とか言われても曖昧でよくわかりません
224デフォルトの名無しさん:2008/11/28(金) 10:43:17
>>223
クラスの継承関連なら関係づけられそうだけど、オブジェクト指向となるとどうなんだろう?
225デフォルトの名無しさん:2008/11/28(金) 12:08:18
>>223
与太話でやったことはあるけれど、論文は見たこと無いなあ。
226デフォルトの名無しさん:2008/11/28(金) 12:45:00
オブジェクト指向 形式化 で検索してみ?
227デフォルトの名無しさん:2008/12/16(火) 20:41:41
すでに正規化してあるベクトルをさらに正規化するとどうなるんでしょうか?
228デフォルトの名無しさん:2008/12/16(火) 21:01:10
数学的には同じ値になる。
229デフォルトの名無しさん:2008/12/16(火) 21:15:40
コンピュータ的には数値誤差でちょっとだけ変わる可能性はある・・・のか?
230デフォルトの名無しさん:2008/12/16(火) 22:00:08
>>228
なりました
マジで感動しました

ありがとうございます
これからは安心して無駄に正規化しまくろうと思います
231デフォルトの名無しさん:2008/12/17(水) 00:31:01
>>230
どうやって確認したんだ?
全てのベクトルで試したか?
漏れは無いか?

つーか、コンピュータにやらせて感動というのは、この場合はおかしい。
手で計算して感動するべきだ。
もし手で(というか定義見て理解して)納得して感動したというなら謝る。そして偉い! その調子で頑張れ。
232デフォルトの名無しさん:2008/12/17(水) 00:39:04
>>231
233デフォルトの名無しさん:2008/12/18(木) 22:30:19
IMEで「外積」って単語ないのな
内積はあるのに・・・
もうPCが発売されてから何年経つんだろうか・・・

「外積」を辞書登録する恒例行事はもうやめにしようぜ
234デフォルトの名無しさん:2008/12/19(金) 00:00:24
>>233
数学・科学用語は軽視されてる感がある。
235デフォルトの名無しさん:2008/12/19(金) 03:28:11
MS-IME 2007だが外積は出るぞ。もちろん外と積に分かれているなんてことはない。
登録単語を見返しても登録されていない。
236デフォルトの名無しさん:2008/12/19(金) 05:58:46
>>235
2007ってOfficeに入ってるやつか?
普通のIMEでは外積は単語登録しないとでないんだよ
237デフォルトの名無しさん:2008/12/19(金) 08:03:30
いま、とあるソフトの機能追加で
モデルが数式のときはバンプマップは高さマップを作るだけだったんですが
ポリゴンのときには法線マップが引数から流れてくるんですけどこれ捨てちゃっていいでしょうか?
238デフォルトの名無しさん:2008/12/19(金) 08:08:41
うち、Microsoft Office IME 2007 だけど、がいせきは外戚しか出ない。
239デフォルトの名無しさん:2008/12/19(金) 09:33:41
ATOKも>>238と同様っぽい
数学用語系の辞書作ってる人いないのかな?

>>237
スレ違いだし、他で聞いても情報量少なすぎて多分誰も答えられない
240デフォルトの名無しさん:2008/12/19(金) 11:28:37
241デフォルトの名無しさん:2008/12/19(金) 11:40:44
ttp://www.atok.com/products/index.html#pgTech
科学用語辞書ってないのか...
242デフォルトの名無しさん:2008/12/19(金) 18:58:44
数学関係の編集をやっているが
IMEの辞書はとてもそのままじゃ使えない
243デフォルトの名無しさん:2008/12/19(金) 19:25:27
>>239
ことえりは変換できる。
Mac のうんこ IME と思ってたが、意外とやるなあ。
244デフォルトの名無しさん:2008/12/20(土) 22:04:43
>>239
ATOK2006以降だと外積変換できた
245デフォルトの名無しさん:2008/12/28(日) 01:56:10
スレタイに合った数学の本教えて。
246デフォルトの名無しさん:2009/01/08(木) 09:12:10
コンピュータのための数学でも買ってろボユゲ
247デフォルトの名無しさん:2009/01/08(木) 21:30:39
>>245
ゲームプログラミングのための3Dグラフィックス数学
やっぱこれでしょ
248デフォルトの名無しさん:2009/01/10(土) 02:41:25
>>245
共立出版 情報数学講座2 「情報代数」 小野寛晰 著
249デフォルトの名無しさん:2009/01/10(土) 17:09:08
The Art of Computer Programming
250デフォルトの名無しさん:2009/01/11(日) 20:10:07
TAOCPは数学の本じゃないだろ
251デフォルトの名無しさん:2009/01/24(土) 15:22:06
計算理論ってプログラミングに関係あるの?
252デフォルトの名無しさん:2009/01/24(土) 15:29:19
うん
253デフォルトの名無しさん:2009/01/24(土) 15:36:45
述語論理を使って制約を含む仕様を書いたらそれから機械コードを生成するようなコンパイラを作りたい
でそれ使ってwebプログラミングしたい
254デフォルトの名無しさん:2009/01/24(土) 15:39:03
がんばれ
255デフォルトの名無しさん:2009/01/24(土) 18:42:24
3(6x+4y)-2(x+6y)
256デフォルトの名無しさん:2009/01/26(月) 02:49:35
2次元の回転はsinとcosの2*2の行列だけど、
本には3*3の行列になってますよね。
3列目と3行目にダミーの1と0が入ってたと思いますが、
あれの意味がわかりません。
よろしくお願いたい酢します
257デフォルトの名無しさん:2009/01/26(月) 02:51:51
>>256
何にも知らないのだったら、まずは同次座標について勉強してみるんだ。
その上で分からないことがあったら、またここへ来ればいい。
258デフォルトの名無しさん:2009/01/26(月) 06:42:13
>>256
同次座標 アフィン変換で検索するといい
259デフォルトの名無しさん:2009/01/26(月) 08:21:22
あっふん変換
260デフォルトの名無しさん:2009/01/29(木) 13:53:40
ポリゴンの平行移動などのアニメを作成する際、
エルミート曲線を使用することになりました。
以下の計算式まではたどり着けたのですが、
フレームと値(x座標など)のグラフ上の角度から
m(i)を求める方法がわかりません。
また、この場合の t は
( 現在のフレーム数 / 総フレーム数 )でいいのでしょうか?

p(t) = (2*t3-3*t2+1)p0 + (t3-2*t2+t)m0 + (t3-t2)m1 + (-2*t3+3*t2)p1
m(i) = ( p(i+1)-p(i-1) ) / 2 /* <-前後のフレームの値の差の半分? == tan(角度)*1(フレーム)? */
261デフォルトの名無しさん:2009/01/29(木) 14:08:22
EXCELで、
A1が1の時は、B6はC1
A1が2の時は、B6はC2
A1が3の時は、B6はC2

B6とC1〜C3をリンクしたい場合、B6の関数はどうすればいいか教えてください。
262デフォルトの名無しさん:2009/01/29(木) 20:23:56
>>261
どこをどう迷い込んだか知らんが
板違いに気付けよ。
263デフォルトの名無しさん:2009/01/30(金) 19:49:03
将来ゲームプログラマになりたいんですが、プログラマ的には数学と物理学ってどのくらいまで勉強すればいいんでしょうか?

物理学と数学を勉強しすぎると時間がいくらあっても足りないですよね。
ちなみに大学課程の話です。
264デフォルトの名無しさん:2009/01/30(金) 20:25:43
>>261
=address(1;a1)
265デフォルトの名無しさん:2009/01/30(金) 22:00:08
>>263
数学はベクトル・行列、物理は運動方程式ぐらいは理解して無いとやばいんじゃね?
「ここまで勉強すれば十分」なんて業界は知らない。
266デフォルトの名無しさん:2009/01/30(金) 22:42:11
>>263

ゲームプログラマになりたいなら、その手の本がいっぱいあるだろ。
セガの人が書いた本とか新人教育向けの本とか。オーライリとか。

ちなみに今の日本のゲーム業界は、技術的・理論的なところでは欧米に完全に負けている。
どの辺が負けているかを本などから読み取ってみるのはどうかな?

大学課程では、ゲームプログラムとは離れて、所属した研究室での最先端をしっかりと見につければ良いと思う。
267デフォルトの名無しさん:2009/01/30(金) 22:56:16
解析力学頑張れ
268デフォルトの名無しさん:2009/01/30(金) 22:57:23
三角関数と線形代数は必須
実践的に理解している必要がある
269デフォルトの名無しさん:2009/01/30(金) 23:18:10
>>263
リアルタイムな3Dゲームに関しては、

微積 線形代数 計算量とアルゴリズム 近似と誤差
物理は別に要らんが、微小時間と差分に関する概念はきちんと抑えておくこと。

あと自分で調べられないとどんな職業でもやってけない。
270デフォルトの名無しさん:2009/02/02(月) 16:17:51
居住地   人数

東京都   16
大阪府   26
新潟県    1
富山県    2
京都府    2
神奈川県   1
山梨県    2

上記から、「同じ都道府県同士でバッティングさせない」という条件下で
2人1組のペアを作るとします。
その場合に、
どうしても余ってしまって同じ都道府県同士で組まざるを得ないのは
何人いるか、を求めたいのですが、
その場合どういう計算式が考えられますでしょうか。
271デフォルトの名無しさん:2009/02/02(月) 16:21:25
26 - (16 + 1 + 2 + 2 + 1 + 2) = 2
272デフォルトの名無しさん:2009/02/02(月) 17:50:26
最も大きな人数のグループ二つを選びペアを一組作る。
ペアを作ったら人数を更新する。人数が0になったグループは消す。
グループが一つ以下になるまでこれを繰り返す。
残ったグループの人数が答え
273デフォルトの名無しさん:2009/02/02(月) 17:53:35
人数が奇数のときは最初に例外を投げ…いや、なんでもない。
274デフォルトの名無しさん:2009/02/02(月) 18:03:17
男女男男女男女
275デフォルトの名無しさん:2009/02/03(火) 03:00:15
ゲームプログラマって自分が作ってる部分がゲームのどの部分だかわかってるの?
その前に、ゲームプログラマってそのゲームのストーリーは知らされているものなの?
276デフォルトの名無しさん:2009/02/03(火) 03:45:06
スレ違い
277デフォルトの名無しさん:2009/02/03(火) 03:54:14
オブジェクトにオブジェクトをぶつけてはじき飛ばすというプログラムを作ろうと思って、
いろんな講座を見てみたけど、こんな簡単なプログラムでも数学・物理の知識がいりますね。
高校中退でそのまま文系大学受けたから、ぜんぜん手が出ない・・・
278デフォルトの名無しさん:2009/02/03(火) 04:10:30
計算式は高校物理で習うけど
計算力は中学数学レベルで十分
279デフォルトの名無しさん:2009/02/03(火) 04:12:30
衝突判定はあなたが思っているよりもずっと高度。決して簡単ではない。
オブジェクトが球だけってならともかく
数学・物理の知識だけじゃまず間違いなくあなたの望むスピードじゃ動作しない。
280デフォルトの名無しさん:2009/02/03(火) 04:34:34
そうか?判定用のピクセル・テクセル座標をどう採るかだけだろ
281デフォルトの名無しさん:2009/02/03(火) 06:59:21
何の話だ
282デフォルトの名無しさん:2009/02/03(火) 08:26:45
まあ自前で効率的に書こうとしたら初心者じゃ無理だわな。
283デフォルトの名無しさん:2009/02/03(火) 09:06:44
物理的な衝突と、
単に衝突したかどうかを検出するのは
難易度段違い
284デフォルトの名無しさん:2009/02/03(火) 09:12:21
運動ベクトルをお互いに引き算してマイナスが出たら質量に足して補正するじゃ駄目なの?
285デフォルトの名無しさん:2009/02/03(火) 10:26:38
Haskellなら、プログラミングと数学の両方をいっぺんに学習出来るぞ!!
「計算」の意味についての理解が飛躍的に上がるのは確か。
286デフォルトの名無しさん:2009/02/03(火) 10:37:13
球ならそんなには難しくはない。
まず、大きさ同じとか、速度同じとか、回転しないとかそういう条件からやってみれば。
昔はこういうところをパソコン雑誌でやっていたものだけどね。
287デフォルトの名無しさん:2009/02/03(火) 11:43:31
衝突判定のネタだけで一冊本が書けるんだよね

http://www.amazon.com/dp/1558607323
288デフォルトの名無しさん:2009/02/03(火) 12:33:08
有限要素法っぽいことをやりたいのか、1フレ内でオブジェクトの重なり判定を
やったりしたいのかで話はだいぶ違うけどな。
289デフォルトの名無しさん:2009/02/03(火) 15:38:34
>>284
球同士なら半径でコリジョン処理出来るけど、
多面体になった途端、衝突パタンが面、辺、頂点と分かれ、衝突位置によって物体が回転したりするわけだ。

内部的には描画に合わせて単位時間で回転移動の処理をすることになるだろうけど、
更に厳密に処理するなら衝突発生時は各物体を衝突の瞬間まで戻して再計算しなきゃならんとか、
球同士ですら移動ベクトルが早すぎれば半径コリジョンだとすり抜ける場合もあるから考慮しないと・・・とか、
考え出すとキリが無い。
290デフォルトの名無しさん:2009/02/03(火) 17:29:38
しかもそれが2つじゃなくて多数のオブジェクトになったらもう…
291デフォルトの名無しさん:2009/02/03(火) 21:47:36
宇宙船に弾が当たったかの判定と
積み上げたドラム缶の山が崩れるのでは
厳密さが違いすぎる。
292デフォルトの名無しさん:2009/02/03(火) 23:59:14
その厳密さの違いは当然で、
自分の実装するゲームに合うように適切に省略を行う必要がある。
弾幕シューティングみたいに、
オブジェクトが遅くて、点対面な衝突判定なら>>284でいいだろうし、
3次元マップと車の衝突判定とかになると、
かなり厳密な

途中で面倒になった。
293デフォルトの名無しさん:2009/02/04(水) 00:01:40
うん、まぁわかってるから書かなくていいけどね。
294マイク ◆gZ6OoOjBU6 :2009/02/05(木) 07:27:45
計算機科学や情報工学やソフトウェア工学と、数学や数学基礎論や物理学を結びつけるこのスレは
かなり有益な部類に属するものだろう。
295デフォルトの名無しさん:2009/02/06(金) 21:42:40
>>285
チョット興味あるんだけど、お勧めの教材とかある?
296デフォルトの名無しさん:2009/02/06(金) 22:56:30
興味があるのなら
その位自分で探したら?
297デフォルトの名無しさん:2009/02/06(金) 23:37:29
チョットは興味あるけどそこまでは無いんだもん
298デフォルトの名無しさん:2009/02/07(土) 10:45:59
じゃあやめとけ
299デフォルトの名無しさん:2009/02/08(日) 07:36:34
299
300デフォルトの名無しさん:2009/02/08(日) 07:36:55
300
301デフォルトの名無しさん:2009/02/13(金) 01:14:54
[1] 授業単元:数学
[2] 問題文(含コード&リンク):
1から9までの数字を縦横方向に同じものが並ばないように下記の例のように並べる
並べ方が全部で何通りあるか
少なくとも10の何乗かのオーダーで解答ください
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:

534681297
685293714
948367125
153472869
426538971
261759483
817945632
379126548
792814356
302デフォルトの名無しさん:2009/02/13(金) 01:23:07
横方向には重複しない9×9の配列をランダムに生成し
それが縦方向に重複しているかどうかを確認するという
プログラムを書く

そしてその結果を集計してモンテカルロ法で確率を計算
それを 9!^9 にかけることで結果を得る

がんばれ
303デフォルトの名無しさん:2009/02/13(金) 02:04:31
>>301
マルチ死ね

Python の宿題ここで答えます Part 1
http://pc11.2ch.net/test/read.cgi/tech/1153585095/785
C/C++の宿題片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232029287/542
Rubyの宿題教えてください。2限目
http://pc11.2ch.net/test/read.cgi/tech/1200175247/476
304デフォルトの名無しさん:2009/02/14(土) 19:12:16
PCの本にでてくる回転行列ってなんで右から掛け算するようになってるんだ。
普通は左からだろ。
305デフォルトの名無しさん:2009/02/14(土) 19:14:05
普通は右からだろ
306デフォルトの名無しさん:2009/02/14(土) 19:21:18
座標空間にあるものを回転するのではなく
座標そのものを回転するからだよ
307デフォルトの名無しさん:2009/02/14(土) 19:30:13
いや、おれは高校の頃に一次変換があった世代なんだけど、右からかけてるなんて奴
見たことないぞ。

>座標空間にあるものを回転するのではなく 座標そのものを回転するからだよ

それぐらい知ってるって。
(1,0)を(sinx,cosx)に、(0,1)を(sin(x+90),cos(x+90))に基本ベクトルを取り替えることによって
回転を実現させている。
308fushianasan:2009/02/14(土) 19:48:32
h
309デフォルトの名無しさん:2009/02/14(土) 19:53:33
>>304
右からかけるのと左からかけるのに意味がある。

法線とかの場合、行列が左に来る。

座標と法線って内積をとるわけだけど、その時に、
(x A)・(B n) = x・n
x: 座標ベクトル
A: 座標に関する変換行列
B: 法線に関する変換行列(A の逆行列)
y: 法線

と書けるようにするため。
310デフォルトの名無しさん:2009/02/14(土) 19:59:49
PS1 の経験から、ハードウェアの都合だと思ってたけど。
SGI の昔の GTE がそうだったとか、そんなんじゃない?
実際回路は簡素になるし。
全ての行列を転置して扱うとも言えるけど。
311デフォルトの名無しさん:2009/02/14(土) 20:01:31
ごめん、いみがわからない。。。
312デフォルトの名無しさん:2009/02/15(日) 02:15:26
313デフォルトの名無しさん:2009/02/15(日) 10:48:34
右と左はどっちでもいいんじゃ。
ベクトルを縦にとるか横に取るかじゃないの?
違ったらごめんなさい。
314デフォルトの名無しさん:2009/02/16(月) 16:56:38
>>312
なんか間違ったこと書いたかな。。。
315デフォルトの名無しさん:2009/02/16(月) 19:15:48
丸投げっぽくてアレだけどだれか教えてくれない?
余弦をマクローリン展開してるつもりなんだけどどうしても
マイナス方向に誤差がでる。原因は式?
それとも浮動小数点の誤差?
template<class type> type Cos(type n)
{
 type r=0,pow=1.0;
 unsigned long factorial=1,i=0;

 n*=n;
 while(i<18)
 {
  type x,y;
  x=pow/factorial;
  pow*=n;
  factorial*=++i;
  factorial*=++i;

  y=pow/factorial;
  pow*=n;
  factorial*=++i;
  factorial*=++i;
  r+=x-y;
 }
 return r;
}
316デフォルトの名無しさん:2009/02/16(月) 20:13:45
>>315
その式だと,マクローリン展開が負の係数で終わってるので
負の方向に誤差が出やすい。

ただ,マクローリン展開が有効な範囲(剰余項が十分小さい範囲)では
たいして問題にはならない程度の誤差のはず.
317デフォルトの名無しさん:2009/02/16(月) 21:15:22
>>316
なるほどね。ありがとう。
正直展開の停止基準がよく解ってないんだけど、
何を基準にするのがベター?
318デフォルトの名無しさん:2009/02/17(火) 00:51:57
手を抜くなら、前回の r == 今回の r になった時点でループ終了。

マクローリン展開の定義式から誤算も見積もれるから
必要な精度に応じて何回ループ回すか決めればいいのでは。

あと、ほんとに精度必要なら、
浮動小数点数の性質上、小さい値から足してった方が誤差減る。
++i するんじゃなくて、最初に規定精度分の桁から初めて --i。
319デフォルトの名無しさん:2009/02/17(火) 01:12:02
同じことだけど、

… + a/1/2/3/4 + b/1/2/3 + c/1/2 + d/1

とするかわりに

( ( ( ( … + a )/4 + b )/3 + c )/2 + d )/1

のようにするとかなー
320デフォルトの名無しさん:2009/02/17(火) 07:16:14
>>317
打切り誤差と桁落ち誤差のオーダーが合うようにするのが良い,と言われている.
けど,そんなに精度を気にするなら,そもそも double で計算するのがマズイし,
単純なマクローリン展開でやるのも良くない.

double なら 10^{-10} くらいで一致していれば満足したほうが精神衛生上良いよ.
321デフォルトの名無しさん:2009/02/17(火) 08:06:26
ああ、あと、sin/cos に関して言うと、
sin π/2 - x = cos x とかの変換公式使って、
x の範囲を π/4 以下に収めてから級数展開するのがいい。
322272:2009/02/18(水) 09:21:00
>>271
>>272

レスありがとうございます。

とりあえず>>270の考え方でプログラム組めました。

さらに>>270に、「常に余りが最も少なくなるように組み合わせる」
という条件を追加したら、どういう考え方になるでしょうか?

現状では組み合わせ方によって、「余ってしまって同じ都道府県同士で
組まざるを得ない」人数が、2人になったり6人になったり変動します。
323デフォルトの名無しさん:2009/02/18(水) 10:52:49
>322
なぜ君が272になってんのさ
324デフォルトの名無しさん:2009/02/18(水) 18:01:38
>>322
272のアルゴリズムには同一条件下で結果が変動する要素は無いと思うけど
ソート順でペアになる県は変わるが、最終的に残るのが
「最も少ない余り」=「同じ都道府県同士で組まざるを得ない」

実装に失敗してるだけじゃね?
325デフォルトの名無しさん:2009/02/18(水) 19:09:32
>>318-320
ありがとう頑張ってみるよ。
一応、標準ライブラリの様に円を一周しても
きっちり1になるような精度までは欲しかったんだ。
326デフォルトの名無しさん:2009/02/18(水) 21:23:33
>>325
標準ライブラリで,1周してゼロになるのは >>321 の言うような実装だから.
(cos(2π) = cos(0) = 1 と計算されている)

これをせず,ただのマクローリン展開だけでやろうとすると,
n 次の項は (2π)^n/n! くらいで,これが 10^{-16} 程度になるには n 〜 40 くらい.

というわけで,テイラー展開する次数が全然足りてないよ.
327デフォルトの名無しさん:2009/02/19(木) 20:06:37
ふつうのマクローリン展開だと 0 から離れるにつれて誤差が大きくなる。
チェビシェフ多項式による近似なら誤差が均等になるぞ。
328デフォルトの名無しさん:2009/02/20(金) 18:05:50
329デフォルトの名無しさん:2009/02/21(土) 16:40:43
l_∩
330デフォルトの名無しさん:2009/02/21(土) 16:54:42
上の方も、上から近づけるか下から近づけるかで+∞か−∞かの差が出てくるように思うが
∞でまとめちゃっていいのか?
331デフォルトの名無しさん:2009/02/21(土) 17:00:07
>>330
Si = if, Entonces = then なので,上を認めたら下はどうなる?ということ.
上が数学的に正しいかどうかは別問題.
332デフォルトの名無しさん:2009/02/21(土) 21:49:22
偽の命題を仮定すると、すべて命題を肯定的に証明することが・・・。
333デフォルトの名無しさん:2009/02/21(土) 22:05:00
328 で lim の極限がどう約束されてるか分からないので一概に偽の命題とは言えないけどね
334デフォルトの名無しさん:2009/02/22(日) 00:32:55
limではなくてLIMと大文字で書いてあるから主値をとるんだよ

ほかにもlimではなくてl.i.m.というのもあるから紛らわしい
335デフォルトの名無しさん:2009/02/24(火) 11:17:33
>>333
>>328はギャグだろ?
336デフォルトの名無しさん:2009/02/24(火) 23:46:53
ネタにマジレスにマジレスカコワルイ
337デフォルトの名無しさん:2009/03/01(日) 21:39:36
n/0 ってどう表現すべきかな?
大抵 n/1に変えてしまうとかn/0=0と変えてしまうとか小手先な
手段をとってるけど数学的に正しい解釈ならどうすべきだろう?
338デフォルトの名無しさん:2009/03/01(日) 21:46:04
プログラマやめて転職することを勧めます
339デフォルトの名無しさん:2009/03/01(日) 21:47:08
>>337
数学的には Not A Number にするか例外投げるのがが一番正しい気がする。

ただ、計算機上では精度の問題で、
ものすごい小さな数と0が区別つかないんだから、
ものすごい大きな数と無限大を区別しないって方針も
ある意味正しいと思う。
340デフォルトの名無しさん:2009/03/01(日) 21:51:37
>>337
何故 n/0 なんてものが現れて,何のために n/0 を表現したいの?
普通はこういうのは出ないようにできるもんだと思うけど.

どうしても表現しなくちゃいけなくて,なおかつ数学的にも
真っ当なものを求めるなら,wheel というものがある.
ただ,それが目的に適うものかどうかは不明.
341デフォルトの名無しさん:2009/03/01(日) 22:15:16
>>339
なるほどね〜。

>>340
 まぁ、滅多に使うことじゃないんだけど直線型の座標が必要になった時((0,1)から(0,1024)へとか)
とかにちょろっとね。ifで分岐するとパイプラインに影響及ぼしそうで式だけで解決できる良さげな
方法はないかなと。
342デフォルトの名無しさん:2009/03/01(日) 22:22:11
>>341
要するに斉次座標?

斉次座標の場合、実数に±∞相当の元を付け加えた集合と同値とみなせるから、
n/0 は∞扱いでいいと思う。
343デフォルトの名無しさん:2009/03/02(月) 05:47:40
>>341
直線を表現するならプリュッカー座標でしょ.
実数体上なら∪{∞}ともwheelとも同値.
344デフォルトの名無しさん:2009/03/02(月) 22:24:06
>>337
言語の指定も型の指定も無いけど、
標準的な浮動小数点型を持つ言語なら大抵言語レベルで実装されてると思われ。

例えばCならANSIで規格決まってるし、演算も可能。
ttp://docs.sun.com/app/docs/doc/805-7885/6j7dqggbr?l=ja&a=view の極値表現

つか、どう考えても n/0=0 はありえなくね?
パイプライン気にするよりも、実装のマズさを気にするべき。
345デフォルトの名無しさん:2009/03/03(火) 09:44:02
言語で決まってるというより、IEEE754で決まってる。

浮動小数点が数学かというと微妙だが。スレタイ的に。
346デフォルトの名無しさん:2009/03/03(火) 22:09:24
まあ、浮動小数点数がそういう挙動するよう定められてるのは、
>>339 が理由だし。
347デフォルトの名無しさん:2009/03/18(水) 10:27:39
光線追跡
とかって何の数学になるんですか?

ライブラリ
もありまつか?
348デフォルトの名無しさん:2009/03/18(水) 11:13:52
幾何光学、は数学じゃないか。
計算幾何学、も数学じゃないな。

まあ数学では幾何学じゃないかな。
349デフォルトの名無しさん:2009/03/18(水) 11:17:56
書き忘れた。

ライブラリは、もっと具体的に何をやりたいかによる。
レイトレとかならグラフィック用のライブラリだし、
レンズ設計ならそれ専用のソフトがある。
350347:2009/03/18(水) 11:22:59
thx!

>レンズ設計ならそれ専用のソフトがある。
こちらが知りたいです。
あるレンズ(レンズは設計しませんがパワー計算みたいな)だと、焦点合うだとか、ボケるだとか。
ボケた画って書けるんでしたっけ?グラフィックライブラリで。
351デフォルトの名無しさん:2009/03/18(水) 11:32:40
レンズ シミュレーション、で検索してみたら?
352347:2009/03/18(水) 11:42:21
ググルワード分かりマスタthx!

シミュレーション結果が殆どで、ソフトウェアライブラリ探すのは大変そうですえね。
353デフォルトの名無しさん:2009/03/18(水) 12:11:42
もしかしたらグラフィック側かな。
物理レンダラにはレンズ特性もシミュレートしてボケとかも表現されるのもあるけど?
354347:2009/03/18(水) 12:16:05
>物理レンダラにはレンズ特性もシミュレートしてボケとかも表現されるのもある

ちょー興味あります。
355デフォルトの名無しさん:2009/03/18(水) 13:58:57
重いコンダラ
356デフォルトの名無しさん:2009/03/18(水) 14:19:24
Maxwell Render
つーかそろそろスレ違いっぽいな。
357デフォルトの名無しさん:2009/03/18(水) 14:59:27
y = Math.exp( - 0.5 / a) / (Math.sqrt(Math.PI * 2 * a));
これをa=の形にしたいんですが、どうやっても出来ません。。。

y * Math.sqrt(Math.PI * 2) = Math.exp( - 0.5 / a) / Math.sqrt(a);
Math.sqrt(a) * ( - 0.5) * (1/ a) = Math.log(my * Math.sqrt(Math.PI * 2));

こんな感じで変形してるんですが、ここで行き詰まってしまいました。
どなたかヒントだけでもいただけないでしょうか(;´Д`)
358デフォルトの名無しさん:2009/03/18(水) 15:01:13
>>357
数学板で聞け
359デフォルトの名無しさん:2009/03/18(水) 15:08:58
>>357
初等関数では表せない。
LambertのW関数を用いれば書ける。
360デフォルトの名無しさん:2009/03/18(水) 15:31:17
>>359
その方向で調べてみます。
ありがとうございます!
361デフォルトの名無しさん:2009/03/18(水) 17:31:57
a = ( -.5 / log( y * sqrt( PI * 2 ) ) ) ^ 2
数学よくわかんないけど、これじゃダメポ?
362デフォルトの名無しさん:2009/03/19(木) 04:26:24
>>361
なんか変形間違えてる
363デフォルトの名無しさん:2009/03/19(木) 05:43:33
そうかなあ
364デフォルトの名無しさん:2009/03/19(木) 06:50:38
>>363
もとの式を間違えてるんじゃないかしら.
一応式変形を書いておくと,分母払って
 y √(2πa) = exp(-1/2a)
両辺2乗して
 2πay^2 = exp(-1/a)
両辺 -a で割って
 -2πy^2 = -1/a exp(-1/a)
これを -1/a について解くと
 -1/a = W(-2πy^2)
となる.ここで W は x exp(x) の逆関数(LambertのW関数).
LambertのW関数は初等関数で書けないことが知られている.
365デフォルトの名無しさん:2009/03/19(木) 07:39:27
>>364
やっぱダメか。
wikipediaにソースコードあるしW関数とやらの実装自体は難しくないっぽいね。

ちなみに363は俺じゃないよ。
366デフォルトの名無しさん:2009/03/21(土) 03:19:59
【教育】マイクロソフト、数学学習支援ソフト「Math」日本語版を初発売・・・テスト問題、論文作成なども可能
http://tsushima.2ch.net/test/read.cgi/newsplus/1237518336/
367デフォルトの名無しさん:2009/04/15(水) 16:54:50
角速度を積分して、角度を得るにはどうすればいいですか?

微分方程式↓のオイラー法がうまくいかない・・
[角速度] = f( 時間, 角度 )
368デフォルトの名無しさん:2009/04/15(水) 21:41:49
時間で積分すればええんでないのん?
369デフォルトの名無しさん:2009/04/15(水) 22:21:40
>>367
こっちではオイラー法でうまくいってるよ。
君のプログラムの問題じゃないのかい?
370デフォルトの名無しさん:2009/04/16(木) 08:55:37
>>368-369
元ソースは、参考書のサンプルプログラムになるので、出せませんが、
微分方程式は、正しくは以下のようになります。

[ 角度の微分, 角速度の微分, 位置の微分, 速度の微分 ] = f( t, 角度, 角速度, 位置, 速度 )

角度は、オイラー角YZYの列ベクトル -> [ オイラ−角Y, オイラー角Z, オイラー角Y]T (ラジアン)
角速度は、角速度Ωの列ベクトル -> [ Ωx, Ωy, Ωz ]T (ラジアン)

これを、数値計算ソフトのソルバ(ode45)で解くと正しく計算されるのですが、
自作のオイラー法のソルバや、googleで探してきた他の人のソルバ(ode1)だと、
発散?してしまいます。
ode45では正しく計算できていることからf()自体に問題はないと思います。
このf()から得た、角度の微分値を積分する計算に誤りがあるのかな?と思いまして。。
積分は以下の通りですが、ラジアンにこんな計算していいんですかね?
次の角度 = 前の角度 + 角度の微分 x delta時間


371デフォルトの名無しさん:2009/04/16(木) 09:49:02
>>370
ソルバが正しく解くのに自前実装で動かないってのは。
それこそあんたの実装がまずいんでしょ。
そんなもの,ソースコード見ずに答えられるわけが無い。
372デフォルトの名無しさん:2009/04/16(木) 16:53:21
>>370
どう考えてもお前のバグだろ
ソース出さないならこれ以上質問するだけ無駄、自力でなんとかするか諦めろ
373デフォルトの名無しさん:2009/04/17(金) 17:49:09
このスレって当たり判定とかってのはスレ違いかな?
ループや分岐をガリガリ書く様なダサいのじゃなく
幾何計算によるスマートな判定法が無いか知りたいんだけど。
374デフォルトの名無しさん:2009/04/17(金) 18:13:42
Real time Collision Detection嫁
375デフォルトの名無しさん:2009/04/17(金) 22:55:39
日本語訳版もでてる
邦題:ゲームプログラミングのためのリアルタイム衝突判定
376デフォルトの名無しさん:2009/04/19(日) 11:36:56
>>370-372
ステップ幅がクーラン条件を満たしてないと考えるのが第一じゃない?
377デフォルトの名無しさん:2009/04/19(日) 12:08:20
>>376
そもそも完全に間違ってることを疑うのが第一だと思う。
ただ何を疑っても結局情報不足で、あてずっぽうにしかならない。
378デフォルトの名無しさん:2009/05/06(水) 00:38:41
スペアナを作りたいので教えてください。
↓のfft関数を使いたいのですが
引数に何を与えればよいのかわかりません。
http://www.softist.com/programming/fft/fft.htm

データはコンデンサマイクからAD変換したデータを
使いたいのですがarとaiがありなぜ2つあるのかわかりません。
よろしくお願いします。
379デフォルトの名無しさん:2009/05/06(水) 10:21:17
結論だけ言うと実数部にAD変換データ、虚数部に0
出てきた結果の頭半分だけ利用
ttp://www009.upp.so-net.ne.jp/hachinami/note004/index.htm

ただ、何も分かってないようなので、本屋か図書館で簡単なフーリエ変換の本を読むことを奨める
380デフォルトの名無しさん:2009/05/06(水) 10:39:34
>>379
おおおぉぉぉ!!
ありがとうございます。
ちょっとできそうな気がしてきました。
381デフォルトの名無しさん:2009/05/06(水) 11:06:47
うぉおおお!!
それっぽい値出てきましたー

#define FFT_SIZE 128

double ar[FFT_SIZE];
double ai[FFT_SIZE];
double theta;

void setup(){
  Serial.begin(9600);
}
void loop(){
  for (int i=0; i<FFT_SIZE; i++) {
    ar[i] = sin(i);
    ai[i] = 0;
  }
  theta = -8 * atan(1.0) / FFT_SIZE;
  fft(FFT_SIZE, theta, ar, ai);    
  for (int i=0; i<(FFT_SIZE/2); i++) {
    Serial.print(ar[i]*ar[i]+ai[i]*ai[i]);
    Serial.println("");
  }
  Serial.println("");
  delay(1000);
}
382デフォルトの名無しさん:2009/05/10(日) 16:23:41
こやつめw
383デフォルトの名無しさん:2009/05/15(金) 09:40:46
re:378
スペアナなら、簡単に作られます。
#define FFT_SIZE 1024
double ar[FFT_SIZE];
double ai[FFT_SIZE];

void スペアナ()
{
//データ準備
ar ← データを入れる
  ai ← 全部ゼロ

//計算
double theta = -8 * atan(1.0) / FFT_SIZE;
fft(FFT_SIZE, theta, ar, ai);

//結果
  周波数成分(i) = sqrt(ar(i)^2 + ai(i)^2);
位相(i) = atan(ai / ar)

//表示

}

http://www.softist.com/programming/fft/fft.htm
384デフォルトの名無しさん:2009/05/27(水) 16:21:20
連立方程式の反復法による解法で
ガウスザイデル法は、解(Ax = b の x)を持ちまわる為、
前回の解と次回の解を必要とするヤコビ法に比べ、
メモリ効率が良いということですが、
実際に作ってみると、ガウスザイデル法でも
解の収束判定の為、前回の解を保持しておく必要があり
メモリ効率は変わらないように見えます。
何か別によい方法があるのでしょうか?

収束判定値は以下のように作ってます。
e = abs(next_solution - prev_solution).sum() / abs(next_solution).sum();
385384:2009/05/27(水) 16:30:20
アルゴリズムを見直して、前回の解を保持しなくても
よいことがわかりました。
スレ汚しすみません。
もうちょっと考えてから、書き込めばよかった。。
386デフォルトの名無しさん:2009/05/30(土) 14:22:05
Maximaで、以下のような式があったとき

A : [ax,ay,az];
B : [bx,by,bz];
E : ax * bx + ay * by + az * bz;

Eを、A . Bに変形させることは可能でしょうか?
387386:2009/05/30(土) 14:28:20
誤 B : [bx,by,bz];
正 B : transpose( [bx,by,bz] );
388デフォルトの名無しさん:2009/05/31(日) 20:22:31
>>386
スレ違い。ソフトウェアの使い方は別のところでどうぞ。
389デフォルトの名無しさん:2009/06/21(日) 21:50:52
プログラミングのための線形代数って本読んでる。
しかし、線形代数がどうプログラミングに役立つのかいまだにイメージできない。
誰か力説してくれ
390デフォルトの名無しさん:2009/06/21(日) 22:07:19
>>389
分野によるとしか言いようがない。
3Dがらみとか数値計算とかやると必要だけど。
391デフォルトの名無しさん:2009/06/21(日) 22:08:19
springerから出版されるジャーナル
平易に読みこなすための数学の本教えて
392デフォルトの名無しさん:2009/06/21(日) 22:14:47
>>391
Springer出版のジャーナルなんて山ほどあるし、
全部平易に読みこなすことなんて数学の専門家でも無理。
393デフォルトの名無しさん:2009/06/21(日) 22:18:11
>>392
じゃあPGが使う範囲のレベルでいいのでなんかないですか?
394デフォルトの名無しさん:2009/06/21(日) 22:52:40
>>393
プログラマにもいろんなジャンルの人がいるから一概には言えない。
全部をカバーしようとしたらやっぱり無理。

専門分野を指定してくれれば、分かる範囲で答えるよ。
395デフォルトの名無しさん:2009/06/21(日) 23:06:58
>>394
グラフ理論と
記号論

あと最近の流行の数学ってありますかね?
396デフォルトの名無しさん:2009/06/21(日) 23:12:26
けんろん
397デフォルトの名無しさん:2009/06/21(日) 23:18:14
圏論やるのに、必要な前提知識って何でしょう?
398デフォルトの名無しさん:2009/06/21(日) 23:18:36
>>397
けいおん
399デフォルトの名無しさん:2009/06/21(日) 23:48:45
公理的集合論とかかなぁ<圏論やる前に必要な知識。
400デフォルトの名無しさん:2009/06/22(月) 00:28:51
1=真 0=偽
401デフォルトの名無しさん:2009/06/22(月) 07:24:59
>>395
グラフ理論だったらディーステル:グラフ理論が全般的な基礎知識で,
アルゴリズムはSchrijver:Combintorial Optimizationの該当章を読めばほぼOK.
最近流行のグラフマイナーに関してはまだ良い教科書が無いので
Robertson-Seymour-Thomasの論文にいくらか目を通せば十分.

圏論はAsperti-LongoのCategories Types and Structuresを読めば
プログラマだったら大体大丈夫.著者ページから全文落とせるのも高評価.
Excercisesでたまに代数・幾何の知識が必要になるけど飛ばしてよい.
突っ込んだことをやるならマックレーン:圏論の基礎を読むことになるけど,
こっちは代数・幾何の知識が無いと楽しめない.

記号論は知らない.ググったら言語学とか出てきたけど?
402デフォルトの名無しさん:2009/06/22(月) 08:06:52
記号論理、のtypoじゃないかな、記号論は。
403デフォルトの名無しさん:2009/06/23(火) 00:43:43
>>401
ところで数学って自習したとき
何がわかると理解できたことになるの?

プログラムはかけなきゃクズだろで済むけど
404デフォルトの名無しさん:2009/06/23(火) 09:04:50
無知の知
何がわからないかってことがわかっただけでも儲けもの
理解できた!!なんて思うことすら驕りだと思う
現実的問題としては演習問題がさっと解けるぐらいなら次に進んでもいい
405デフォルトの名無しさん:2009/06/23(火) 19:42:40
それなりのレベルの数学の本で演習がさっと解けるってかなりの力量だと思う。
大体本文で書けなかったものを演習にまわしているという事情があるし。
406デフォルトの名無しさん:2009/06/23(火) 19:45:35
じゃ、わからなくても何がわからないのかがわかってれば進んでおkで
407デフォルトの名無しさん:2009/06/23(火) 23:33:49
>>401
とりあえずグラフ理論は
http://www.math.uni-hamburg.de/home/diestel/books/graph.theory/GraphTheoryIII.counted.pdf
見て勉強してみます。

408デフォルトの名無しさん:2009/06/26(金) 00:59:24
>>403
・問題が解けること
・定義や定理のステートメントがすらすら言えること
・定理の証明の大筋と、核心部の詳細が言えること

しかし自分の誤りに全く気づかないことも往々にしてあるから、
できればいずれも高段者に判定してもらうことが望ましい。
409デフォルトの名無しさん:2009/07/09(木) 01:57:17
http://www5.airnet.ne.jp/tomy/cpro/sslib8.htm
この fft1 関数の ar[] に for (i=0; i<n;i++) ar[i]=20 * sin(2*PI*i/n) な配列を、ai[] には全てゼロを入れたとき、
関数実行後には ar[1] には 20 が、それ以外の ar[?] と ai[] には全て 0 が入っている事を期待していたのですが、

ar[1] には万単位の数値が入ってしまいます。
なぜ20にならないのでしょう? そもそも関数の機能を思い違えてる?
410デフォルトの名無しさん:2009/07/09(木) 04:02:44
呼び出し例 (flag : 0 fft, 1 : inverse-fft) と書いてあるが多分逆、逆変換の時に後処理が不要なはず
cosの係数の半分の値が実数成分、同様にsinが虚数成分だから、周期ずらしてないsinじゃarは空だと思うが?
で、ai[1]に入るべき値は10、後はほぼ0で埋まると思われ
411デフォルトの名無しさん:2009/07/09(木) 14:48:35
.....え!

このFFTフラグ逆なんですか???
てことは、波形からsin, cos成分を得たいときは flag = 1 にするってことですよね
412デフォルトの名無しさん:2009/09/17(木) 22:53:30
ああ、そうか
中坊はここに来るべきではないんだ
413デフォルトの名無しさん:2009/10/12(月) 16:24:13
離散数学は必須
414デフォルトの名無しさん:2009/10/25(日) 21:24:44
Excel にBETADIST 関数という累積β確立密度関数というものがあるのですが
ttp://excel.onushi.com/function/betadist.htm
x AからBの範囲で評価する瞬間を指定
α 確立分布に対するパラメーターを指定
β 確立分布に対するパラメーターを指定
A xの区間の下限を指定。省略可能
B xの区間の上限を指定。省略可能
これらのパラメータを求める公式及び、それらによって得られるBETADIST 関数の数式を教えてもらえないでしょうか。
415デフォルトの名無しさん:2009/12/08(火) 20:24:05
あげ
416デフォルトの名無しさん:2009/12/08(火) 20:56:48
417デフォルトの名無しさん:2009/12/17(木) 21:21:03
log2( 1 ) + log2( 2 ) + ... + log2( n );

double getSum( int n )
{
  double sum = 0;
  for (int i=1; i<=n; i++) {
    sum += log2( i );
  }
  return sum;
}

こんな計算をしたいのですが
速くする方法とかってないでしょうか?
積分で近似値を得るという選択肢もあるのですが…
418デフォルトの名無しさん:2009/12/17(木) 21:28:47
暇な時に計算して配列に格納しておく
メモリがバカにならないなら一定の間隔おきにとったnに対してでもいい
419デフォルトの名無しさん:2009/12/17(木) 21:30:27
一定のっていうのは語弊があったな
nの出現頻度などに応じてもっとも効率的な間隔で
420デフォルトの名無しさん:2009/12/17(木) 21:49:21
俺初心者だけど、
対数関数→加算→対数関数→加算→…
より
乗算→乗算→…→乗算→対数関数→加算→乗算→乗算→…乗算→対数関数→加算→…
の方が対数関数使用回数が減るため速くなるんじゃないかな? かな?
log2(x)+log2(x+1)+…+log2(x+k-1)
=log2(x*(x+1)*…*(x+k-1))
みたいな感じ。
421デフォルトの名無しさん:2009/12/17(木) 22:23:13
log2(1 * 2 * ... * n) を計算するほうがきっと早いよな。
422デフォルトの名無しさん:2009/12/17(木) 22:24:16
>>420
確実にその方が早いと思う。
精度の問題出そうな気もするけど。
423デフォルトの名無しさん:2009/12/17(木) 22:25:24
>>422
doubleなら問題ない
424デフォルトの名無しさん:2009/12/17(木) 22:30:50
やってみた。
精度的には平気だけど、double だと n =172 でオーバーフローするな。
425デフォルトの名無しさん:2009/12/17(木) 22:35:07
てか、n = 10万でも、 sum += log2(i) 方式の実行時間、0.1 秒かからないんだけど。
何を早くする必要あるの?
426デフォルトの名無しさん:2009/12/17(木) 22:38:51
>>417
nが非常に大きいなら、
getSum(n) = (n+1/2)*log2(n) + 1/2*log2(2*PI)+log(2)
427デフォルトの名無しさん:2009/12/17(木) 22:41:16
>>425
0.1秒ってけっこうな時間だぞ
何のための処理かにもよるけど

動画なら確実に駒落ちとか音飛び
キー入力ならもたつきとか取りこぼし
428デフォルトの名無しさん:2009/12/17(木) 23:02:36
偶数は因数分解すりゃ n / 2 + log2(n / 2) だから、

int n2 = n / 2;
return n2 + getSum(n2) + getSumOfOdd(n);

みたいなコード書いてみたけど、普通にやるのと大差なかった。
てか、並列処理とか入れてみたら普通にやった方が速くなった。
429デフォルトの名無しさん:2009/12/17(木) 23:03:20
1行目変だな。
偶数の log2 の和は、n / 2 + getSum(n / 2)
430デフォルトの名無しさん:2009/12/18(金) 00:26:46
>>421ってlgamma(n) / log(2)で計算できるよね?
log2があるんだったらlgammaもあるはず。
でもこっちのほうが遅いかな?
431デフォルトの名無しさん:2009/12/18(金) 00:46:47
>>430
lgamma(n) / log(2) も今ちょっと試してみた。
けた違いに(3ケタくらい)早いけど、精度4〜6ケタくらいしか出ない。
432デフォルトの名無しさん:2009/12/18(金) 00:48:25
使ったライブラリが精度低いだけかもしれないけども。
433デフォルトの名無しさん:2009/12/18(金) 01:27:17
>>430
lgammaなんてあるのか…しらんかった。
434デフォルトの名無しさん:2009/12/18(金) 02:14:25
ごめんlgamma(n + 1) / log(2)だったね。

話は変わるけど単純にfrexp使ってみたやつ。417より少しは速いけど、lgammaには到底かなわない。
double getSum3(int n)
{
double m = 1.;
int sum = 0;
for (int i = 1; i <= n; ++i)
{
int e;
m *= frexp((double)i, &e);
sum += e;
if (m <= 1e-300)
{
int f;
m = frexp(m, &f);
sum += f;
}
}
return sum + log2(m);
}
435417:2009/12/18(金) 13:44:21
>>417です。
レスが意外と多くて驚きでした。

>>418,419
nが小さくてかつ何度も呼ばれるならそれが良さそうですね。

>>420
32個ずつまとめて計算したところ20倍近く高速化しました。

>>421
まさにその通りです。

>>425
これを数万の配列に対して実行するのです。

>>426
最初何のことか分かりませんでした。
いろいろ調べてから意味が分かりました。

>>430
lgammaというのを知りませんでした。

続きます
436417:2009/12/18(金) 13:48:45
いろいろ調べたところ
スターリングの近似公式
n! = √2π * n^( n + 1/2 ) * e^( -1 )
というものをwikipediaで発見したため
実装してみたところ十分な精度が得られました。

log2( 1 ) + log2( 2 ) + ... + log2( n )
  = log2( 1 * 2 * ... * n )
  = log2( n! )
  = log2( √2π * n^( n + 1/2 ) * e^( -1 ) )
  = log2( √2π ) + ( n + 1/2 )log2( n ) - n * log2( e )

double getSumApprox( unsigned n )
{
 const double PI = 3.141592653589793238462643383279;
 const double E = 2.718281828459045235360287471352;
 double s1 = log2( sqrt( 2 * PI ) );
 double s2 = ( n + 0.5 ) * log2( n );
 double s3 = ( -1. * n ) * log2( E );
 return s1 + s2 + s3;
}

>>426さんの方法がこれだったんですね。

みなさんありがとうございました。
437417:2009/12/18(金) 17:48:16
見直してみたら一部書き間違えてました。
e^(-1)でなくてe^(-n)です。
関数の方は合ってます。

n! = √2π * n^( n + 1/2 ) * e^( -n )

log2( 1 ) + log2( 2 ) + ... + log2( n )
  = log2( 1 * 2 * ... * n )
  = log2( n! )
  = log2( √2π * n^( n + 1/2 ) * e^( -n ) )
  = log2( √2π ) + ( n + 1/2 ) * log2( n ) - n * log2( e )
438デフォルトの名無しさん:2009/12/19(土) 02:05:01
トランプの数字1-13を全部足すと91
4スーツあるので91x4=364
jokerを足して365または366
これは一年の日数を表している
439デフォルトの名無しさん:2009/12/19(土) 03:47:16
誤爆か。
440デフォルトの名無しさん:2010/03/23(火) 23:09:52
age
441デフォルトの名無しさん:2010/04/15(木) 16:16:54
>>436
s1やlog2(e)を定数にしたらもそっと早くなった。
--
static double getSumApprox(unsigned n)
{
const double s1 = 1.3257480647361592485;
double dn = (double) n;
double s2 = (dn + 0.5) * log2(dn);
double s3 = -dn * M_LOG2E;
return s1 + s2 + s3;
}
--
これでlog()の呼び出しはlog2()内部の一回だけだ。
442デフォルトの名無しさん:2010/04/24(土) 16:05:09
正式な職業プログラマじゃないのですが、(土日プログラマ、どちらかと言うと文系)
手元にある論文に載っている数式を実際に実行したい。
実際の数式(limとか、dtとか、ロシア文字みたいな謎の記号)とプログラム言語での対応表みたいな本とか無いでしょうか?
私はあまり数学が得意ではないのですが、Cとawk,簡単なperlの文法はわかります。
一応、数式の記号の意味さえわかれば、そこからは自分でもなんとかなるのですが
443デフォルトの名無しさん:2010/04/24(土) 16:09:04
limとかdtとかプログラミングで使うには
Mathematicaが必要だぞ・・・
444デフォルトの名無しさん:2010/04/24(土) 16:33:53
>>442
やりたい事はmaximaで出来ない?
http://maxima.sourceforge.net/

無限が絡む操作は普通のプログラミング言語だと表現出来ないから
擬似的な処理になると思うけど。
それでいいってんなら、数値計算に関する本とかには色々書いてあると思うよ。
大抵はCで書かれてると思うけど、アルゴリズムの参考にはなるんでないの。
445デフォルトの名無しさん:2010/04/24(土) 17:59:25
機能してるスレをやっとみつけた・・・・

ビリヤードのような玉の衝突処理についてここで相談してもいいですかね?
446デフォルトの名無しさん:2010/04/24(土) 18:01:44
ok
447デフォルトの名無しさん:2010/04/24(土) 18:08:02
とりあえず先んじて参考資料

ttp://marupeke296.com/COL_MV_No1_HowToCalcVelocity.html
448445:2010/04/24(土) 18:09:02
http://hakuhin.jp/as/collide.html#COLLIDE_00
ここの「円同士の衝突を計算する」サンプルをなるべく原型をとどめたままC#に移植して
一応それっぽく動いてるんですが動作テストをしてると時々変は挙動をします。
(落下ベクトルが入ってる方を改造してます。落下ベクトルが無い方は開けませんでしたorz)

分かってる挙動
・初期のランダムにおいてベクトルがxyともに0,0の場合単なる障害物化する
・移動してる玉が特定条件?でぶつかった際はベクトルの合成がおかしいのか変な方向へ移動する。
449デフォルトの名無しさん:2010/04/24(土) 18:09:08
18歳未満はお断りです
450デフォルトの名無しさん:2010/04/24(土) 18:10:51
どうせ浮動小数点数の計算誤差しらずにプログラム書いちゃってるんだろう
451445:2010/04/24(土) 18:14:44
移動関連はすべてdoubleでやってます

初期のランダムだけintで決定してますが
>・初期のランダムにおいてベクトルがxyともに0,0の場合単なる障害物化する
これが起きるということは移植したロジックだと手玉以外は静止している
ビリヤードを作ることができないということになるのですがどの辺をいじればいいのかよくわからなかったので・・・
452445:2010/04/24(土) 18:18:32
プロジェクト一式+バイナリ
http://www1.axfc.net/uploader/Sc/so/106542.zip

FPSを少なめにしてありますので付属のexeはもっさりにみえます
453445:2010/04/24(土) 18:29:09
FPSを変える場合はProgram.csの下記行の分母の数字をいじってください。

float wait = 1000f / 10f;
454デフォルトの名無しさん:2010/04/24(土) 18:51:32
で、どうしてほしいの?
1.丸投げでバグを取ってください
2.手取り足取り教えてください
3.ヒントだけでもお願いします
455デフォルトの名無しさん:2010/04/24(土) 18:52:34
>>445
衝突って双方の関係を制御するはずなのに 初期速度が0の場合障害物化するってのはどこか間違ってる
質量が勘案されていないかエネルギーが交換されていないかどっちかじゃないの?

#コードは読んでないのでその点を具体的に詩的はできないのがカナシイ
456デフォルトの名無しさん:2010/04/24(土) 19:11:02
>>454
3でお願いします。

>>455
ウインドウの中を左クリックすると玉の初期化を行うので
なんどかトライしていただくと障害物化する玉がかなりの再現度で現れると思います。
457デフォルトの名無しさん:2010/04/24(土) 19:14:19
何も見てないけど、綺麗な方向を向いた時に障害物化するというのは
多体でものを考えない近似を行った結果、
色んな力が釣り合っちゃってんじゃないかな
458デフォルトの名無しさん:2010/04/24(土) 19:19:37

こちらが玉の移動処理
http://ideone.com/ldtm5

その後の当たり判定処理
http://ideone.com/ZbZFG
↑ところどころスコープをわざと作ったのはASだと同じスコープであっても新たに
宣言した変数が優先されるような仕様?だったので
459デフォルトの名無しさん:2010/04/24(土) 22:05:02
参考にしたASをいじったところ元のコード自体が
ベクトルが0だった場合のことを考慮に入れてないコードのようでした・・・

こちらで改造したAS
・0番のオブジェクトのベクトルを0にした
・自由落下のサンプルしか開けなかったのでそれをビリヤード風になるように改造
http://ideone.com/RZXTO

改造したコードを実行できるようにしてみた
http://www1.axfc.net/uploader/Sc/so/106689.swf
460442:2010/04/24(土) 23:36:47
>>444
えっと、あの、なんというか凄い本格的なソフトです。ありがとうございます。
その、自分で個人的に使うスクリプトもどきに組み込みたかったのですが、
なんか学術用語?みたいな(少なくても私は習ったかもしれないけど忘れた)数式の記号の意味が不明だったもので、
例として(記号は意味を知っているやつだけど)、Mを横倒しにした
Σn,m f()

for(i=n,i<=m,i++){ ans+=f() }; に対応している、みたいな感じで、
学の無い人間にもわかる数式の読み方の解説の資料とか紹介して頂けるとたすかるのですが……無理でしょうか?
461デフォルトの名無しさん:2010/04/24(土) 23:50:55
>>460
>数式の読み方の解説の資料
それには数学の本が適切なんじゃないの?
あとその分野のwikipediaとか
ギリシャ文字あたりが読めれば読み方は大抵大丈夫だと思うけど。

計算のアルゴリズムが実装してみたいってんなら、一応
Numerical Recipes In C
っつー本がある
http://www.amazon.co.jp/dp/4874085601

何がやりたいのか、今一よく分からないんだが、これでいいか?
462デフォルトの名無しさん:2010/04/25(日) 02:44:38
>>460
>例として(記号は意味を知っているやつだけど)、Mを横倒しにした
>Σn,m f()
>は
>for(i=n,i<=m,i++){ ans+=f() }; に対応している、みたいな感じで、
>学の無い人間にもわかる数式の読み方の解説の資料とか紹介して頂けるとたすかるのですが……無理でしょうか?

それ対応してる訳じゃないから

っつーか中学生かおまえは
463デフォルトの名無しさん:2010/04/25(日) 04:10:03
高校数学を先生から教えてもらいなさい。
464デフォルトの名無しさん:2010/04/25(日) 06:33:15
>>460
貴方の悩みは、
プログラミングの知識とは無関係。
簡単な奴でいいから高校数学の参考書でもざっと眺めれば解決する問題。
465デフォルトの名無しさん:2010/04/25(日) 10:06:18
Numerical Recipes in C でも読んどけ
466デフォルトの名無しさん:2010/04/25(日) 14:41:12
467デフォルトの名無しさん:2010/04/25(日) 15:27:05
別に炎上しているようには見えないが。
468デフォルトの名無しさん:2010/04/25(日) 15:38:47
炎上させたいってことじゃね。
まあ、良く見かける勘違いだよな。

「1/10が2進数だと無限小数になる」ってのを拡大解釈してくとこうなるんだろう…。
469デフォルトの名無しさん:2010/04/25(日) 16:04:11
10進のCPUが出来ても
1/3は解決しないのに
馬鹿じゃね?
470デフォルトの名無しさん:2010/04/25(日) 16:18:05
有理数演算を実装すればいいんじゃね
471デフォルトの名無しさん:2010/04/25(日) 16:22:27
無理数があるから、最終的には記号処理をやる羽目になるな。
472デフォルトの名無しさん:2010/04/25(日) 16:25:45
Mathematica最強ということで
473デフォルトの名無しさん:2010/04/25(日) 16:28:42
マスターマインドというゲームがあります
4つの中身が不明な箱と
そのなかに4色のボールが入っていて
(同じ色は何度でも使えます)
中身を知らない方の人が4つ箱に入っているボールの色を予想して
中身を知っている方の人が
1.色だけがあっている数
2.色と場所があっている数
を教えます(ウソはつかないものとします)
正解を出すのに最低何回質問をすればよいでしょうか?
474デフォルトの名無しさん:2010/04/25(日) 16:32:10
>>471
結局>>460の望んでいたものに
475デフォルトの名無しさん:2010/04/25(日) 16:37:38
宿題は自分でやりましょう
476デフォルトの名無しさん:2010/04/25(日) 17:20:18
最低回数は1回だろ。

最も賢明に予想を繰り返した場合の最悪の試行数を知りたい
んではないだろうか。

477デフォルトの名無しさん:2010/04/25(日) 19:35:27
最近打ち合わせでは分かり切ったことは飛ばして話を進めているのに
知識として持っててあたりまえのことを質問する馬鹿が増えた
478デフォルトの名無しさん:2010/04/25(日) 19:52:05
数学ではそれは認められないんだな
問題文には曖昧さが混入してはいけない
479デフォルトの名無しさん:2010/04/25(日) 19:54:45
> 知識として持っててあたりまえのこと

って具体的にどの程度のことを指してるんだか。義務教育程度?大学の学部卒程度?
480デフォルトの名無しさん:2010/04/25(日) 21:21:42
>>476
そうです
それです

481デフォルトの名無しさん:2010/04/25(日) 21:23:00
>>473
ちなみに途中で矛盾が出てくるなどして
相手がウソを吐いていることが分かったときは
そのまま続行?それとも一旦リセット?
482デフォルトの名無しさん:2010/04/25(日) 21:39:32
>>473
1.色だけがあっている数
2.色と場所があっている数
中身を知っている方が全て赤だったとして
その場合、中身を知らない方が赤1つ指定した場合は、何て答えるの?
同様に、赤2つ指定した場合は、何て答えるの?
483デフォルトの名無しさん:2010/04/25(日) 22:52:42
基本的には一度に4つの色を指定しますので
そのうちの一つが赤(最初の文)または二つが赤(後の文)
だったと仮定して回答します

中身を知っている方が全て赤だったとして

中身を知らない方が赤1つ指定した場合は
1.色だけがあっている数 = 0
2.色と場所があっている数 = 1

赤2つ指定した場合は、
1.色だけがあっている数 = 0
2.色と場所があっている数 = 2

でいいとおもいます
484442:2010/04/25(日) 23:32:56
わかり辛くてごめんなさい、その、私は数学に疎いので、
(凄く大雑把に言えば)一般的な数式を見せられても意味がわからないんです orz
逆に、Cコードとかの方が判りやすいぐらいで。
それで、最近凄く面白そうな計算式があったのですが、 pseudocodeではなくて、一般的な学校の教科で使われる
数式みたいなので書かれていまして、それで使われている記号が意味不明で、wikiとか読んだんですが
当然プログラミング言語なんかでは書かれていないので、もう意味不明で。
要約すると、"一般的な数式をプログラム言語で解説して欲しい"と、いうアホな質問なんです。
できればこの後も自分で調べることができるように、本とか、なんか纏まった資料だと助かるのですが…

あと、本を紹介して頂きありがとうございます。ただ、あまり初心者に勧める本には見えないのですが…
(numerical Recipies in C)の評判が海外では(大まかに和訳したかんじでは)
>入門書としてはお勧め出来ない、特にチャプター14付近の間違いが最新版でも訂正されていない。
>読んだ初心者が、わかったつもりになるが、実際は間違った方向に理解させている
>グラフに表示されてる数字は本に書かれたコードによるものではない
>コードだけならGNU Scientific Libraryをつかえ

485デフォルトの名無しさん:2010/04/25(日) 23:49:25
まあNRiCはバグも多いしな
しかし、数学に疎いと言われても、
数学をそのままプログラムに落とせるようなものはそうそうないぞ
486デフォルトの名無しさん:2010/04/25(日) 23:51:50
>>484
なおさら高校数学の本を読んだ方がいいと思うけど…
計算機上では無限操作が必要な計算式は代数的機械的(もしくは有限精度)に処理されてるけど、
本来は無限小無限大とかを理解して式を読み解くべきものだと思う。
"一般的な数式をプログラム言語で解説して欲しい"
って言っても、その計算プログラム自体が一般的な数学をベースにしてるものだからなぁ…

数学板に行って質問した方がいいんでないの?

俺のおすすめは高校黄チャートIA・2・Bの例題全解き
487デフォルトの名無しさん:2010/04/26(月) 00:07:19
>>484
学問に近道などない
頑張りなさい。
488デフォルトの名無しさん:2010/04/26(月) 00:10:18
>>484
どんな数式か気になる
489442:2010/04/26(月) 00:19:59
わかりました。その、色々とお世話になりました。数学板で聞いてみます。
数式を完璧に理解したいわけではないんです(元々どんな処理がされているのか理解できないので)
高校のころは、単に文字列として、たとえば、(a+b)^2は a2 + 2ab + b2みたいに、決まった(知っている)形があれは
それを対応する文に文字を動かす、後は電卓のボタンを押して入れて、出てきた答えを書く、みたいなことしか出来なかったので。
490デフォルトの名無しさん:2010/04/26(月) 10:31:46
>>466
Shiroって人がコメントしていることが全て。10進数に囚われているのは間抜け。
ついでにいえば、10進演算用トランジスタなんてものを妄想するのは高校物理も判っていない馬鹿。
491デフォルトの名無しさん:2010/04/26(月) 12:08:26
COBOLとかに10進型があるように、10進の計算が重用される用途はある。
それで全ての問題が解決するかのように思ってるのは変だが。

10進演算用トランジスタは少々マヌケだが、初期のコンピュータには
10進方式のものもいくつかあったよ。かのENIACがそうだし。
キャパシタの容量を使ってアナログ的に10段階の値を表現するレジスタとか、
電話交換機のロータリースイッチを使ったものとか、2 out of 5コードなどによる
ものとか。
492デフォルトの名無しさん:2010/04/26(月) 12:59:29
>>484
数式の意味の説明はプログラム言語でなく日本語でもいいんですよね?
下記の本で数学の文法と和文数訳、数文和訳、数学の作文法を勉強できます。

数学は言葉
http://www.amazon.co.jp/dp/4489020538
493デフォルトの名無しさん:2010/04/26(月) 13:58:05
>>484
その面白そうな式というのが気になるな
494デフォルトの名無しさん:2010/04/26(月) 14:12:59
「数学概論」南部徳盛 著作
近代科学社 刊

(現代数学ゼミナール9)

1989年5月10日初版発行

この本だと、早くコトが出来るよ!
495デフォルトの名無しさん:2010/04/27(火) 01:31:17
>>491
そら10進数で物考える文化が大半なんだから人間にとって重用されるのは当たり前だろ
それが機械にとって向かないと結論付けられたからこそ淘汰されてるわけだが・・・

考え方自体がおかしいのはまぁ置いとくとして、
自分でどうにかしてやろう、という姿勢が全く見られないのが気に入らない
496デフォルトの名無しさん:2010/04/27(火) 07:14:01
まあ表示処理を作るのには便利ではあるだろうな
497デフォルトの名無しさん:2010/04/27(火) 09:23:50
スレ違いだが・・・。
この宇宙で、もっとも効率がいいのは実は、3進法。
自然対数で扱われる、オイラー数、e=2.71828・・・
この値に最も近い「3」がよろしい。
498デフォルトの名無しさん:2010/04/27(火) 09:38:57
スレ違いだが・・・。
この宇宙で、もっとも効率がいいのは実は、e進法
499デフォルトの名無しさん:2010/04/27(火) 14:03:21
それってn個の状態を表現するのにn個の素子を使う(10進数なら10個)場合だよね。
実際の計算機は1つの素子(セル?)で hi と low の2値を表現出来るから
また違う気もする。
500デフォルトの名無しさん:2010/04/27(火) 15:07:17
intelが浮動小数点数の指数部を16進化したら性能が悪くなった話を思い出した…
501デフォルトの名無しさん:2010/04/27(火) 15:27:50
intel?
IBMじゃないか?

IBMがSystem/360で導入した浮動小数点ハードウェアの話じゃないかと。
502デフォルトの名無しさん:2010/04/27(火) 16:18:20
>>499
ハイハイ、常用対数の勉強しましょう!
503デフォルトの名無しさん:2010/04/27(火) 16:21:39
CASL言語が、Uになって、GRの個数倍増・・・。
これじゃあ、ハードウェアのまともな学習できん。
504デフォルトの名無しさん:2010/04/27(火) 16:22:07
今の時代、ハードでやるかソフトでやるかはそれほど重要じゃない
効率的な値(式でもいいけど)の表現方法やアルゴリズムを発明さえすればハードとソフトの差異に意味は無い
505デフォルトの名無しさん:2010/04/27(火) 16:47:58
>>502
勘違いしてるようだけど、499 は単に前提条件を確認しただけでしょ。
497, 498 の事はよく数値計算の教科書に書いてあるけど、
「p進数f桁 p^f 個の数値を表現するのに p f 個の素子を使うとした場合」
という条件が書いてあると思う。
506デフォルトの名無しさん:2010/04/27(火) 17:11:23
>>505
そうです。上手に整理してくれて、さんくす!
507デフォルトの名無しさん:2010/04/27(火) 17:47:22
あの議論での「d進数が効率が良い」って意味は
「基本素子の状態数がdのとき演算回路のサイズが小さくて済む」ってことだから,
基本素子が2状態(hi/low)であることを固定したら
効率に関して全く別の議論が必要になるね.
508デフォルトの名無しさん:2010/04/27(火) 18:44:21
3でも5でも10でもいいけど、量子化する時点で誤差は絶対無くならないし、
>>466の元記事君の悩みは何ら解決されないんだよなぁ
509デフォルトの名無しさん:2010/04/27(火) 18:49:02
ビット演算がし辛いから勘弁
510デフォルトの名無しさん:2010/04/27(火) 19:19:40
3進数の一桁もbitって言うのかな。
ハードの事は分からんけど、論理は真, 偽, and, not で事足りるから
2進でいいかな。
511デフォルトの名無しさん:2010/04/27(火) 19:24:22
>>510に同意かなー

3進数は10が奇数ってのがきもい。ビットシフト考えるとさらにきもい。
真偽判定は2進数で足りるんだから2進でいいじゃん、と思うんだけど。
512デフォルトの名無しさん:2010/04/27(火) 19:53:29
3進数だとtritだよ

2もeの直前の数だからそう効率悪いわけじゃないし、
ビット演算もあるし、素子も作りやすいから、
2進数でいいよ
513デフォルトの名無しさん:2010/04/27(火) 20:03:25
nを表記するのに、n進数を作れば、10と2桁で表現可能だぜ!
514デフォルトの名無しさん:2010/04/27(火) 20:07:03
n+1進数なら1桁で済むだろう常考
515デフォルトの名無しさん:2010/04/27(火) 20:17:37
RS232C とかだと 0V 周辺をわざと除外し、HI を正電圧 LOを負電圧で 表現
OV付近は線が繋がってない(NC: ハイインピーダンス) で一応3値取りうるな
516デフォルトの名無しさん:2010/04/27(火) 20:22:02
なんちゃってRS232Cで負電源に振ってないのはどうするんだ
517デフォルトの名無しさん:2010/04/27(火) 20:44:13
>>504
お前、ポーランド記法、知ってるか?
518デフォルトの名無しさん:2010/04/27(火) 20:45:33
+ 3 4 * + 5 2
519デフォルトの名無しさん:2010/04/27(火) 20:48:47
それおかしくないか
520デフォルトの名無しさん:2010/04/27(火) 20:56:10
定数でなく、変数で書くこと!
521デフォルトの名無しさん:2010/04/27(火) 21:02:37
>>517
たぶんそういう話じゃないと思うよ
522デフォルトの名無しさん:2010/04/27(火) 21:07:07
逆ハンガリアン記法
523デフォルトの名無しさん:2010/04/27(火) 21:07:09
>>521
アセンブラ言語のプログラミング歴は?
524デフォルトの名無しさん:2010/04/27(火) 21:07:37
アセンブラ言語ってなんだよ!
アセンブラかアセンブリ言語にしてくれ
525デフォルトの名無しさん:2010/04/27(火) 21:11:22
そうか、論理和・論理積・シフト命令・・・
この機会に有機的に学習してくれ。
526デフォルトの名無しさん:2010/04/27(火) 21:21:42
>>517
別にポーランド記法でも逆ポーランド記法でも構わんが、どうやって無理数を解決する気だよ?
IEEE754みたいにスマートに処理できんのか?
527デフォルトの名無しさん:2010/04/27(火) 21:29:08
括弧を上手に配置すれば、少しは誤差(丸め誤差・桁落ち・情報落ちなど)を、
小さく出来るんだよ。


X=A+B+C
の場合、Aに比べて、BやCが小さい場合。(ただし、すべて正の時)
X=A+(B+C)
と書けば、誤差は小さくなる。
528デフォルトの名無しさん:2010/04/27(火) 21:33:40
式を式として扱えばいい
Mathematicaみたいに
529デフォルトの名無しさん:2010/04/27(火) 22:07:42
>>442
大分スレが進んでしまったが、数学的記述に対するコード例が知りたいとのことならば、
奥村先生のアルゴリズム事典が良いのではないか。サポートページに行けば、コードサンプルが
ダウンロードできる。書籍中では説明のための断片的コードになっているものもmainメソッド付き
の動かして試せるものになっている。
530デフォルトの名無しさん:2010/04/27(火) 22:18:48
微分積分や線形代数、確率統計・・・。
基礎はきっちりやること。
どんな環境でも、耐えうる力を備え持つこと。
531デフォルトの名無しさん:2010/05/03(月) 09:49:30
天国に行く道と、地獄に行く道・・・このふたつの道があります。

天国に行く道には天使が、地獄に行く道には悪魔が、それぞれ一人ずつ立っています。

天使はウソツキではありませんが、悪魔はウソツキです。
天使・悪魔に、「あなたは天使ですか?」と尋ねれば、ふたりとも、
「はい」と、答えます。

そうして、天使・悪魔とも、外見上は、まったく識別が出来ません。

いま、天国へ行きたいとします。

有名なことですが、質問が、1回だけ許される場合、

「あちらの方に尋ねれば、『この道は天国に行く道です』と、
 お答えになりますか」

と訊けば、良いことが、知られています。
532デフォルトの名無しさん:2010/05/03(月) 10:45:56
そういうのメタ質問って言うんだっけ。
プログラムとどう関係があるのか知らんが。

自然言語処理で質問とメタ質問を分ける処理はあるけど
533デフォルトの名無しさん:2010/05/03(月) 11:01:45
ちょっとした論理の例題だね。
死んであの世に行くのがケネディ、天使がチャーチル、悪魔がヒトラーという
バージョンもある。あと、ウソを言うかホントのことを言うかわからないスターリンが
3人目として加わる(質問は2回許される)バージョンとか。
534デフォルトの名無しさん:2010/05/03(月) 12:04:32
>>531
あなたの巣へ連れて行ってください

で充分な訳だが
535デフォルトの名無しさん:2010/05/03(月) 12:19:27
↑馬鹿
536デフォルトの名無しさん:2010/05/03(月) 14:32:06
↑馬鹿
537デフォルトの名無しさん:2010/05/03(月) 15:31:13
(´・ω・`) nullpo
538デフォルトの名無しさん:2010/05/03(月) 16:09:41
(`・ω・´) 月
539デフォルトの名無しさん:2010/05/06(木) 04:05:58
(´・ω・`) 五月病の季節
540デフォルトの名無しさん:2010/05/06(木) 13:08:11
(´・ω・`)お前ら連休は終わってますわよです。
541デフォルトの名無しさん:2010/05/11(火) 22:27:25
(´・ω・`) それにしても ほんわかできる季節になったね。
542デフォルトの名無しさん:2010/05/13(木) 06:32:06
今日はまださみーよw
543デフォルトの名無しさん:2010/06/28(月) 03:32:24
あげ
544デフォルトの名無しさん:2010/08/09(月) 17:19:53
保守
545デフォルトの名無しさん:2010/12/01(水) 16:46:55
12月あげ
546デフォルトの名無しさん:2010/12/05(日) 17:11:40
3次元上で、任意の単位ベクトルVは単位球の原点からの球面位置を指すと思うのですが
その球面位置Pから半径rの円内(球面上の円)を指すベクトルを計算する方法を教えてください

単位ベクトル位置から任意の半径内で重点的サンプリングをしたいのです
547デフォルトの名無しさん:2010/12/05(日) 17:27:20
点 (cos r)×V を中心として、
半径 sin r の円を描けばいいんじゃね?
(p - (cos r)×V)^2 = sin^2 r
(p - (cos r)×V)・V = 0
を解けばいいのかな。
548デフォルトの名無しさん:2010/12/05(日) 17:47:16
>>547
三角関数に半径rを渡す意味が分からないのですが・・・
549デフォルトの名無しさん:2010/12/05(日) 17:55:37
V×(1,0,0)=A
V×A=B
(B,V,A)を基底とする直交座標系を作って・・・?
550デフォルトの名無しさん:2010/12/05(日) 18:06:01
>>548
ラジアン調べろ。
551デフォルトの名無しさん:2010/12/05(日) 18:14:21
>>550
ラジアンは半径じゃなくて単位円の弧の長さじゃないの?
552デフォルトの名無しさん:2010/12/05(日) 18:23:15
半径1の円(単位円)を考え、ある弧の長さ(例えばθという長さ)に対する中心角をθと
定義する。そして、この角度はrad(ラジアン)という単位で表す。このとき、半径r、
中心角θradに対する弧の長さはrθとなる。
553デフォルトの名無しさん:2010/12/05(日) 18:31:19
rは直線上の半径だとすると、
A・V > 2 - r^2
を満たすAかなぁ。
rがラジディアンなら
A・V > cos r

けど、球面の上で一様分布になるように発生させるのはめんどくさそう。
554デフォルトの名無しさん:2010/12/05(日) 18:32:47
間違えた。
A・V > (2 - r^2)/2
555デフォルトの名無しさん:2010/12/05(日) 19:29:45
>>552
球面上の円っていうと、球面に沿って長さ r 延ばし先の点の集合のこと。
そういう意味で言ってなかったのなら sin r cos r は出てこない。
556デフォルトの名無しさん:2010/12/06(月) 16:44:08
誰か分かる人がくるようにage
557デフォルトの名無しさん:2010/12/06(月) 16:55:10
球面位置Pから半径r は どの距離なのか?
 ベクトルV に直交する長さ? = 球にベクトルVと平行な円筒をぶっさすことを考え、その円筒の径に相当
 球面上での経路長?

>>547 のは下段だと思われ
558デフォルトの名無しさん:2010/12/06(月) 18:31:58
というか厳密にはどちらでもよくて半径rをスケーリングできてベクトルが取得できればいい。
そして円の外周上じゃなくて円の範囲内で重点的サンプリングできないと意味がない。
559デフォルトの名無しさん:2010/12/06(月) 19:24:04
外周が出来るなら、rを動かして円内でも出来るでしょ。
560デフォルトの名無しさん:2010/12/06(月) 20:07:58
>>559
じゃあ>>547を使って擬似コード書いてみろよ。
スカラーとベクトルの外積をどう定義するのか知らんが。
561デフォルトの名無しさん:2010/12/06(月) 23:26:57
Z軸中心の球面上の円
F(r,θ) = (sin r・cosθ, sin r・sinθ, cos r)
を考えて、こいつをZ(0,0,1)からV(vx,vy,vz)へ回転すればいいんだから
回転軸N = Z×V
回転角φ= arccos(Z・V)
として、クォータニオンで回転すればいいんじゃない。
あとは r = [0, R), θ=[0, 2π) で適当に決めて、何度か試行すれば。
562デフォルトの名無しさん:2010/12/07(火) 00:05:47
>>561
クウォータニオンって結局回転角と軸持ってるだけだから、
式計算すると結局 >>547 になると思うよ。
563デフォルトの名無しさん:2010/12/07(火) 00:08:52
媒介変数表示みたいなのが欲しければ、
>>547 を満たす1点 p1 求めて、
x = p1 - (cos r) V
y = v×x (この×は外積)
で基底ベクトル求めて、媒介変数 t に対して
(cos t)x + (sin t) y + (cos r) V
かな。
564デフォルトの名無しさん:2010/12/07(火) 00:25:55
>>562
仰るとおりなんだけど、
DirectXとかだと、任意軸の回転を一番簡単に使えるのはクォータニオンだったと思うので、
そういう意味でクォータニオンって言った。言葉足らずですんません。

>>563
その方法なら、xはXYZ軸のいずれとの外積から求めてもいけるんじゃない?
直交かつ単位ベクトルならいいんだよね。
っていうかこれが一番簡単な気がしてきた。
565デフォルトの名無しさん:2010/12/07(火) 09:38:32
知ったかぶりと勘違いしかいなくてやきもきしましたが、ようやく自己解決しました。
ありがとうございました!

そんな浅い論理でよくプログラマーやってるなと思いました。
エンバグしまくりなんだろうな。
566デフォルトの名無しさん:2010/12/07(火) 13:07:59
>>565
君がいちばん馬鹿だったんじゃないのかな
よくその程度の説明能力でプログラマなんてやってられるね
567デフォルトの名無しさん:2010/12/07(火) 14:47:01
ここまで説明しないと分らないクセに自己解決とか片腹痛いわ。
568デフォルトの名無しさん:2010/12/09(木) 10:41:24
>>565
釣り乙
569デフォルトの名無しさん:2011/03/28(月) 01:52:25.49
微積にでてくるdxってのがよくわからん。
2 = dy/dx のとき x=0,1,2,3,4,5・・・と変化していくと
y = 0,2,4,6,8,10と変化していく。つまりdy/dxは、増加量。
dxは、増加量を求める上での1分とか1月とかいう単位という理解でいいんだろうか。
570デフォルトの名無しさん:2011/03/28(月) 02:11:03.86
>>569
そういうこと。

定積分も勉強して、微分が定積分の逆操作だってのが分かれば、
Σf(x)Δx の極限が ∫f(x)dx で、
Δy/Δx の極限が dy/dx だってのが分かるようになる。
571デフォルトの名無しさん:2011/03/28(月) 02:19:51.85
じゃあ S = ∫[a,b] f(x) dx って積分の式を売上に当てはめると
1年の売上 = ∫[0,12] 売上(x) 月
1月の売上 = 売上(1) 月
って事になるって事かな。
572デフォルトの名無しさん:2011/03/28(月) 02:38:42.12
>>571
dx は具体的な数値じゃなく、微小量、っていう「無限小をとる操作」を概念的に内包してる。
だからすべて lim dx→0 で考える必要があると思う。
∫[a,b] f(x) dx = lim Δ→0 Σ[a,b] f(x)・Δ・x な感じ。
離散だとΔを0に持ってゆく前に値が収束するけど。

ただ、プログラミング的には無限小をとることができないから、
Δ = 極力小さな有限の値 として近似値をとることになる。
この辺は微積をちゃんと学んでから、数値解析の本を読むのをお勧めする。
573デフォルトの名無しさん:2011/03/28(月) 02:51:23.72
>>571
その例えで言うと、
最初は 月の売り上げ×月、
それを 日の売り上げ×日、時間あたり売上×時、分あたり・・・
とどんどん間隔を狭めていく感じ。
まだ月とか具体的な幅見えてるうちがΔで、
最終的に無限小になった状態がd。
574デフォルトの名無しさん:2011/03/28(月) 02:54:11.59
じゃ数学概念上はdxは対象が何であれ刹那なんだね。了解。
575デフォルトの名無しさん:2011/03/28(月) 05:43:50.63
Vector(Δy,Δx) == 単位ベクトル?
576575 :2011/03/28(月) 06:04:02.41
Δx,Δy両方1以上な時点で単位じゃないね。ごめん自己解決。
577デフォルトの名無しさん:2011/03/28(月) 09:50:29.32
dxdy の d はデルタ。
差分のこと。
578デフォルトの名無しさん:2011/03/28(月) 11:57:30.60
differenceの頭文字dのギリシャ文字がΔだから
差分の意味になっているんだぞ。
579デフォルトの名無しさん:2011/03/29(火) 02:21:49.85
>>575
基底ベクトルは単位ベクトルとは限らないよ。
dx とか dy が基底になるベクトル空間もあるけど、
直交座標みたいなのを想像しちゃダメ。
580デフォルトの名無しさん:2011/03/29(火) 07:55:50.38
差分なのは解るんだけど、線形代数を応用できたら何か使えそうかなと思ってね。
581デフォルトの名無しさん:2011/03/29(火) 22:51:02.07
いや、実際、dxとかdyは基底ベクトルになるよ。
微分形式とか、多様体論とかで調べれば・・・
582デフォルトの名無しさん:2011/03/30(水) 07:40:17.47
長さいらないならsinつかって角度と変換できる?
dy=dx*sinθ
θ=arcsin(dy/dx)
θ=0の時dy=0
なんの意味があるか解らんけど
583デフォルトの名無しさん:2011/03/30(水) 22:44:45.11
できるけど、dy = dx tanθ として θ = arctan(dy/dx) とするほうが自然かと
この場合θはベクトル(dx, dy)の勾配角
584デフォルトの名無しさん:2011/03/30(水) 22:55:48.09
基底同士の角度はそういう求め方しない。
曲率テンソルとかが曲がり具合の指標。
585デフォルトの名無しさん:2011/03/31(木) 23:35:34.77
dだけじゃなくてδとか∂とか∇とかもあるからねぇ
586デフォルトの名無しさん:2011/04/01(金) 00:55:50.47
数学記号の定義は文脈によって変わるからね。
587デフォルトの名無しさん:2011/04/01(金) 21:41:46.34
本質的にはプログラムではなく数学に関する問題かも知れませんが

数列の要素をシャッフルして並び替える処理の効率と質を測りたいです。
効率というのは大雑把に言って計算量です。
質というのは雑把に言ってばらつき加減です。

効率はアルゴリズムのステップ数や変数のアクセス回数などからオーダーを計算できます。
しかし、質はどのように評価したらいいのか、何かアイデアはないでしょうか。

たとえば [0,1,2,3,4,5,6,7,8,9] をシャッフルする場合、
[0,5,1,6,2,7,3,8,4,9] よりも [0,2,9,4,1,8,6,5,7,3] の方がばらけてる感じがします。

なにか指標となるものを計算し、前者より後者の方がシャッフル アルゴリズムとして
質に関して優れていると定量的に言えるようにしたいです。

論文の紹介でもかまいません。
588デフォルトの名無しさん:2011/04/01(金) 21:58:23.06
589デフォルトの名無しさん:2011/04/01(金) 22:25:54.97
>>587
擬似乱数列 品質、とかでググれば一般的なランダムさについての評価については出てくる。

しかし、その例のような場合、どんな並びであっても 1/10! の可能性のどれか、
であるわけで、ある並びが別の並びより「よりランダムである」と言うのは難しい。
590デフォルトの名無しさん:2011/04/01(金) 22:27:53.11
あんたがほしいノイズはホワイトノイズ?
591デフォルトの名無しさん:2011/04/01(金) 23:23:56.34
>>590
ホワイトノイズ限定なのかと言われると、違います。
また、ホワイトノイズ自体がほしい分けでもないです。

やりたいことは、色々なシャッフル アルゴリズムを比較検討です。
その上で、どこを改良すればどう変化するかを考えたいです。

(ただの乱数列ではなく、数列のシャッフルなので、
シャッフルの前後で集合としては同一でなければなりません)

例えば数列がホワイトノイズに近いか遠いかを判断する指標があるなら、
それは参考にしたいです。

他にも、例えばパターンが現れない度合い、
パターンが長い度合いなどが測れる指標があるなら、
それも参考にしたいです。

つまり、比較的多くの人間が2つの数列を見比べて
一方が他方よりランダムっぽいと感じる根拠をなんとか数値で示したい。


>>588
>>589
ありがとうございます。
今日は遅いので、明日じっくり調べてみます。
592デフォルトの名無しさん:2011/04/01(金) 23:48:26.20
>>591
> (ただの乱数列ではなく、数列のシャッフルなので、
> シャッフルの前後で集合としては同一でなければなりません)
乱数(相当のもの)を使わずにシャッフル出来るか考えてください

> 他にも、例えばパターンが現れない度合い、
> パターンが長い度合いなどが測れる指標があるなら、
> それも参考にしたいです。
乱数生成に使われたアルゴリズムを理解してください
理解できない馬鹿なら統計とって有意差を求めてください

> つまり、比較的多くの人間が2つの数列を見比べて
> 一方が他方よりランダムっぽいと感じる根拠をなんとか数値で示したい。
オカルト板に行ってください
593デフォルトの名無しさん:2011/04/02(土) 01:22:37.88
πの各桁の数値の並びはランダムじゃないらしいね
594デフォルトの名無しさん:2011/04/02(土) 01:34:08.55
そりゃπの各桁の数値の並びに従ってるからね
595デフォルトの名無しさん:2011/04/02(土) 01:48:13.48
> つまり、比較的多くの人間が2つの数列を見比べて
> 一方が他方よりランダムっぽいと感じる根拠をなんとか数値で示したい。

それ自体は興味深いテーマだと思うよ
本格的にやろうと思ったらいろいろ考えることは多いと思うけど
たとえば等差数列との相関係数をとるとかかね

あるいは、文字どおりに、そこそこの人数の人間の被験者を集めて
それを有識者集団として、
乱数で生成した2つの数列に対して
「どっちのほうがランダムっぽいか」を判断させることを多数回行い
それを教師信号として学習させることにより評価関数を作成する
とかいう方法も考えられる

たぶん認知心理学とかのほうでも先行研究があると思う
それか心理系に強い情報学科がある大学とか
596デフォルトの名無しさん:2011/04/02(土) 04:02:08.47
心理学は置いておいて、数学的にはコルモゴロフ複雑性の話かな。
これを与える関数は計算可能関数ではないので、あきらめれ。

近似を与える方法としては、圧縮アルゴリズムにかけてサイズを比較する、
なんていう方法があるけど、アルゴリズムによって当然ムラがあるので完全ではない。
597デフォルトの名無しさん:2011/04/02(土) 04:26:20.63
乱数精度に依存する事を除けば単なる記憶だよ
まともに教育受けてれば10P10で1/10!なんてのはアホでも分かる話でしょ
それが分からない人、もしくは悪意を持つ人が
思い入れのあるもの、馴染みのあるもの
数式から式へのこじ付けがしやすいものに
法則性を見出そうとしてるだけ

訪問販売や宗教勧誘にご注意を
598デフォルトの名無しさん:2011/04/02(土) 04:28:34.03
× 数式から式
○ 数列から式

そーりー
599587:2011/04/02(土) 13:30:57.03
>>588
シャッフル アルゴリズムがいくつか紹介されており、
それらの比較も行われていましたが、処理速度の比較だけのように思いました。

何かの方法でシャッフルの度合いを数値で表し、それで比較する、
ということは書かれていなかったように感じます。

求めているのはアルゴリズムそのものではなく、比較方法の方です。
もし見落としていたらごめんなさい、ご指摘ください。


興味深いアルゴリズムをご紹介頂いたことは感謝してます。
600587:2011/04/02(土) 13:37:06.88
>>592
なにか不快な思いをされてしまったのでしたらごめんなさい。
乱数・擬似乱数を使わずにシャッフルすることはできないと思います。
(正確に言えば、毎回異なるシャッフルはできないと思います)

たとえば数列 [0,1,2,3] から数列 [2,0,1,3] を作ればシャッフルですが、
元の数列を使わずに0以上3以下4要素の乱数列 [3,3,1,0] を作っても、
それは私が比較方法を求めているシャッフルではないよと言いたかっただけなんです。

> 乱数生成に使われたアルゴリズムを理解してください

ご指摘ありがとうございます。
>>589 でもアドバイスを頂きましたが、ご指摘に沿って、
まずは乱数生成のアルゴリズムから勉強してみます。

> オカルト板に行ってください

つまり、人が感じるランダムさというものを、
万人が100%納得するものではないにしても、何らかの方法で数値化することは
数学とか科学などの分野では不可能なのでしょうか。
というか、やろうとしてみた数学者とかいないのでしょうか。

例えば、数列内のランダムな2要素を入れ替える処理を
何回やればどの程度シャッフルされるかということは、
確率とかの言葉をつかって何らかの数値で表現できないのでしょうか。

難しいそうだということは承知してますが、これはオカルトの分野ですか?
601デフォルトの名無しさん:2011/04/02(土) 13:48:33.26
わかってないなぁ。

擬似乱数列の「ランダムさ」についてはいくらも指標が提案されていて、それはつまり、
サイコロで得られるような真の乱数と、どれぐらい見分けがつかないか、ということな
わけだ。

で、一方、有限な列、たとえば 1, 2, 3, 4 から 2, 1, 4, 3 を作るには、隣どおしを入れ替える、
という操作が 2 回必要なわけで、それが 1 回でできる 2, 1, 3, 4 よりは 1, 2, 3, 4 から遠い、
と言える。

そういうのはランダムネスじゃなくて、数学的には「距離」と言う。1, 2, 3, 4 からどれだけ
「遠い」か、という指標ということになるわけね。

けど、1, 2, 3, 4 が 1 回ずつ現れるパターンは、そのどれもが、有限個のうちのどれか
ひとつでしかないわけで、どのパターンが「よりランダムに思える」かということは結局、
主観の問題なので、数学ではなく認知心理学という科学の問題となる。
602587:2011/04/02(土) 13:48:42.66
>>595
> 教師信号として学習させることにより評価関数を作成する

評価関数を作る方法のひとつとしてはとても分かりやすいのですが、
アルゴリズムとランダムっぽさ(ばらつき具合)の間の関係が、
いまいち見えてこないように思えます。

たしかに関数は作れますが、ではあるアルゴリズムを
どう改良すればよりランダムっぽくなるか、ということを
その作られた関数を元にして考えることが難しそうです。
せっかくの提案なのに申し訳ないです。

認知心理学の方は調べてみます。


>>596
コルモゴロフ複雑性は聞き慣れない言葉でしたので、調べてみます。

> 近似を与える方法としては、圧縮アルゴリズムにかけてサイズを比較する

ありがとうございます、やってみます。
完全でなくてもいいです、何を以て完全と言えるかも分からないですから。

数値化する方法が複数提案できれば、それらも比較できますので、大変有り難いです。
603587:2011/04/02(土) 13:59:36.77
>>601
とても分かりやすいです。

シャッフル前と後で「2要素を入れ替える処理に換算したら何回必要か」を
数学では距離と言っているのですね。

確かに最終的には主観の問題ではあるのですが、やはり
距離が短すぎるものよりは長いものの方がシャッフルされている感じを受けます。
なのでこれは混ざってる度合いを測る指標の一つとして使えると私は感じます。

色々な数列で実験してみます。

ありがとうございます。
604デフォルトの名無しさん:2011/04/02(土) 14:05:09.70
>>603
> シャッフル前と後で「2要素を入れ替える処理に換算したら何回必要か」を

ああ、言い忘れた。
それは「距離」の一例だから。

ウィキペディアの「距離」だとそういう距離についてはちょっとしか触れてなくて、
「距離空間」のほうは専門的過ぎてわけわかんないな。

「ハミング距離」だとか「レーベンシュタイン距離」だとかの記事を見て感覚を
つかんでもらえればいいんだけど...
605デフォルトの名無しさん:2011/04/02(土) 14:23:48.85
「人が感じる」は危険じゃないかな。
人の感性はランダム性とは相性悪い。
(無記憶なはずの「運」を、「いい子と続いたからきっと次は悪いことは」とか思いこむのが人間)


そういう主観指標じゃなくて、客観的な指標なら、
乱数生成の研究してる人は必ず調べると思うよ。
周期性が出ちゃってないかとか、偏りが出てないかとかは数値化できる。
606587:2011/04/02(土) 14:53:47.71
ありがとうございます。

>>604
「ハミング距離」と「レーベンシュタイン距離」ですね。
調べてみます。


>>605
なんて言って質問すればいいのか言葉が分からないのですが、
主観的にもある程度は納得いくような客観的指標とでも言えばいいのでしょうか。
でもそういうのは、より難しいのですよね。

まずは、完全に客観的な指標を考えてみます。
乱数生成における「周期性」や「偏り」てすね、調べてみます。
607デフォルトの名無しさん:2011/04/02(土) 17:28:41.52
アルゴリズム同士を比較する方法っていうなら、
何度もシャッフルを生成させて、各パターンのヒストグラムをとるしかないんじゃないか?
アルゴリズムがちゃんとしてるなら理論値も出せるだろうし。

その上で入力列の長さNに対しての空間量・時間量を評価すれば、
速度とかの面も評価できる。

ランダムに選んだ2要素を入れ替える、っていうシャッフル方法だと、
ヒストグラムに偏りが出るから不適格って記事をどっかで読んだ気もするし。
608デフォルトの名無しさん:2011/04/02(土) 17:30:42.33
あ、空間計算量・時間計算量ね。
609デフォルトの名無しさん:2011/04/02(土) 17:39:09.21
フィッシャー・イェーツで理論上十分にランダムだと思うし、性能上の問題もないと思う。

他の方法を比較する理由なんて、手作業でやるシャッフルのシミュレーションぐらいしか
思いつかないんだけど。
610デフォルトの名無しさん:2011/04/02(土) 17:47:03.36
ボゴソートして結果が出るのが一番遅い奴がいちば(←違う
611587:2011/04/02(土) 17:56:35.74
>>609
効率のいい優秀なシャッフル アルゴリズムがどうしても今欲しいわけではなくて、
単に比較方法に興味がわいて、いろいろ調べていくうちに面白くなった、それだけの理由です。

あと、アルゴリズムの中に数列の中からある要素をピックアップするという処理が入ってると、
C++ などなら効率いいけど Haskell だと効率悪いから別の方法を探る必要があって、
そうするとばらつき具合にも影響が出てくるのかな、とか色々考えてしまうわけです。
612デフォルトの名無しさん:2011/04/02(土) 23:35:04.87
>>611
> あと、アルゴリズムの中に数列の中からある要素をピックアップするという処理が入ってると、
> C++ などなら効率いいけど Haskell だと効率悪いから別の方法を探る必要があって、

なことはないが…
613デフォルトの名無しさん:2011/04/02(土) 23:46:19.97
リストを愚直に処理すると遅そうだけど、それって多分C++でもリストを扱うなら一緒の問題じゃないかなぁ。
アレイはHaskellには無いんだっけ?
614デフォルトの名無しさん:2011/04/03(日) 00:12:58.50
中高レベルの常識さえ理解できないアホが
まともにHaskellを扱えるとは思えない
615デフォルトの名無しさん:2011/04/03(日) 08:25:23.08
まあ確かにな…。
調べたらHaskellにはArrayがちゃんとあるし、最適なアルゴリズムを探す前に、
まずは最適なデータ構造を考えないとだめだなぁ。

アルゴリズムとデータ構造を題材にした本はいろいろあるだろうし読んでみれ。
できればTACPぐらい読めばいいと思うけど、ありゃ高いしな…。
616デフォルトの名無しさん:2011/04/03(日) 10:25:27.82
なんか異様に敵視してる奴がいるようだけど、
「人がランダムであるように感じるのはどういうときか」
っていうのはそれなりに広がりのある話題だろ
617デフォルトの名無しさん:2011/04/03(日) 10:35:57.73
それは数学でも算数でもなく心理学なんだってば。
618デフォルトの名無しさん:2011/04/03(日) 11:31:51.38
>>615
Haskell の Array のランダムアクセスの処理速度は測ってみたのか?

Haskell のアルゴリズムを解説した書籍で、
Array は極力使わないように指導される理由は知ってるか?
619デフォルトの名無しさん:2011/04/03(日) 12:29:49.06
モナドも知らんのにHaskell語るのか
620615:2011/04/03(日) 18:56:38.56
>>618
俺はHaskell使ったことないから軽く調べてみただけなので、
あんまり込み入った事情は知らんかった。申し訳ない。
どうやら見当違いのこと言ってしまったようだ。
Haskell の効率の話に詳しいみたいだから、後は任せた。

>>619
圏論も知らずにモナドを語るのか。
621デフォルトの名無しさん:2011/04/03(日) 19:08:11.97
>>618もほとんど知らないから問題なし。
622デフォルトの名無しさん:2011/04/11(月) 01:12:30.23
見よう見まねでフーリエを書いてみた。
http://codepad.org/mbp2bmVU

フーリエって、sin(0) cos(0)地点の位置が、時間=0じゃなかった時ってどうやって合わせんの?
623 ◆QZaw55cn4c :2011/04/11(月) 01:25:05.07
>>622
ごめん、コードみてないけれども。
a sin(ωt)+ b cos(ωt) = Csin(ωt + φ) (三角関数の合成)
つまり、周期の等しい sin と cos で、任意の位相にずらすことが可能。
624デフォルトの名無しさん:2011/04/11(月) 01:48:47.46
>>623
いや、それは解るんだけど、ある単位時間で指定周波数の出力をとろうとすると、
その周波数の波が単位時間内のどこでsin(0)cos(0)になってるかってのが解らないから近似値が取れないんだ。
だから特定周波数の波の開始地点をどうやって調べてんだろうかなって。
なんか、周波数の周期/(周期あたりの時間/2) 回数分だけ開始位置をずらしながら
フーリエで出力を取り出して、もっとも出力が高くなる地点を求めれば
いい気がするんだけど、それであってんのか解んない。
625 ◆QZaw55cn4c :2011/04/11(月) 02:07:37.20
>>624
>>623 のレスの焼き直しですが、
フーリエ変換で出てくる sin() 成分の振幅を a、cos() の振幅を b として、A = sqrt(a^2 + b^2) である A が求めている値ではありませんか?
626624:2011/04/11(月) 02:12:37.58
具体的な捕捉。
単位時間の長さ = 10
求める周波数 = 1
この条件で、周波数1の開始地点を求めるとすると、
T = 0,1,2,3,4,5,6,7,8,9
と時間があるうち周波数1の開始点は
T = 0,1,2,3,4
のいずれか。0〜4のうちどれかを特定する手っ取り早い方法はどうやるの?って事。
627デフォルトの名無しさん:2011/04/11(月) 02:16:20.83
>>625
Aが開始点のずれを考慮してあるならそうです。
開始点を考慮してないなら、さっきリンク載せたコードと同じなんで違うと思います。
628デフォルトの名無しさん:2011/04/11(月) 11:45:18.16
離散フーリエ変換って開始点とかと関係ない処理なんじゃないの?
その区間の信号が無限に周期すると仮定して変換するんでしょ。
629デフォルトの名無しさん:2011/04/11(月) 11:49:20.03
窓関数通さないとエイリアシングの影響がでかいやね
630デフォルトの名無しさん:2011/04/13(水) 06:16:01.11
馬鹿には無理
631デフォルトの名無しさん:2011/04/13(水) 07:00:22.62
窓関数って、ローパスフィルターとかか? ラプラス変換で一次結合式にしたの使うんなら 馬鹿の俺でもやったぞ。
632 ◆QZaw55cn4c :2011/04/13(水) 08:16:53.98
>>631
ハミング窓とかハニング窓とか
633デフォルトの名無しさん:2011/04/13(水) 11:31:01.76
窓関数 = Windows API
に決まってんだろ
言わせんな恥ずかしい
634デフォルトの名無しさん:2011/04/13(水) 15:23:01.98
>>633 おもしろい事を言ったつもり?
635デフォルトの名無しさん:2011/04/13(水) 18:07:42.01
本当に恥ずかしい事言った自覚はあるのかね
636デフォルトの名無しさん:2011/04/22(金) 21:02:12.02
アフィン変換についてわかる人いるかな?
アフィン変換の行列 T = (sx, r0, r1, sy, tx, ty) と便宜上書きますね

あるビットマップB(w30,h30)があった場合に、それを変形して表示しようとして
Ta = (2, 0, 0, 2, 100, 100) :100×100の位置に2倍のスケールで表示
という変形をしてから描画した場合、当然描画された画像Baは
x100,y100の位置からw60,h60の大きさで描画されますよね

その画像Baをメモリにキャッシュしたとして、その画像をBcとします。
便宜上Bcの大きさは元の座標系で(0,0)-(160,160)の範囲を保持しているとします。
もちろんこの範囲の中で描画されているのは(100,100)-(160,160)の60x60部分だけです。

今度はまっさらな座標系にBcを変形して描画することにより、原点にBを描画したいと思った場合に
ただ逆行列をかけるだけだとダメなのがわかるかと思います。
Taの逆行列 Ta-1 = (0.5, 0, 0, 0.5, -50, -50) となるけれど、これを単純にBcに適用すると
Bと同じ画像が原点ではなくて(50, 50)の位置に表示されることになります。
ここで必要な行列Tb = (0.5, 0, 0, 0.5, -100, -100)です。

今回はスケールしか使わなかったので暗算でもなんとかなりますが、
回転も加わった場合でも使えるように、TaからTbを自動的に導き出すには
どうすればよいのでしょうか?
637デフォルトの名無しさん:2011/04/22(金) 21:16:37.81
アフィン変換
スケーリング行列Scaleと平行移動行列Transは

Scale×Trans の順でかかってるから、
逆行列を作るなら Trans' × Scale' の順に作らないとダメ。
回転行列が噛んだ時も、Transが最後になることを考えないと。
638デフォルトの名無しさん:2011/04/22(金) 21:18:12.95
推敲中に書き込んでしまった。
まあ大筋は伝わると思うけど…。
639デフォルトの名無しさん:2011/04/22(金) 21:19:34.06
平行移動がついてない単なる線形変換だったら、
書いてくれたように「逆行列」を考えることで逆変換を求めることができるけれど、
今回の例のように平行移動がついている場合はそんなに単純にはいかないよ


線形変換の場合は、2×2の正方行列 T を用いて変換を表すことができるね
点の座標を縦ベクトルであらわすことにして、点 x が点 x' にうつるとすると

x' = Tx  ※ 2×2の正方行列 T と、2行の縦ベクトル x との積

とかける。これを x = の形で表すには、Tの逆行列 T~ を使って

x = T~x'

つまり、一次変換 T の逆変換は、T の逆行列 T~であらわされるわけだった


ところが、一般のアフィン変換だと、平行移動の成分がついているので

x' = Tx + b  ※ 2×2の正方行列 T と縦ベクトル x の積に、縦ベクトル b をたす

とあらわされる。これを x = の形にすると

x = T~ (x' - b)  ※ 行列 T を、縦ベクトル x から縦ベクトル b をひいたものにかける
 = T~x' - T~b

となる。
まとめると、2×3行列 (T b) であらわされるアフィン変換の逆変換は、
2×3行列 (T~ T~b) であらわされる。

x' = Tx + b という式の形に立ち戻って、これを x = の形で表そうと考えるのがポイント
640デフォルトの名無しさん:2011/04/22(金) 21:30:40.73
ベクトルを1要素増やして(x 1)として、
変換行列は線形変換Aと平行移動bを
A b
O 1
(Oはゼロの並び)にして逆行列を求めるのが分かりやすかった。
641デフォルトの名無しさん:2011/04/22(金) 21:32:38.54
あああ、そうだったのか
独学だったのでアフィン変換は3x3行列だと思っていた。
3x3行列Tで変換した座標空間ではT-1を適用するだけで原点に戻るけど
大元の座標系で計算するためには、ベクトルを別計算しないといけなかったんですね!

なるほど心から納得できました。計算式としては639さんの書いてくれた
x = T~x' - T~b
を使えば良さそうですね。ちょっと検算してみます、ありがとうございました!
642デフォルトの名無しさん:2011/04/22(金) 21:44:06.21
>>636
アフィン変換は 所詮線形変換式でしかないので
どこからどこまでという領域の情報を捨てた場合、変換結果から捨てた領域情報の復元は無理

初回の投影(ビットマップB から Ba への変換)の際、映像だけだはなく
矩形点(0,0), (w,0) (0,h) (w,h) も変換しておきそれを保持: Oa, Wa, Ha, WHa

Bc 空間上で Oa Wa Ha WHa が示す四辺形(アフィン変換は変換の前後で直線は直線として射影するので平行四辺形になる)
内の座標値 V は Ta-1 変換によって (0,0)-(w,H) の矩形に射影される
あとはこのVをくまなくなめてくだけ
643デフォルトの名無しさん:2011/05/04(水) 21:39:52.05
質問!
ベクトルと複素数の関係ってどうなってるの?
ベクトルが複素数の一種なの?
644デフォルトの名無しさん:2011/05/04(水) 21:45:40.12
ベクトルっていうのは、「足し算」「引き算」「係数倍」ができるもののことで
そういうものはなんでもベクトルだよ

複素数も「足し算」「引き算」「係数倍」ができるのでベクトルの一種

ここでは係数っていうのは実数のことでね
645デフォルトの名無しさん:2011/05/04(水) 21:48:28.34
複素数空間で考えたとき、複素数は real + i * conj で現わされる。
これは複素数空間を実数軸がx方向、虚数軸がy方向と考えたときの2次元ベクタと捉えることができる。
要は、実数は1次元のベクタと捉えたときのアナロジーになっている。
その辺りは数学ガールのコミック版を読むと判り易いかも。
646デフォルトの名無しさん:2011/05/04(水) 21:57:37.87
ここはプログラミングのための数学と算数スレなんだから、
プログラミングに活かそうな
647デフォルトの名無しさん:2011/05/04(水) 22:36:59.27
 いやね、ベクトルクラスと複素数クラスって実態は同じクラスでいいんじゃね?っておもってさ。
どうしたら綺麗に収まるか気になったのよ。あと行列と複素数の関係も気になるしさ。
648デフォルトの名無しさん:2011/05/04(水) 22:52:38.47
複素数と2次元平面のベクトルを同じ意味で捉えている分野がある。
特に、交流電気理論の分野。この分野の専門家に

「あんた達、ベクトル、ベクトルって言うけども、それって複素平面の話でしょ?」

って言ったら、

「何言ってるの?だからベクトルじゃないの!」という返事が返って来た。
もう、議論しても無駄だと思った(ちなみに、自分は機械物理系)。
649デフォルトの名無しさん:2011/05/04(水) 23:40:26.95
>>647
* 演算子の扱いが変わるからねぇ。
データ構造として同じだからといって、代数系として同じわけじゃない。

数学的にいうと、ベクトル、行列と複素数の関係は↓みたいな感じ。

複素数は実数を代数拡大したもの。
代数拡大体は、元の集合のベクトル空間になる。
複素数の掛け算は、複素数に対する線形変換とみなせる。
ベクトル線形変換は行列として表せる(ので、複素数の積も行列で表現できる)。
650デフォルトの名無しさん:2011/05/05(木) 08:13:24.52
fftで画像を周波数空間像に変換すると、虚数成分が出てくるから複素数を使う必要がある。
もう、何がなにやらw
651デフォルトの名無しさん:2011/05/05(木) 08:36:09.12
そりゃ、フーリエ変換は複素数形で書いた方が式がきれいだし。
652デフォルトの名無しさん:2011/05/05(木) 12:47:15.03
>>647
ベクトルクラスと複素数クラスは、インタフェイスか抽象クラスとして提供して、
内部実装を共通化するのが賢いかもしれん。
一応概念的には別のものだから。
653デフォルトの名無しさん:2011/05/05(木) 16:06:17.82
>>652
いいと思うんだけど、不勉強でどこまでをベクトルでどこまでを複素数に
すりゃいいかがわからん。外積・内積ならベクトル、テンソルなら複素数
ぐらいの切り分けでいいのだろうか?
654デフォルトの名無しさん:2011/05/05(木) 18:50:50.12
>>653
いや、もう、数学わからないなら下手に考えずに、
元の理論がどっちを使ってるかをまんまコピれ。
数学わかってる人は明確に使い分けてるから。
655デフォルトの名無しさん:2011/05/05(木) 18:52:15.74
あと、ベクトルとか複素数とかを要する分野は、かなり高いパフォーマンスを求めることが多いんで、
概念的には >>652 みたいに実装共通化できるとしても、
パフォーマンスチューニングの結果、共通化やめるとか普通にある話。
656デフォルトの名無しさん:2011/05/05(木) 20:46:31.83
>>655 まぁつかわん
657デフォルトの名無しさん:2011/05/05(木) 20:49:31.00
>>656 最低もLapck程度の性能はほしいわな
658デフォルトの名無しさん:2011/05/05(木) 21:19:07.32
LAPACK な
659デフォルトの名無しさん:2011/05/05(木) 21:38:47.00
 シェーダー言語でベクトル扱えるよな。アレである程度複素数を処理できちゃったりしない?
660デフォルトの名無しさん:2011/05/05(木) 22:28:20.55
>>647

似てる点はあったとしても、俺なら複素数とベクトルは別のクラスにして、
実装も別にする。

ベクトルには3次元(外積の定義がある)、n次元もあるし。
また、複素数を成分とするベクトルもあるし。
661デフォルトの名無しさん:2011/05/05(木) 22:34:50.52
複素数をベクトルとして扱うのって、C++ 0xで採用見送られた Concept みたいなの使ってやるべきで、
継承とかで実装を共通化しようってのはいまいちだと思うな。
662デフォルトの名無しさん:2011/05/05(木) 22:36:51.13
なんというか、複素数はベクトルである(is-a)というよりは、
複素数ってものを作ってみたら、それはベクトルの条件を満たしていたって感じなので。
663デフォルトの名無しさん:2011/05/06(金) 00:12:30.53
>>659
一般論として言えるのは、
複素数を使った演算で、GPU使って早くなるものもあるだろう
ってくらいかな。

ベクトルだからGPU使える/使って早くなるって単純なものじゃない。
GPUの挙動をある程度分かってないとダメかも。
664デフォルトの名無しさん:2011/05/06(金) 00:33:02.71
>>653
例えば、3Dの観点から言えば
表現能力はベクトル/行列と複素数(3Dなら四元数だけど)は特に違いはないけど、
ベクトル同士の積と、複素数同士の積が性質が違うから、便利なほうに変換して使ったりはする。

だから大きな違いは積演算の入れ方だと俺は思うよ。
665デフォルトの名無しさん:2011/05/06(金) 00:46:45.93
どなたか、これまでの議論をクォータニオン(ハミルトンの例のあれ)に絡めて説明していただけるとありがたい。
666デフォルトの名無しさん:2011/05/06(金) 01:08:51.66
>>665
「文脈による」。

クオータニオンも、数論な人がいうクオータニオンと、3Dグラフィックな人がいうクオータニオン、
ものは一緒だけど使い方とか全然違う。
複素数もしかり。
667デフォルトの名無しさん:2011/05/12(木) 00:25:49.47
ここって物理もありなの?

ゴムがびよんびよんする様子を計算したいんだけどあれってどういう構造?

たとえば折れ線をゴムに見立てるとして、折れ線の頂点は隣り合う頂点で相互にベクトルを
向けてるんじゃなかろうかと思う。↓こんな感じで
・ →← ・ →← ・ →← ・ →← ・ →← ・ →← ・ →← ・ →← ・
このゴムを引き伸ばして離した時、伸縮がどうベクトルで実現されていくのかがわからない。
あと伸縮が弾け飛んだゴムの慣性にどう影響すんのかもよくわからん。
668デフォルトの名無しさん:2011/05/12(木) 00:48:33.63
>>667
バネならわかる?
伸びているときはバネと一緒で
伸びていないときは束縛力なし
669デフォルトの名無しさん:2011/05/12(木) 01:25:32.61
>>668

こういう感じ?

伸長 0倍
・-・-・-・

伸長 2倍
・ → - ← ・ → - ← ・ → - ← ・

伸ばした分だけベクトルの長さが伸びると。
んー。バネもそうだけど慣性が解らない。
ベクトルの長さが何を基準に0に戻るかってのがどうも解らん。
v -= 適当な定数 * 時間 * 単位化(v)
p += v
でいいんかねぇ。できれば自然な伸縮にしたけど。
670デフォルトの名無しさん:2011/05/12(木) 03:01:46.98
>>667
厳密に言うと、まさにそういう「各点が引き合う」を無限に細かくして(極限とって)微分方程式にする。
けど、厳密解計算できないし、近似で、何点か代表点取って計算とかかな。

点と点の間隔が一定距離以下なら力書けず、
一定距離以上なら(基準距離からの差分で)距離に比例して力掛ける。
671デフォルトの名無しさん:2011/05/12(木) 08:56:15.49
普通に物理でやった F = ma と F = -kxを使えば求まるんじゃない?
ゴムの単位長さあたりの重さがρ、全長をL, 分割数をN、
ばね定数をk, 重力定数をg、頂点の位置ベクトルをx_i とすれば、
頂点の加速度ベクトルはこんな感じでしょ。

ρL/N a_i = ρL/N g
 -k * (x_i - x_i-1) * max(0, |x_i-1 - x_i| - L/N)
 -k * (x_i+1 - x_i) * max(0, |x_i+1 - x_i| - L/N)

境界条件
x_0 = (0,0), x_N = (L,0),
a_0 = a_N = (0,0)
672 忍法帖【Lv=27,xxxPT】 :2011/05/24(火) 15:16:19.80
「ゼロではない」と「事実上ゼロ」の違いを教えてください
673デフォルトの名無しさん:2011/05/24(火) 15:18:05.87
宝くじに当たる確率はどっちだと思う?
674デフォルトの名無しさん:2011/05/24(火) 15:19:18.35
板違い
失せろゴミ
675デフォルトの名無しさん:2011/05/24(火) 18:05:38.38
3D数学で、親の基本軸でXYZの順に回転させたものとローカル軸で回転させたものの関係式ってありますか?
676デフォルトの名無しさん:2011/05/24(火) 18:09:15.39
>>675
そりゃ、親の軸→ローカル軸への変換行列を掛けりゃいいんじゃねーの?
677デフォルトの名無しさん:2011/05/25(水) 14:13:25.04
>>676
ありがとうございます

もうちょっと整理してきます。。。失礼しました
678デフォルトの名無しさん:2011/05/27(金) 00:27:34.58
 時間と空間の相互変換について何とか学とか体系だった名前ってある?
 レイトレで毎回画像生成して表示するときの( 時間 : 空間 )という比率と、
1度レイトレの結果を画像ファイルに落としそれを何度か開いたときの( 時間 : 空間 )の
比率って違う訳じゃん。その辺を数学的に表したいんで気になる。

 あと、未来は既に決まっていて、将来入力される値は、時間を引数とした
(数学的)関数として表現可能とかって概念もその学問に入ってりゃなおいいんですが。
679デフォルトの名無しさん:2011/05/27(金) 04:06:29.83
時相論理?
680デフォルトの名無しさん:2011/05/27(金) 16:13:26.80
未来はすでに決まっていてって、
そりゃ物理学の(なので、物理シミュレーションの)基本だと思うけども。
681デフォルトの名無しさん:2011/05/27(金) 18:03:28.86
>>680
未来はすでに決まっていてじゃなくて、
未来はすでに決まっているかのように扱う、がより適してるかもね

FRP の基礎概念だから、FRP 系の論文によく出てくる
682デフォルトの名無しさん:2011/05/27(金) 22:34:06.74
>>680
 ほぇ〜。じゃあ X x Y x Z x T = S とか4次元の幾何学が成り立っちゃったりしてんの?
4次元ベクトルで過去未来空間を跨いで、幾何図形が構築されてたりすんのかな。
683デフォルトの名無しさん:2011/06/01(水) 16:28:08.81
スプライン補完って、インプットの範囲外だと算出してくれないですよね。
逆に、インプットを多少で良いので延長してくれる補完てあるのでしょうか?
684デフォルトの名無しさん:2011/06/01(水) 19:31:41.23
>>683
意味が分からん

例えば3次スプラインは(ゼロ次も含めて)4つの係数を決定すれば、
その曲線の全範囲(無限)の形が決定される

空間内の点Aから点Bまでを補完するためのスプライン曲線を決定したなら、
つまりそのスプライン曲線のための係数を決定したならば、
その範囲の外側だろうと内側だろうとそんな事は全く関係なく、
点Aと点Bを通る無限に長いスプライン曲線の形が決定される

あなたの言い方を使えば、多少どころか、無限に延長してくれる

ちなみに、この性質はスプライン曲線に限らず、
(少なくとも)多項式で表現できる曲線なら全て当てはまる
685デフォルトの名無しさん:2011/06/01(水) 23:42:19.92
>>683
何かを想定して書いているならその想定を詳しく。
686デフォルトの名無しさん:2011/06/02(木) 08:47:28.17
内挿じゃなくて外挿がしたい、ってことかな?

要するに近似による内挿ってのは、フィットする連続関数 f を求めて、
端点 f(0) から 端点 f(1) まで 0 ≦ t ≦ 1 の範囲で t を変化させて元のデータに
ない値を求めるわけだ。

ということは、f(-0.5) や f(1.5) を計算してやれば、その範囲外の結果も求まるけど、
まともに求まるかどうかはその関数次第。

補外法とも言うが検索してみても難しい解説しかないな……
687683:2011/06/02(木) 12:19:16.10
>>684-
有難うございました。
知りたいことでした、外挿、って言うんですね。

3次スプラインは試しました。けど、変化がちょっと複雑ですね。
688デフォルトの名無しさん:2011/06/02(木) 12:40:18.32
2点間をスプラインで補間するという場合、
普通はその間に変曲点がくるから、
2点の外側の変化は単調なはずだが・・・
689デフォルトの名無しさん:2011/06/03(金) 07:44:06.36
ツギャッ!ツギャッ!ツギャッ!
690デフォルトの名無しさん:2011/06/03(金) 12:40:39.94
まず補 "完" じゃなくて、補 "間"。
間を補うから補間であり、外なら補外。

検索したら色々でるんじゃ?
691デフォルトの名無しさん:2011/06/03(金) 16:11:11.18
まあ、「外挿補間」っていうけどね、外でも。
692デフォルトの名無しさん:2011/06/03(金) 16:17:15.41
誤用だけどね
693 【Dtech1307111347165143】 :2011/06/03(金) 23:33:04.94
てst
694デフォルトの名無しさん:2011/06/09(木) 02:15:53.50
695デフォルトの名無しさん:2011/06/13(月) 01:19:45.19
http://3sai.sakura.ne.jp/sblo_files/3sai/image/20110609001.png

これ答え32.5cmなんだけど、お前らの頭の中じゃどう順序立てて解く?
696 忍法帖【Lv=4,xxxP】 :2011/06/13(月) 01:25:09.57
なんだよ、そう言うから身構えちまったじゃねぇか。
順序も何も、見たまんまだよ。
左上から右下に対角線引いてみ。
697デフォルトの名無しさん:2011/06/13(月) 01:29:31.64
というか聞きたいのは発想の原点かな。
何かしら知ってりゃ簡単じゃん。
でも発想ってのは多分個々人に違うと思うんで。
俺はこの辺から思いついたってのを教えておくれよ、
698デフォルトの名無しさん:2011/06/13(月) 01:32:42.53
例えば、俺は線の形なんか見ずにトポロジーで攻めたぜぇとかね。
(今回の問題は、図の条件と位相自体は見ないと解けないと思うけど)
699デフォルトの名無しさん:2011/06/13(月) 07:12:56.34
モンテカルロとか
700デフォルトの名無しさん:2011/06/13(月) 08:24:45.51
>>697
日本で出て来る図形の問題のほとんどは補助線どこかに引けば解ける。
701デフォルトの名無しさん:2011/06/13(月) 09:37:03.31
なんか5,10から直角三角形作ってやったら
5+7=5√3とかでてきて解けないんだけど
歪み過ぎてまず矛盾起こさない補助線を引くのが難しいなコレ・・・
702デフォルトの名無しさん:2011/06/13(月) 10:15:21.98
底辺×高さ÷2 + 底辺×高さ÷2

703デフォルトの名無しさん:2011/06/13(月) 11:13:19.37
>>697
直角表示で完全に>>696の方法に誘導されてるじゃん。
中学生レベルの幾何の問題。
704デフォルトの名無しさん:2011/06/13(月) 11:34:04.88
中学生レベルを小学5年でか
やっぱ進んでる所は進んでるな
705デフォルトの名無しさん:2011/06/13(月) 12:03:48.21
同じように見えるものの中から何が重要で何が重要でないのかを判断する能力、
自分に何が必要かを理解していて存在しないものはそれを自ら作り出す能力、と言えばいいのか。
問題自体は解き方を覚えさえすれば誰でも出来る。
706デフォルトの名無しさん:2011/06/13(月) 12:59:32.09
s/能力/才能 ∨ 経験/
707デフォルトの名無しさん:2011/06/13(月) 13:01:15.37
aからbを求める方法f
このfをどうやって求めるかだよなぁ。
これが機械的に求められたら。。。
708デフォルトの名無しさん:2011/06/13(月) 13:53:36.39
天才は何の苦もなく解法を見つけるが、その解法をいくら暗記しても天才になれるわけじゃない。
能力的に明らかな差があるんだ。
709デフォルトの名無しさん:2011/06/13(月) 20:35:05.52
天才は自分が天才なことに気づかない
710デフォルトの名無しさん:2011/06/14(火) 00:05:27.38
男なら適当に座標軸とって積分だろ、常考
711デフォルトの名無しさん:2011/06/14(火) 20:18:43.00
http://www.youtube.com/watch?v=OCYZTg3jahU

天才かどうか知らないけど、才能あるなあ
発想が素敵
712デフォルトの名無しさん:2011/06/14(火) 21:57:33.98
>>711 ダイバーたちはわりと使ってる表現だよね
713デフォルトの名無しさん:2011/06/14(火) 23:14:47.81
優劣を決めることに意味は無いが、ラマヌジャンとオイラー、どっちがより非凡だったんだろう。
714デフォルトの名無しさん:2011/06/14(火) 23:18:14.46
どっちがより非凡だったか考えることにも意味は無いとは思わないのかね
715デフォルトの名無しさん:2011/06/15(水) 00:00:19.05
>>712
ダイバーのハンドシグナルって二進数でやってるの?
それは知らなんだ
716デフォルトの名無しさん:2011/06/15(水) 06:56:56.01
>>714
まぁどっちが非凡かというのも意味は無いな。

ただ、ラマヌジャンは空前絶後の存在。
オイラーは空前絶後に見えるがいつか同じ人間現れる。いわゆる天才。

この二人の思考の差異が解れば色々と発想の原点を探れそうな気はしてくる。
717デフォルトの名無しさん:2011/06/15(水) 07:55:00.33
>>711
20とかグワシになるんだが、指いたくないのだろうか
718デフォルトの名無しさん:2011/06/15(水) 15:55:33.49
21のがキツそう…
719デフォルトの名無しさん:2011/06/25(土) 21:08:47.88
野菜だか魚だか忘れたけど、市場のセリで価格提示を二進数でやってるとこが本当にあるらしいね。
720デフォルトの名無しさん:2011/06/26(日) 00:38:35.35
ミュージシャン(w)も使うらしいお
721デフォルトの名無しさん:2011/07/01(金) 22:58:44.68
髪の毛が一本もない人はハゲである。ハゲの人に髪の毛を一本足してもやっぱりハゲである。
よって数学的帰納法により、全ての人はハゲている。

数学は素晴らしいな、これでおれも明日から胸を張っていきていける。
722デフォルトの名無しさん:2011/07/01(金) 23:07:06.82
志田未来かわいすぎワロタ
723デフォルトの名無しさん:2011/07/02(土) 03:49:43.96
志田未来かわいすぎワロタ
もう18のエロエロなんだぜ
724天使 ◆uL5esZLBSE :2011/07/02(土) 17:31:55.69
----------
>>>>>> 髪の毛が一本もない人はハゲである。ハゲの人に髪の毛を一本足してもやっぱりハゲである。 <<<<<<(きリッ!!きリッッ!!!!きリ!!!!ッッッッ!!
--------------------(きリッッッッッ!!!!!キリッッキリッッッッ!!キリ!キリッッッ!!!!
---------
>>>>>>>>>> よって数学的帰納法により、全ての人はハゲている。 <<<<<<<<<<(きリッッッッ!キリッッッッキリッッキリッ!!!!!
---------
>>>>> 数学は素晴らしいな、これでおれも明日から胸を張っていきていける。 <<<<<(キリッッッ!ッッッ!


死ね
725デフォルトの名無しさん:2011/07/02(土) 18:50:20.79
帰納法じゃなくて鳩ノ巣原理
726デフォルトの名無しさん:2011/07/02(土) 20:11:04.48
鳩ノ巣で証明できるのは、世界には同じ本数の髪の毛を持つ人間が少なくとも一組はいる、だ。
727デフォルトの名無しさん:2011/07/03(日) 00:27:35.16
鳩ノ巣原理を利用したアルゴリズムとかあるのかなぁ。
帰納法とかは結構使いそうだけど。
728デフォルトの名無しさん:2011/07/03(日) 00:56:43.82
ハッシュテーブルじゃね。
729デフォルトの名無しさん:2011/07/03(日) 03:50:03.01
鴻ノ巣原理は初めて聞いたわ
730ラプラスの天使 ◆daemontaDA :2011/07/03(日) 12:07:57.40
四則演算とシフト演算、これだけ知ってれば十分

あとは数学演算ライブラリがすべてやってくれるんじゃねw
731デフォルトの名無しさん:2011/07/03(日) 12:18:54.25
お前はそれで十分だよ
天才なんだから

おれら凡人はそれだけじゃあかんから、
コツコツと色んな事を学ぶ
732天使 ◆uL5esZLBSE :2011/07/05(火) 22:18:07.33
>>730
はぁ???
何その名前?ディスってんの?
天使ディスっといてただですむと思ってんの?
733デフォルトの名無しさん:2011/08/12(金) 22:09:51.02
ゲーム スレで聞こうか、ここで聞こうか、迷ってこっちに書き込みます。
海外のオープンソースのゲームのハナシなんですが
モンスターを攻撃すると、そのモンスターは殴り返してきて戦いが始まります。
モンスターは殴り返すばかりではなく、ときどき魔法攻撃で応戦してきます。
魔法攻撃というのは、火を噴いたり光線を出したりみたいなことです。

if (乱数(0, 99) < 15) 魔法攻撃(); else 殴り攻撃();
これまではこのような計算式でした。
「乱数(0, 99)」は0〜99の整数の乱数を発生する関数です。
つまり、上の式は15%の確率で魔法攻撃を出してたことになります。

ところが最近、このような修正が入りました。
if (乱数(0, 99) < 乱数(7, 15)) 魔法攻撃(); else 殴り攻撃();
これって、どういう意味か理解できないんですけど、みなさんわかりますか?

if (乱数(0, 99) < 11) 魔法攻撃(); else 殴り攻撃();
と同じじゃないかと思うんですが・・・

間違ってます?
734デフォルトの名無しさん:2011/08/12(金) 22:46:44.45
>>733
魔法攻撃の確率が7〜15%の範囲で揺らぐようにしたかったのでしょうけど、
乱数(7, 15)を毎回計算したら11%固定と同じですね。
735デフォルトの名無しさん:2011/08/13(土) 00:32:26.29
>>733,734
分散は同じではないかも。
乱数が一様分布のものだとすると、乱数を二つ使うことによって分布が変わるはず。
たぶん。
736デフォルトの名無しさん:2011/08/13(土) 00:40:55.28
1000万回試行してみたけど、どっちも魔法89%・武器11%くらいか。
737デフォルトの名無しさん:2011/08/13(土) 01:16:24.62
>>733
大半は気分の問題じゃないの
そこ突っ込まれたら泣くわ
738デフォルトの名無しさん:2011/08/13(土) 06:10:25.00
>>735
どちらも試行が独立事象で魔法の確率が同じなので同じ分布になります。
複数の一様分布の和が一様分布でない事はこの件に全く関係ありません。
739デフォルトの名無しさん:2011/08/13(土) 07:17:34.00
ゲームだと高速化とかその他の理由で乱数を毎回計算せず、乱数表を予め作っちゃってから順番に返すこともあるから
乱数表上のポインタを進めるという意味がある可能性が全く無いワケじゃないが
この場合は「単なる気分」に一票かなw
740デフォルトの名無しさん:2011/08/13(土) 08:22:42.85
出てくる数に意味があるのかな、と思ったけど、
単に if の条件というだけなら意味ないですな。
741デフォルトの名無しさん:2011/08/13(土) 10:59:02.71
>>738
そうなのかー。
確率難しいな…。
742デフォルトの名無しさん:2011/08/13(土) 13:39:54.81
使ってる乱数関数の疑似乱数があほすぎて(線形合同法の下位桁使ってるとか)
乱数精度悪かったのを無理やり回避してるとかの可能性も。
743デフォルトの名無しさん:2011/08/13(土) 15:08:19.04
この方法だと回避できねーじゃん
744デフォルトの名無しさん:2011/08/13(土) 15:13:53.98
(乱数(0, 99) / 乱数(7, 15) <1
としてみるとわかりやすいけど
分母が7から15の間は確率を曖昧にしたいという
意図が感じられるね。
745デフォルトの名無しさん:2011/08/13(土) 15:16:13.28
全く別の式を持ちだしても…
746デフォルトの名無しさん:2011/08/13(土) 15:20:38.11
正規分布乱数だったら、それぞれで結果や意味が変わりそう
747デフォルトの名無しさん:2011/08/13(土) 15:30:06.62
乱数を二つ使うことによって個々の乱数の責任を分散しているとも考えられるな。
748デフォルトの名無しさん:2011/08/13(土) 15:35:58.57
単に「わかってない」でFAだと思うが
749デフォルトの名無しさん:2011/08/13(土) 15:38:47.24
分かってない改変が投稿され、分かってないレスが連なるスレ
750デフォルトの名無しさん:2011/08/16(火) 17:57:35.01
定数なのかね
751デフォルトの名無しさん:2011/08/17(水) 00:02:48.36
>>734-750
レスありがとうございます。やっぱ変ですよねぇ。
プログラミング言語はjavaです。「乱数()」はjavaのjava.util.Randomのラッパーです。
開発元は英語しか受け付けてもらえないコミュニティなんですが
実は私、工業高校卒で英語はまったく話せないんです(T_T)
なんとか意思を伝えようと

> if (乱数(100) < 乱数(7, 15))
> and
> if (乱数(100) < 11)
> is the same

って書きこんだんですが、ロシア人もチリ人もアルゼンチン人もブラジル人もみな一様に
「乱数(7, 15) は 7〜15の乱数を発生させる関数です。いつも11固定ではありません」
みたいな返事です。

俺・・・算数は得意だが英語がまったく話せない
開発チーム・・・英語は話せるが算数がニガテ

こんな状況です。う〜ん困った。
752デフォルトの名無しさん:2011/08/17(水) 00:07:32.30
あ、ごめんなさい。
「乱数(100)」は「乱数(0,99)」とまったく同じ結果を返す関数です。
引数節約のラッパー関数です。中身は同じです。
753デフォルトの名無しさん:2011/08/17(水) 00:43:22.38
実際に1億回くらいのサンプルを出して見せれば一発じゃねーの。
754デフォルトの名無しさん:2011/08/17(水) 00:51:16.16
>>751
乱数を二回呼んでるくらいで、何か実質的な問題があるの?

変と言うほど変でもないと思うし、英語も通じてるみたいだし、
困る理由が分からないなあ。
755デフォルトの名無しさん:2011/08/17(水) 01:32:48.00
もうインフォグラフィックス(笑)で

0から99のセルを0から10まで(<11)埋めた1行のテーブル
計算値 11/100 = 0.11

0から99のセルを0から6まで(<7)
0から99のセルを0から7まで(<8)
:
0から99のセルを0から6まで(<15) 埋めた9行のテーブル
計算値 (7/100 + 8/100 + ... + 15/100 ) / 9 = 99/100 / 9 = 0.11

それぞれテーブルを画像化して見せてやればいいんじゃない?
756デフォルトの名無しさん:2011/08/17(水) 01:34:14.25
(7 + 8 + ... + 15) / (100 * 9) だな。視覚的には。
757デフォルトの名無しさん:2011/08/17(水) 08:05:10.90
>>754
>>733

「変更前と変更後で確率が変わらない」ことを開発陣が理解しているかが問題。


もし理解しているなら、

『 開発陣の気分的な問題で、ソースコードの見た目を変えてみた 』

という くだらない話で終わる。
もし理解してないなら、変更後のソースコードは開発陣が意図した変更に
なってないということであり、開発陣にとって問題あり。
758デフォルトの名無しさん:2011/08/17(水) 09:04:00.98
759デフォルトの名無しさん:2011/08/17(水) 10:36:45.83
いわゆる「KODAWARI☆」ってやつだな。

if (乱数(100) < 乱数(7, 15))
武器を使って確実に攻撃したいという理性(左片)と、でも魔法も使ってみたいな、という野心(右辺)が
モンスターの脳内アリーナ(ifステートメント)で毎回火花を散らせているいう様子をコードで表現したものだろう。

乾いた砂礫上の波紋に流水を見る「枯山水」に通ずるものがある。
760デフォルトの名無しさん:2011/08/17(水) 11:04:09.97
TRPGブーム全盛期にはいろいろとダイスの振り方やらその判定法やらに凝っては、
理工系の奴から「それ確率論的に同じじゃね?」とかツッコミが入るのがお約束だったなぁ。
761デフォルトの名無しさん:2011/08/17(水) 14:15:36.86
ttp://codepad.org/yOyceCS2
分散に優位差があるようには見えないな
762デフォルトの名無しさん:2011/08/17(水) 20:38:33.91
>>757
うん
乱数を複数回使うのが開発陣の意図通りのコードかもしれないし、
後で修正を加えるのを見越して適当なコードのままで残しているだけかもしれないし、
そもそも『数学的な意味で厳密な意図』が無いのかもしれないし、
動作テストしてみていい感じで動けばいいという判断かもしれないし、
確率的に意味が無いというのははっきりしているけど、他人のコードだしね
763デフォルトの名無しさん:2011/08/18(木) 03:54:28.86
アホが得意満面の顔で大手を振ってやって来た
764デフォルトの名無しさん:2011/08/18(木) 21:00:33.02
いらっしゃい
765デフォルトの名無しさん:2011/08/21(日) 19:55:35.18
変動し続けるグラフのデータ構造って何がいい?
オブジェクトを頂点にしとくのが無難?
それともmapで[参照元頂点,参照先頂点]って感じで格納しとくべき?
766デフォルトの名無しさん:2011/08/21(日) 21:12:37.06
疎なグラフなら後者だし、密なグラフなら隣接行列にするとかじゃなかったっけ?
767デフォルトの名無しさん:2011/08/22(月) 08:10:47.57
Wikipediaに載ってる様なその二択しかないの?
768デフォルトの名無しさん:2011/08/22(月) 22:09:04.88
ごめん、あんまり詳しくないのに答えるもんじゃないね。
the art of computer programmingとか漁れば、もっとマイナーなデータ構造があるかも。
力になれなくてごめんね。
769デフォルトの名無しさん:2011/08/22(月) 23:15:49.68
いや、ありがとう。
誰か詳しい人居ないかな。
頂点数が変動してても、頂点辺りのノード数固定とかだと
もっと効率の良い別の構造とかありそうな気がするんだよね〜。
770デフォルトの名無しさん:2011/08/23(火) 07:39:30.46
>>769
とりあえず、>>766 (Wikipediaに載ってる様な二択) でやってみてくれ

その上で、どのようなケースで何がどのように不満なのか、
そのようなケースは頻出するのか、まずい部分を洗い出してくれ

そうすれば、その部分を改善する方法を提示できる人が現れる「かも」しれん
771デフォルトの名無しさん:2011/08/23(火) 10:00:12.36
データ構造とアルゴリズムは連動しているので、
何をやりたいかによって遣うデータ構造も変わってくる。
772デフォルトの名無しさん:2011/08/29(月) 16:51:12.16
オイラー角で回転させるときの軸って親の軸とオブジェクトの軸どちらを使うのが一般的なんでしょうか?
773デフォルトの名無しさん:2011/08/29(月) 16:53:59.88
オイラー角に限らず、四元数だろうが行列直接作ろうが、回転行列欠けるときはオブジェクト基準じゃね?
774デフォルトの名無しさん:2011/08/29(月) 18:07:10.49
親の運動に従属して動いた結果の計算、というんでもない限り。

ていうかその場合は親の新しい座標系に従って世界系での位置と姿勢を算出するだけか。
775デフォルトの名無しさん:2011/09/14(水) 22:13:21.30
3頂点で構成されたポリゴンの集合体(メッシュ)をグラフで構築したとき、
ポリゴン集合体の全ての頂点を最速で巡回するいい方法ってある?
メッシュのレンダリングに使いたいんだけど。
776デフォルトの名無しさん:2011/09/14(水) 22:37:19.45
それはもしや巡回セールスマン問題というやつx?
777デフォルトの名無しさん:2011/09/14(水) 22:39:10.34
>>776
ちょっと違うだろ

メッシュのレンダリングに使うんだから、
単に巡回するんじゃなくて、三角形をひとつひとつ描くように巡回しないと
778デフォルトの名無しさん:2011/09/14(水) 22:47:43.09
>>777
意図してるところはそのとおりです。
779デフォルトの名無しさん:2011/09/14(水) 22:52:51.19
そのグラフを B-Rep や partial entity structure なんかの構造にすれば、
全ての面をたどったり、全ての頂点をたどったり、
開いているメッシュの境界線をたどったり、といったことが容易にできる

その手のメッシュ用データ構造の派生として、
Compact Array-Based Mesh Data Structures という論文に
配列ベースのコンパクトで速い方法が比較的分かりやすく書かれてた(と思う)
780デフォルトの名無しさん:2011/09/14(水) 23:01:06.22
ありがと。
論文が英語過ぎて読めんけど頑張ってみるわ。
781デフォルトの名無しさん:2011/09/14(水) 23:20:34.07
すまんな
日本語の解説サイトを紹介したかったんだが、
いくら探しても B-Rep とは何かというサイトしか見つからん
肝心の「どういう構造」で「どうやって使うのか」が英語しか無いんだ

C++ のソースから読み取るという手もあるが
782デフォルトの名無しさん:2011/09/15(木) 10:23:44.88
最近はTwitterの彼女の友達と俺の友達は穴兄弟みたいな集合知検索でも使われている
グラフデーターベースっていうのがあって
Polygon-->Edge-->Vertex
みたいな構造をこいつに登録しておいて
Traverseっていう探索エージェントに条件を書いてやれば簡単に辿れるよ
俺は Scala + Neo4j でいろいろ遊んでるがおもしろいね
783デフォルトの名無しさん:2011/09/16(金) 04:16:57.87
難しくて意味がわからん・・・
何を勉強すれば良いでしょうか
784デフォルトの名無しさん:2011/09/16(金) 07:17:43.83
>>783
そんなんで答えが得られると思ってるのか?
甘えるな

何をやろうとして、どこまで理解できて、何が分からないのか
可能な限り具体的に質問してくれ
785デフォルトの名無しさん:2011/09/16(金) 08:45:28.11
以上、女を堕とすテク「一度突き放しておいて、やさしく手を差しのべる」実践でした
心開いて股開く
786デフォルトの名無しさん:2011/09/20(火) 09:18:40.37
とある海外のオープンソフトのバグを治すのに
時刻の「時」を得る部分で「分」以下を丸める必要があった。
例えば 現在時刻が5時59分59秒なら6時を得る必要がある。
現状では 時=現在時刻÷3600 という計算式(少数切捨て)なので結果は5時になってしまうんだ。
そこで修正案をこう提案した。時=(現在時刻+1800)÷3600
これがおよそ1ヶ月前。
コミュニティの掲示板には「動作テストしてみます」というレスが付いたまま放置。
数日前から「誰かテストしてください」とか「テストOKですか」とかのレスが付き始めた。
でもなかなか修正されない。かなり致命的なバグなのに・・・
ガイジンさん、なぜ1800を足せば治るのか、理屈が理解できないのかな。
「四捨五入」みたいなもんですよ。時間なら「1799捨1800入」すればいいだけじゃん。
なんでわからないんかな。そんなに難しいのかな。
説明しようと思って「四捨五入」を英語に訳そうとしたら、「round off」だって・・・そりゃわからんハズだ。
日本語の「四捨五入」なら4以下は捨てる、5以上は切り上げる、ってわかりやすいけど
英語の「round off」だと理屈を説明しずらい。
そりゃアメリカ人には理解できんハズだ。をいアメ公、一生悩んでろ!
787デフォルトの名無しさん:2011/09/20(火) 09:32:23.83
四捨五入/切捨て/切り上げ = ceil/floor/round
それと俺だったらそんなマジックナンバー使ったメンテしにくいコードは採用しない
788デフォルトの名無しさん:2011/09/20(火) 10:17:39.87
そして閏秒で嵌まる、と。
789デフォルトの名無しさん:2011/09/20(火) 10:18:10.95
ROUND 1
790デフォルトの名無しさん:2011/09/20(火) 11:12:17.69
考え方の説明なら実数でやればよい。
0.5 hour = 0.5 x 3600sec で分かるだろう。
791デフォルトの名無しさん:2011/09/20(火) 18:21:42.62
実装はさておき、まずは仕様を理解してもらわないとダメじゃないかね。

- ceil if min >= 30 (it's half hour)
- floor otherwise

とか。
792デフォルトの名無しさん:2011/09/20(火) 18:26:52.73
仕様はわかっているが、
秒換算の式がわからないってのが本当なら、
式の具体的な値の例を列挙すると説得できるかも。
793デフォルトの名無しさん:2011/09/20(火) 21:05:07.81
>>786
純粋にプログラミングの為の数学と算数の話かと思ったら説明方法の話かよ
長文に期待して損した
794デフォルトの名無しさん:2011/09/21(水) 08:37:22.29
>>790
どこから 0.5 なんて数字が出てくるんだ?それ説明するのにかえって苦労するよ
795デフォルトの名無しさん:2011/09/21(水) 09:09:40.34
おまいは小学生かよ
796デフォルトの名無しさん:2011/09/21(水) 09:12:17.73
それ四捨五入じゃなくて
0.4999999999999999999999999999捨0.5入
797デフォルトの名無しさん:2011/09/21(水) 13:15:00.50
>>796
四捨五入の時は位を指定するだろう。
798デフォルトの名無しさん:2011/09/21(水) 13:58:44.60
>>796
頭悪すぎ
笑わせるな
799デフォルトの名無しさん:2011/09/24(土) 00:46:42.34
オープンソースなら修正したパッケージ作ってどっかにアップし、
コミュニティーにそのパッケージのリンク張ってやれば?
800デフォルトの名無しさん:2011/09/24(土) 12:57:06.62
パッケージ作るとか石器時代かっつーの
git で pull リクエスト送りつけてやったらええねん
801デフォルトの名無しさん:2011/09/24(土) 13:27:36.62
クラウド時代ですなぁ
802デフォルトの名無しさん:2011/09/25(日) 10:01:00.83
すずしくなってくるといつももっと勉強しないといけない焦燥感に駆られる
そんな俺が圏論の勉強をはじめてみますね
カテゴリー?「5(キリッ」
803デフォルトの名無しさん:2011/10/01(土) 00:59:17.67
5の補題か
804デフォルトの名無しさん:2011/10/01(土) 01:57:45.10
圏論ならしりとりで説明してたブログとかが結構分かりやすかったかもしれない。
805デフォルトの名無しさん:2011/10/01(土) 07:41:01.82
質問させて下さい。アークタンジェントの記述を、アークタンジェント関数がない言語に移すには何か方法がありますか?
具体的には、JavaScriptの
ans[0] = V / U;
ans[0] = atan( ans[0] ) / (Math.PI / 180);
このような記述をWindowsMobile用のMortScriptに書き直したいのです。
できないなら諦めますが、どなたかご存じの方いたらお願い致します。
806デフォルトの名無しさん:2011/10/01(土) 08:05:31.58
>>805
atan(x) = x - x^3/3 + x^5/5 - x^7/7 ... (|x| < 1)
807デフォルトの名無しさん:2011/10/01(土) 14:58:30.74
ttp://labs.techfirm.co.jp/iappli/910
このコードとか移植しやすそうかなー。
>>806の式での実装。
808デフォルトの名無しさん:2011/10/01(土) 20:54:09.50
>>805
応用次第では、表引きで充分じゃね?
809805:2011/10/02(日) 05:15:36.38
あの・・・す、すみません・・・。
次期バージョンのβ版に逆三角関数ありました・・・。
なんて言ったらいいのか、その、ごめんなさい。
810デフォルトの名無しさん:2011/10/02(日) 08:24:31.66
>>809
ここは質問スレではないから気にするな。

お題を振ってみたと思えばいい。
811デフォルトの名無しさん:2011/10/05(水) 15:02:04.41
透視変換はアフィン変換に含まれないよね?
812デフォルトの名無しさん:2011/10/05(水) 15:45:35.03
視点から伸ばした線分(視線)上に存在する点は全て同じ点に投影されること
からも透視投影変換は同型射ではないのは明らか

813デフォルトの名無しさん:2011/10/05(水) 18:29:56.38
そのための同次座標なんだっけ?
814デフォルトの名無しさん:2011/10/05(水) 20:38:27.91
同次座標ベクトル(x,y,z,w)のwで割ればーってやつか。アレは目からうろこだったわ。
815デフォルトの名無しさん:2011/10/23(日) 17:59:40.36
つぶれるアフィン変換もアフィン変換なんだから、
同型でないからアフィン変換でない、っていうのは乱暴のような
816デフォルトの名無しさん:2012/03/25(日) 18:10:03.62
http://neilwallis.com/projects/java/water/index.php
に書かれているソースのうち、aとbを求めてる以下のコードの意味が分かりません…
説明の
> We calculate an X/Y offset based on the current distance from the centre of the ripplemap and the magnitude of the ripple at this point.
に対応していて、1024は特に意味が無いんだろうなあ、という予想なんですが、
それより先、どなたか解説頂けないでしょうか。


//where data=0 then still, where data>0 then wave
data = (short)(1024-data);

//offsets
a=((x-hwidth)*data/1024)+hwidth;
b=((y-hheight)*data/1024)+hheight;
817デフォルトの名無しさん:2012/03/25(日) 21:37:19.32
波高(data)の分だけ、テクスチャの参照位置をずらして(=offset)、そこに波があるような描画をしてるだけ。
波高が1024段階の整数で表現されてるから1024って使ってるんじゃないかな。
818816:2012/03/25(日) 22:23:34.03
>>817
ありがとうございます。

a' = nx'
ただし、
a' = a - hwith
x' = x - hwith // current distance from the centre of the ripplemap

で、nが0<=n<=1を取るdata(magnitude of the ripple at this point)の関数にするために
n = 1 - data/1024 (1行目で代入する前のdata)
と決めてる、ってことですかね。
つまりdataが大きくなるにつれnが小さくなればそれっぽく見えるので
必ずしもこの関数である必要はない、というわけですかね…

819デフォルトの名無しさん:2012/03/26(月) 01:56:07.04
んー。

a=((x-hwidth)*data/1024)+hwidth;
≒x-(hwidth*data/1024)+hwidth;
≒x+hwidth*(1-data/1024)

だってことが分かれば、そんなに理解に苦労はしないっしょ。
0 ≦ (1-data/1024) ≦ 1

だろうから、hwidthは単にエフェクトの横方向の倍率表してるだけ。

波紋エフェクトのキモになってるのは
short data = (short)((ripplemap[mapind-width]+ripplemap[mapind+width]+
ripplemap[mapind-1]+ripplemap[mapind+1])>>1);
ここだから、他のとこは別に何でもいいっちゃいいね。
820デフォルトの名無しさん:2012/06/04(月) 23:01:53.86
「平均」の計算法で下記のようなのって間違ってます?

int *x = { ほげ,はげ,うんこ... }; //サンプルデータの配列
int ave = 0;
for (i = 0; i < 100; i++) {
    ave = (ave + x[i]) / 2;
}
printf("平均=%d", ave);
821デフォルトの名無しさん:2012/06/04(月) 23:20:16.93
>>820
ave は int じゃダメだろ。少数点以下が切り捨てられるから。
double ave = 0.0;
で試してみてよ。
822デフォルトの名無しさん:2012/06/04(月) 23:31:32.89
間違ってるだろ
http://codepad.org/yC0x5p3H
823デフォルトの名無しさん:2012/06/04(月) 23:35:27.63
ave = (ave * i + x[i]) / (i+1); のほうがいいな
824デフォルトの名無しさん:2012/06/04(月) 23:52:02.13
>>820
それは、例えば要素数が3つの場合、下記の等式が成り立つか、ということだろ?

(a + b + c)/3 = ((a/2 + b)/2 + c)/2

左辺は小学校で習う平均値の計算式
右辺は君が提示したプログラムを式にしたもの

左辺から右辺を引いてゼロになるか計算してみれば、質問しなくても分るだろ
で、一般の要素数 n でどうなるかは数学的帰納法で分るだろ

プログラム以前の話だよ
といっても、まさにプログラムのための数学の話だが
825デフォルトの名無しさん:2012/06/05(火) 00:10:52.95
doubleの丸め誤差とかを考えると、一番いいのは平均の定義どおり
平均 = (総和) / (要素数)
で求めるのがいいと思うよ。
つまり822の一番上の関数。
826デフォルトの名無しさん:2012/06/05(火) 00:40:54.63
  ,j;;;;;j,. ---一、 `  ―--‐、_ l;;;;;;
 {;;;;;;ゝ T辷iフ i    f'辷jァ  !i;;;;;  (集合Aの平均+集合Bの平均)÷2=AとBの平均・・・
  ヾ;;;ハ    ノ       .::!lリ;;r゙
   `Z;i   〈.,_..,.      ノ;;;;;;;;>  そんなふうに考えていた時期が
   ,;ぇハ、 、_,.ー-、_',.    ,f゙: Y;;f.   俺にもありました
   ~''戈ヽ   `二´    r'´:::. `!
827デフォルトの名無しさん:2012/06/05(火) 19:15:10.64
>>820
加重平均の一種としてそのようなコード使うことあるな。
828デフォルトの名無しさん:2012/06/08(金) 04:40:12.73
>>827
円周率を「3」で計算するゆとり世代ですね、わかります。
829デフォルトの名無しさん:2012/06/08(金) 05:22:16.66
↑アホ
830デフォルトの名無しさん:2012/06/08(金) 14:00:37.92
3 じゃなくて
およそ 3
だったぞ
少なからず漏れの記憶では
831デフォルトの名無しさん:2012/06/08(金) 14:34:51.73
「ゆとり」と煽る奴は「円周率が3」の話しか知らない
832デフォルトの名無しさん:2012/06/08(金) 19:29:57.95
>>820
逐次的に平均値を計算したいのでしょうか。
数列の先頭から要素を一つずつ取り出し、
その度にそれまでの平均値を更新していくような。

それでしたら、次の計算が使えます。

x[n] : 数列 x の n 番目の要素 (n = 1, 2, 3 ・・・)
a[n] : 数列の n 番目の要素までの平均値

a[n] = a[n-1] + (x[n] - a[n-1]) / n

>>820 のプログラムを改良するなら、こんな感じでしょう。
(まぁ、int 型なのは論外ですが)

ave = ave + (x[i] - ave) / i;

ただし、毎回丁寧に要素数で割る計算に比べて、誤差が蓄積し易いので注意。
833デフォルトの名無しさん:2012/06/08(金) 22:12:02.61
>>827
Sn = Σ (1/2)^(n-i)Ai になるわけか。

指数関数的に過去の寄与が減ってゆくわけね。
834デフォルトの名無しさん:2012/06/08(金) 22:41:01.57
死牙馬
835デフォルトの名無しさん:2012/06/09(土) 10:52:56.31
スイッチヒッターで
右打ちのときは打率2割
左打ちのときは打率8割

平均すると打率5割!
836デフォルトの名無しさん:2012/06/09(土) 13:14:02.90
右打ちした確率が 0.5 で、左打ちした確率も 0.5 なら、
5割の確率で打ったと言える。
0.5 * 0.2 + 0.5 * 0.8 = 0.1 + 0.4 = 0.5

でも、右打ちした確率が 0.7 で、左打ちした確率が 0.3 なら、
2割強の確率で打ったことになる。
0.7 * 0.2 + 0.3 * 0.3 = 0.14 + 0.09 = 0.23

と思ったんだけど、合ってるかな?
837デフォルトの名無しさん:2012/06/09(土) 16:26:56.05
>>836
何故0.3*0.3?
そこは0.3*0.8だろ。
838デフォルトの名無しさん:2012/06/09(土) 16:31:29.80
>>837
そうだよね、単なるミスだ

0.7 * 0.2 + 0.3 * 0.8 = 0.14 + 0.24 = 0.38

4割弱といったところか
839デフォルトの名無しさん:2012/06/09(土) 17:22:59.61
>>836
> 右打ちした確率が 0.5 で、左打ちした確率も 0.5 なら、
そこは確率じゃなくて割合だろ…
840デフォルトの名無しさん:2012/06/09(土) 18:10:12.31
>>830
試験は、3で計算していいだけで
教えるのは、3.14...で教えるぞ
うちのガキだってそこは知ってる
841デフォルトの名無しさん:2012/06/09(土) 21:36:32.11
大学入試だってlog 2 = 0.3で計算しろとか出るしな。
842デフォルトの名無しさん:2012/06/11(月) 02:33:17.74
int pi = 3.14159;
843デフォルトの名無しさん:2012/06/11(月) 07:03:03.97
>>842
それだと、計算の最初から円周率を3として計算するから誤差が大きすぎる。
いくらゆとりでも、円周率を3として数値を出すのは最後の最後だ。
844デフォルトの名無しさん:2012/06/11(月) 12:05:46.71
>>843
いろいろわかってない人なんだろうな
845デフォルトの名無しさん:2012/06/11(月) 18:25:54.18
お前ら、ゆとりゆとりと馬鹿にするけど、円を同面積の正方形に
直す作図をきちんと解けるんだろうな。
846デフォルトの名無しさん:2012/06/11(月) 19:52:05.11
やれるもんならやってみろ。
847デフォルトの名無しさん:2012/06/11(月) 21:21:20.54
>>845
まずヒモを用意します。
848デフォルトの名無しさん:2012/06/12(火) 02:08:58.48
円周率が3だと正六角形...
849デフォルトの名無しさん:2012/06/12(火) 10:06:00.83
円周率が3って3桁*3桁を小学校で教えなくなったからだろ?
850デフォルトの名無しさん:2012/06/12(火) 10:21:23.08
小数点以下の桁数が2桁以上ある乗算を、必修の範囲外にした、とかだったと思うが。

いずれにしても、たとえば柱のような形状の体積は「底面積×高さ」という一般法則があるのに、
入試で「円筒の体積」の問題を出したのは範囲外だのなんだのと、「個別のルールを、法則などを
考えることは一切せずに暗記せよ」というのが教育である、という根本的な心得違いが根底に
あって、それを是正するつもりは一切ないようだから、日本が今後復活する見込みはない。
851デフォルトの名無しさん:2012/06/12(火) 12:35:37.58
小学生の間は、背景にある意味はとりあえず脇に置いて於いて、
とにかく計算練習をさせる。

スポーツ感覚でクラス対抗やったり、計算クイズ合戦をやったり、
ご褒美を出したりして、可能な限り飽きさせない。
(クラス対抗やるなら、仲間のミスをフォローできるシステムだと尚良い)

計算練習だけさせるから、積分の計算くらいまでならできるだろ。

で、中学生になってから、そもそも君たちが使ってる「数」って何だろうね、
と言ってペアノの公理からスタートする。

こんな世界に生まれたかった。
852デフォルトの名無しさん:2012/06/12(火) 12:50:29.99
そろばん教室が関の山だった
853デフォルトの名無しさん:2012/06/12(火) 17:36:36.50
>>850
> 入試で「円筒の体積」の問題を出したのは範囲外
「円筒(円柱のような?)の体積はこのようにして求められる」という一言が問題に併記されていれば
問題ない気がするけど、それもなかったってことなのかなぁ。

なかったんだろうなぁ。とすれば問題の不備だなぁって思えるよ。
854デフォルトの名無しさん:2012/06/12(火) 20:46:36.60
円周率は任意の数値を使って良い。
ただし、「回答誤差×100点点数を差し引く」
とかならきっとみんな頑張る。
855デフォルトの名無しさん:2012/06/12(火) 21:51:19.06
>>854
間違えて円周率を虚数単位で計算しちゃった、テヘ

とかいうお茶目な生徒の点数はどうなるの?
856デフォルトの名無しさん:2012/06/12(火) 21:57:04.23
きっと虚数の点数がもらえる
857デフォルトの名無しさん:2012/06/12(火) 22:22:06.47
>>854
高校の頃, 持ち点100点で純粋に減点法, クラスの平均点が’マイナスなんて教師がいたな
#
858デフォルトの名無しさん:2012/06/12(火) 22:27:22.85
>>857
赤点もマイナスなら別に問題ないな…w
859デフォルトの名無しさん:2012/06/13(水) 16:19:26.29
3桁*3桁を小学校で教えなくなった合理的な理由は?

消費税の計算を出来なくする愚民化政策です
860デフォルトの名無しさん:2012/06/13(水) 18:15:15.84
3桁×3桁って、明示的に習ったかなぁ?
複数桁×1桁→複数桁×複数桁という流れだったような気はするけど、
それが今2桁までしかやらないとしても、問題ないような。

割り算掛け算の筆算でずらずらずらずら書かなくていいのはチラ裏にやさしくはあるけれど。
861デフォルトの名無しさん:2012/06/13(水) 18:52:53.50
いまどきの小学生は携帯の電卓もスマフォもカンニングも何でもありだからな
良い時代になったもんだ
862デフォルトの名無しさん:2012/06/13(水) 20:45:56.41
電卓やカンニングが意味をなさない問題を出すべきだよな。

この一連の式変形の中で興味深い点を挙げ、その理由を述べよ。
積分を使って解く面白い文章問題を作れ。

などなど。
こういうのを数問だけ出して、部分点を細かくして採点すればいいんだよ。
それだけで、これまでの授業でどこまで理解できているのか先生も生徒も把握できる。

テスト中スマフォで問題文を掲示板に投稿する馬鹿もいるだろうから、
答案内容があやしい奴は後日、数学の時間に不意打ちで答案の詳細を述べさせる。
863デフォルトの名無しさん:2012/06/13(水) 20:59:13.41
情報化社会にあった試験のやり方を考えるほうがいいんでないかい?
864デフォルトの名無しさん:2012/06/14(木) 05:47:44.15
単純に解凍形式を論述の形にすればいいのだけど
そうすると採点が死ねる
この辺は自然言語処理の世界の人に頑張って欲しいな
865デフォルトの名無しさん:2012/06/14(木) 15:29:10.06
>>862
言わんとすることはわかりつつ、野暮なツッコミをすると
> この一連の式変形の中で興味深い点を挙げ、その理由を述べよ。
これは、理解が追いついていない生徒と理解しきった生徒という対極にいる生徒が
「特に興味深い点はありません」と解答しかねない
866デフォルトの名無しさん:2012/06/15(金) 08:37:02.16
理解しきった生徒は興味なくても適当に採点者の気に入るような「興味深い点」を取り上げる実力はある
867デフォルトの名無しさん:2012/06/15(金) 12:24:39.90
論理的思考能力じゃなくて作文力を評価するのか?
それって数学じゃなくて国語のテストじゃね?
868デフォルトの名無しさん:2012/06/15(金) 12:36:48.60
人に分りやすく説明できなければ本当に理解したとは言い難い

というのを、数学ガールで学んだ
869デフォルトの名無しさん:2012/06/15(金) 19:29:02.96
漏れならロピタルの定理を使って
履修範囲外で0点になる自信がある
870デフォルトの名無しさん:2012/06/15(金) 21:26:02.38
つかった定理の証明ごと書けばもらえるんじゃねーかな。
871デフォルトの名無しさん:2012/06/15(金) 23:15:11.85
そもそも、採点者が理解できていないと・・・
872デフォルトの名無しさん:2012/06/19(火) 09:19:59.07
選択でも論述でもない画期的な回答方法を世に出せばいいんだろ
ノーベル教育賞を作ったら考えてやる
873デフォルトの名無しさん:2012/06/19(火) 09:54:49.96
n択は論理和しかない論理体系による論述と等価
874uy:2012/06/19(火) 13:45:15.17
http://ideone.com/9Du4H
Yコンビネータ(笑)

数学得意な人から見て
recursionはどうですか
875デフォルトの名無しさん:2012/06/19(火) 17:33:18.57
再起は、帰納法的定義・証明に使うもので、基礎中の基礎だけども、基礎過ぎてそんなに直接は使わない。
876デフォルトの名無しさん:2012/06/19(火) 18:47:39.66
直接は散々演習でやったけどな…w
877デフォルトの名無しさん:2012/06/19(火) 20:34:13.20
そりゃ、基礎大事だもん。
学校の演習では腐るほどやるだろ。
878デフォルトの名無しさん:2012/06/19(火) 21:14:18.22
ってそういう話じゃないか。

>>874
callを全部unfoldしたら、recursionはY-combinatorと等価なんじゃ?
879uy:2012/06/21(木) 00:04:36.31
しらね、言語処理系に聞けとしかいえない

あとそれはゴミ、
コードは更新された
def recursion &b
  f = ->*n{ b[ *n , &f ] }
end
880uy:2012/06/21(木) 00:06:39.30
http://ideone.com/DlkEp

並べるとYコンビネータ(笑)のゴミさが際立つ
881デフォルトの名無しさん:2012/06/21(木) 00:24:52.33
こうしてみるとrubyも十分変態言語の素養が備わっているよなぁ。
882デフォルトの名無しさん
lambda が ランバダに見える俺はバブル世代か。