[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 19:19 / Filesize : 83 KB / Number-of Response : 367
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 06:30:23 ]
プログラムに必要な数学、算数に関する話題について語りましょう。
TIPS/Q&Aスレです。
宿題は自分で解き終わってから持ってきましょう。

前:プログラミングの為の数学と算数 vol.2
pc11.2ch.net/test/read.cgi/tech/1094368921/

52 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 05:09:30 ]
3組以上の可能性は考えなくて良いのだろうか?


53 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 08:38:43 ]
点と近傍点k個を繋いだ線分の傾きと切片を新たなxyとして係数空間にマッピングして
山をみるとかかな。ハフ変換の亜種になるのだろうか。

54 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:55:17 ]
まあ課題は2本の直線だから
媒介変数表示で 0〜∞が直線A 負数が直線Bになるような表現が出来れば
いけそうに思えてきた

57 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:54:01 ]
>>53が筋が良さげに見えるな

58 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:14:11 ]
(ax + by)^2 = (cx + dy)^2
みたいな式が、交差する2直線になるんで、
これをベースに最小二乗法つか使ってみたら?

59 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:15:37 ]
ああ、2直線の交点が原点でない場合、
(ax + by)^2 = (cx + dy + e)^2 とかね。

60 名前:デフォルトの名無しさん [2008/01/18(金) 18:17:50 ]
一般の2次式を取り扱ったほうが簡明



61 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:28:38 ]
>>59
その式から誤差はどう計算するの?

62 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:31:50 ]
>>60
課題らしいから、2直線以外の結果が得られるのはまずいのでは?

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

最小二乗法は、式さえ分かってれば直線に限らずどんな関数でもフィッティングできる。

63 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:33:57 ]
ああ、そうか x1,y1 って点があったら、その式のxに x1を代入して
yを求めて、複数の答えが出るから、それぞれ (y-y1)^2 出して小さい方を採用すればいいのか

でも、小さい方を採用するって事は非線形だから、解を出すのに
普通の直線みたいに楽に出せないな。

64 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:50:03 ]
>>65
それは無理。
y = ±(ax + b)
みたいな式が出てくるはず。
“2直線”みたいな変な関数を、
1価の陽関数ではあらわせない。

68 名前:デフォルトの名無しさん [2008/01/18(金) 18:52:01 ]
yについて解けば2解出る それぞれについて調べる

69 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:05:36 ]
>>68
それだと最小二乗法的な結果得られないって。

70 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:22:53 ]
>>68 それについて調べるといっても、サンプル点1点毎に、
どっちが小さいかって関数が必要になるから、結局は数式で解けなくて
数値解として、微分して0の箇所を探す事になる。

つまり、2直線の方程式のまま、誤差の小さい方を選択するのと全く同じ事。
でも、微分ゼロ点は複数あるのが確実だから、ランダムにシャッフルしては前回より小さくなってないか
調べる事になるわけで、コレがホントに最小かどうかってのは難しいだろな。



71 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:24:37 ]
2式を f(x) g(x) としたときに、距離関数 d(y) を y = f(x) および g(x) において極小値を持つような
4次関数として定義できれば、可能なのかな。

自分には数学的に解く自信がないけど。

72 名前:71 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:44:31 ]
>>71
そんな凝るなら、>>64でよくね?

74 名前:71 mailto:sage [2008/01/18(金) 22:48:33 ]
>>73
自分には>>64の式が理解できない。
というか、バグってる気がしてならない。

75 名前:デフォルトの名無しさん [2008/01/20(日) 02:19:44 ]
Longest Increasing Subsequence問題をDPで解くってのがさっぱりわかんない。
だれか解説して。

76 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 12:13:00 ]
diff も Longest Increasing Subsequence問題というやつなのかな。

以前、予備知識もなしに diff もどきを作ったことがあるけど、最終的にはパート図で
クリティカルパスを求めるアルゴリズムになって、ちょっと意外な感じがした。もっと効率的な
アルゴリズムも在るんだろうけど。

77 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:03:39 ]
>>78
何が知りたいかわからんが、
1+1/2+1/4/+...=、についてなら、
四角形の半分を塗りつぶして、残りの半分を塗りつぶして、残りの…と続ければわかるよね?

82 名前:81 mailto:sage [2008/01/20(日) 22:04:19 ]
うあ、遅かった。ちゃんとリロードしないとな。

83 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:07:32 ]
> 四角形の半分を塗りつぶして、残りの半分を塗りつぶして、残りの…と続ければわかるよね?
わからん

84 名前:81 mailto:sage [2008/01/20(日) 22:27:18 ]
>>83
わかりづらかったかな。
半分ずつってのが、1/2, 1/4, 1/8,..に対応していて、
半分ずつ塗りつぶしていく→最終的に全部塗りつぶされる≒1
ということなんだけど、説明下手でごめんなさい。

85 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:29:33 ]
>84
SUGEEE

86 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:20:34 ]
>>84
計算時間と面積は関係無いだろ?

87 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:05:46 ]
>>84==81
それだといつまでも塗りつぶしが終わらないのでは

88 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:07:24 ]
2Nの話をしてるんじゃないのか?

89 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:25:10 ]
離散の世界だから有限で終わる

90 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:54:48 ]
>>80
79じゃないけど、そういうのは高校数学の「数列の和」とか
そのあたりでやる気がする。



91 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:10:44 ]
>>90
kwskお願いします

92 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:48:55 ]
5050 + 101 = 5151

94 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 03:14:50 ]
-100 x -99 x .... x 99 x 100
を求めなさい


96 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 03:16:28 ]
>>86
N + N/2 + N/4 + N/8 + ... = N (1 + 1/2 + 1/4 + 1/8 + ...) → 2N

97 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 03:16:50 ]
>>95
0

98 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 03:42:32 ]
1/2! - 1/3! + 1/4! - 1/5! ....

99 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 03:44:00 ]
>>98
わからん。計算方法まとめてあるページ教えて。

100 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 04:20:46 ]
連分数?



101 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 07:32:51 ]
テイラー展開だろ

102 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 08:16:06 ]
べき乗に「^」使う人良く見かけるけど
何でなんだろうね
CだとXORの記号なのに
漏れはx**yの方が好み


104 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 08:19:32 ]
google 電卓も ^ がべきだし Excelがそうなってるからだね

105 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:33:01 ]
数学板とかでは TeX 書式準拠だしね、数式。
^ はベキ。

106 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 11:25:51 ]
ASCIIの '^' は、上向き矢印(↑)だったことがあるから

107 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 11:27:40 ]
あと、BASICでも^をべき乗に使っているものがある。
**はFORTRAN由来。

108 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 11:30:53 ]
POWER(x,y)が好み

109 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 14:40:55 ]
>ASCIIの '^' は、上向き矢印(↑)だったことがあるから
ASR33 (TTY) だったっけ?
言語としては APL かな?

110 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 17:39:28 ]
ていうか「**」のほうが少数派だよな



111 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:39:35 ]
FORTRAN やら Ruby やら gnuplot やらは ** だな。
俺は TeX 的に ^ を使う派だが。

112 名前:デフォルトの名無しさん [2008/01/21(月) 20:43:47 ]
log(n!)の近似値っていくつでしたっけ?

113 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:08:27 ]
スターリングの公式

114 名前:48 mailto:sage [2008/01/24(木) 02:25:40 ]
以前、2本の回帰直線が交差するようなデータを近似しようとして
質問した者です。

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

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

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

ハフ変換は、おそらく統計学での回帰分析や主成分分析、
クラスタリング処理等と何かしら対応関係があるような気がします。
統計学はまだ学習中ですが、なんとか理解していきたいです。

115 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 02:42:54 ]
おお
時期的にもしかして卒論?
がんばれ

116 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:15:09 ]
すげえ
やっぱ技術のある人はすごいな

>>116の上のこのソースって言語何?

118 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:20:48 ]
C#だろ

119 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:44:26 ]
あーそうなのか
拡張子知らなかったわ
d

120 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:29:40 ]
誤差を最小にするんじゃなくて、一致度を最大にするような定義にしたらどうなのかな
Σexp(-(x-Xn)^2) が最大になるというような定義





121 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:03:21 ]
>>116が顔文字だと思った人の数

122 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:59:39 ]
>>120 が顔文字に見える

123 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 (約分する場合)

125 名前:123 mailto:sage [2008/01/26(土) 16:30:29 ]
>>124thxです
凄い!プチ神が、降臨シマスタ
カミングアウトしますが、実は計算がとても苦手なんです
実際試験中に、計算方法(式)が分かっても
途中で計算を間違える人なので物凄くありがたいのですが、一つ質問させてください
7E.3A
= 0x7E3A / 0x100
整数化するために、0x100を乗してますが、どんな場合でも0x100を乗したらいいのでしょうか?
例えば、D7E.3Aの場合
D7E.3A
= D7E3A / 0x100
でいいのでしょうか?

126 名前:123 mailto:sage [2008/01/26(土) 16:39:00 ]
スマン、訂正です
>>×整数化するために、0x100を乗してますが、どんな場合でも0x100を乗したらいいのでしょうか?
○整数化するために、0x100を除してますが、どんな場合でも0x100を除したらいいのでしょうか?

127 名前:123 mailto:sage [2008/01/26(土) 16:40:44 ]
スレ汚しごめんなさい、頭のいい人がいるので、興奮して、あわててます
○整数化するために、0x100で除してますが、どんな場合でも0x100で除したらいいのでしょうか?


128 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:57:17 ]
別に、>124が特段頭がいいわけじゃないから落ち着けよ。あんたが間抜けなだけなんだから。
何も16進数を持ち出すまでもなく、10進数でも筆算のときに同じことをしているんだぞ。
例えば、123.45に6を掛けるときにどうするか考えてみろ。
一旦小数点のことは忘れて12345*6を計算し、その結果に123.45同様右から二桁のところに小数点を書くわけだ。

130 名前:123 mailto:sage [2008/01/26(土) 17:06:10 ]
>>128
>>129
ありがd、とてもよくわかりました
ここは凄い板ですね、感動シマスタ
色んな参考書や、サイト見てるけど、124氏のような解説は無かった



131 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:13:50 ]
16進数の小数があってるかどうか分からないって?
適当な数だけ下駄を履かせりゃいいだろ。

132 名前:デフォルトの名無しさん [2008/01/26(土) 21:45:15 ]
ラムダ計算の勉強をしたいのですが、いちばんやさしい入門書を紹介してもらえませんか?

133 名前:デフォルトの名無しさん [2008/01/27(日) 01:05:27 ]
計算幾何学勉強しようとしてんだけど
普通の幾何学からやらんとダメか?

134 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:36:05 ]
計算機科学じゃなくて計算幾何学のほうだとすれば
ある程度は幾何学わかってないと自分が何やってるかすら
把握できないんじゃないかと思うけど

135 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 06:20:34 ]
>123,>132,>133
お前等にはプログラミングとか向いてないよ。
馬鹿すぎる。
諦めろ。

136 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 10:47:04 ]
中学生かも知れないじゃないか

137 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:04:49 ]
>>136
中学生が会社に「プログラミングをさせてください」ってお願いするのか?

138 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:23:00 ]
>>135
現代の現場でのプログラミングの主流はライブラリ検索型。

つまり、全てのライブラリが用意されていて、そのライブラリの使い方を調べて組み立てるだけ。
だからこういう質問が出る方が適性があるとも言える。


139 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 12:47:02 ]
>>123 >>132 >>133 >>138
死ね


140 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 16:46:57 ]
>>132
いちばんやさしいかは知らんが
www.amazon.co.jp/dp/4839920818/



141 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 19:47:29 ]
馬鹿下駄問題かもしれませんが、教えてくださいエロイヒト
逆ポーランド表記法の問題です、式と答えが、あってるかどうか教えてください
【問題】
Y = ( A + B × C ) ÷ ( D - E )
上記の式を、逆ポーランド表記法で表しなさい
【式】
括弧の中から先に
Y = ( ABC×+ ) ÷ ( DE- )
括弧と括弧の割り算
Y = ABC×+DE-÷
最期に=の計算
YABC×+DE-÷=
【答え】
YABC×+DE-÷=
これで合ってますでしょうか?

142 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 21:01:06 ]
いつも思うんだが
ポーランド表記法に改めて
「逆」を付ける理由が分からん


143 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 21:18:37 ]
記法が逆になってるじゃん。

144 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 21:21:27 ]
ポーランド表記法は + 1 2 だから。

----

で、問題のほうだが、

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

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

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

という状態のスタックに "=" という演算子による演算を適用する、ということになる。
問題の式における Y とか = の意味がそういうものだというのなら問題ないのだが。

145 名前:141 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 22:24:47 ]
スタックに入る時点では変数として入って
それを読み出すときに文脈によって右辺値または左辺値として
評価されるという言語かもしれないじゃないか

それにそもそも=は比較演算子かもね

147 名前:141 mailto:sage [2008/01/28(月) 22:37:37 ]
>>146
どうもです

148 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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変換/ラプラス変換や周波数特性が凸凹でないという条件と同じですから
ヒント等ございませんでしょうか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<83KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef