query: tag:math

MuPADが有料になっていたので、Maximaを試してみました。
Maximaは、MathematicaやMaple, MuPAD等のような数式処理を行うソフトウェアです。
MacOS環境ではportを使えば以下の1行でインストールできます
(ちょっと時間がかかりますが)

pre>>
% sudo port install maxima
<<--

readlineが恋しいので、maximaを起動するには以下のようにrlwrapを使います。

pre>>
% rlwrap maxima
<<--

基本的な使い方は以下の通り。

微分

pre>>
(%i) diff(f(x), x);
<<--

積分

pre>>
(%i) integrate(f(x), x);
<<--

因数分解

pre>>
(%i) factor( ..式.. );
<<--

多項式に展開

pre>>
(%i) expand( ..式.. );
<<--

単純化

pre>>
(%i) ratsimp( ..式.. );
<<--

求根

pre>>
(%i) solve(f(x), x);
(%i) solve(f(x) = a, x);
<<--

終了

pre>>
(%i) quit();
<<--

posted by genki genki on Tue 1 Sep 2009 at 08:42 with 0 comments

Fredholm型積分方程式(第二種)

[math]
\phi(x) = f(x) + \lambda \int_a^b K(x,t),\phi(t),dt
[/math]

Volterra型積分方程式(第二種)

[math]
\phi(x) = f(x) + \lambda \int_a^x K(x,t),\phi(t),dt
[/math]

posted by takiuchi takiuchi on Tue 21 Jul 2009 at 17:59 with 0 comments
ポジティブ/ネガティブ投票による正しいランキング方法が以下の記事で紹介されています。 [How Not To Sort By Average Rating](http://www.evanmiller.org/how-not-to-sort-by-average-rating.html) この計算方法では、投票数が少ない場合には分散が大きく不正確な評価で、 投票数が多くなるにつれて分散が小さく正確な評価が得られているという事を考慮しています。以下数式 [math] \frac{\hat{p}+\frac{z^2_{\alpha/2}}{2N}\pm{}z_{\alpha/2}\sqrt{ \frac{\hat{p}(1-\hat{p})+\frac{z^2_{\alpha/2}}{4N}}{N} }}{1+\frac{z^2_{\alpha/2}}{N}} [/math] これはScoreの[math]1-\alpha/2[/math]信頼区間を表しています。 この信頼区間の下界をランキングのスコアにすれば良い事になります。 ここで、[math]\hat{p}[/math]は、 です。全体に占めるポジティブ投票数の割合ですね。 [math]z_{\alpha/2}[/math]は標準正規分布上の [math]1-\alpha/2[/math]信頼区間の有意確率です。 さて、五段階評価によるRatingに同様のテクニックを適用する場合はどうしたらいいでしょうか。 単純に、1回の投票を4度のpositive/negative投票行為だと考えると (例えば星1つは[-,-,-,-], 星3つは[+,+,-,-])、以下のような [math]\hat{p}'[/math]を使えば良さそうです。 [math] \hat{p}'=\frac{\sum_{i\in{[1,5]}}(i-1)N_{i}}{4N} [/math] 従って、最終的にこんな感じになります。 [math] \frac{\hat{p}'+\frac{z^2_{\alpha/2}}{2N}\pm{}z_{\alpha/2}\sqrt{ \frac{\hat{p}'(1-\hat{p}')+\frac{z^2_{\alpha/2}}{4N}}{N} }}{1+\frac{z^2_{\alpha/2}}{N}} [/math] Rubyコードで表すとこんな感じですね。 ruby>> require 'statistics2' def score(ni, alpha) n = ni.inject(&:+) return 0 if n == 0 m = ni.size z = Statistics2.pnormaldist(1-alpha/2) phat = m.times.zip(ni).inject(0){|s,(i,j)| s + i*j}/((m - 1.0)*n) (phat + z*z/(2*n) - z*Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n) end <<--
posted by genki genki on Sun 10 May 2009 at 09:48 with 0 comments

時々忘れるのでメモ。

|
|
|引数の数,英語(A),英語(B)
|
|0,constant function,==
|1,unary function,monadic function
|2,binary function,dyadic function
|3,ternary(trinary) function,triadic function
|4,quaternary function,tetoradic function
|不定/可変,multinary function,variadic function

5つ以上の場合は、
quinary, senary, septenary, octonary, nonary, denary, undenary, duodenaryなどと続きます。

posted by genki genki on Fri 10 Oct 2008 at 03:41 with 0 comments

Control Variate
モンテカルロ求積法などでVariance reduction
の為に利用されるテクニックです。

統計量[math]m[/math]が与えられた時、期待値は以下のように表します。

[math]
\mu=E[m]
[/math]

この時、期待値が[math]E[t]=\tau[/math]であり、
相関係数(correlation coefficient)が
[math]\rho_{mt}=Corr[m,t][/math]であるような統計量
[math]t[/math]があるとすると、以下の式で表される

[math]
m^\star=m-C(t-\tau)
[/math]

は、[math]\mu[/math]に対して不偏(unbiased)です。Cは任意の定数です。

ここで、
[math]\sigma_m[/math], [math]\sigma_t[/math]をそれぞれ、
[math]m[/math], [math]t[/math]の標準偏差(standard deviation)
とした時、定数Cを以下

[math]
C = \frac{\sigma_m}{\sigma_t}\rho_{mt}
[/math]

のように選ぶと、
[math]m^\star[/math]の分散は最小化され、以下のようになります。

[math]
V[m^\star]=(1-\rho_{mt}^2)V[m]
[/math]

元の統計量[math]m[/math]の分散に対して、
[math]\rho_{mt}^2[/math]の分だけ相対的に小さくなります。

すなわち、[math]m[/math]と高い相関関係
(正の相関でも負の相関でも良い)にある
[math]t[/math]が既知であるときに、[math]t[/math]を使って
[math]m^\star[/math]の期待値の推定量を求めることで、
[math]m[/math]の期待値の推定量を効率よく推定することができます。

See Also

posted by genki genki on Sat 19 Jul 2008 at 02:08 with 0 comments

D言語やPythonのように、複素数リテラルが欲しかったのですが、
無かったのでそれっぽい動きをさせるようにNumeric#iを定義してみました。

numeric_i.rb

ruby>>
require 'complex'

class Numeric
def i
self * Complex::I
end
end
<<--

これだけです。あとは以下のようにして使います。

ruby>>
require 'numeric_i'

1 + 1.i #=> Complex(1, 1)
(Math::E ** (Math::PI.i)).real #=> -1.0
<<--

(自分が)簡単に使えるように、GitHubでGemを作っておきました。
利用する場合は以下の手順で導入できます。

pre>>
gem sources -a http://gems.github.com
sudo gem install genki-numeric_i
<<--

名前空間のお陰で、シンプルなGemも気軽に公開できて良い時代ですね。

See Also

posted by genki genki on Thu 10 Jul 2008 at 20:15 with 0 comments