WindowsでRuby/gslを使う方法

このQ&Aのポイント
  • WindowsでRuby/gslを使うための方法を教えてください。
  • gslが使えない場合は、別の方法でN次元の連立方程式を解くプログラムを探しています。
  • WindowsでRubyを使って1次連立方程式を解く方法について教えてください。
回答を見る
  • ベストアンサー

Windows で Ruby/gsl を使う(連立方程式)

Ruby/gsl をWindowsで使いたいのですがどうすればいいのでしょう。 現状、Windows マシンでRubyが使えるようになっていて、 http://www.gfd-dennou.org/arch/ruby/index-j.htm からダウンロードした NumRu-0.42.exe を実行しても require "gsl" はエラーがでます。 さしあたり、gsl でなくても、N次元の(方程式N本、未知数N)の 1次の連立方程式を解ければいいのですが、今後のことも考えて gslを使えるようにしたいのです。 Windows で gsl が使えないのであれば、あきらめます。 1次連立方程式の解くプログラムなどは公開されているのでしょうか。 どなたかご教授ください。

  • Ruby
  • 回答数1
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは、 おそらく、PATHの設定の問題ではないでしょうか? NumRu-0.42.exe ダウンロードして、実行してみました。 手持ちのWindows7環境では、 require "gsl" は問題なく通ります。 NumRu-0.42.exeでRuby本体もインストールされますが、呼び出しているruby.exeが電脳 Rubyプロジェクトのものか確認されましたか? (whitchコマンドはwindowsにはないので)コマンドラインで、 ruby -e "p $LOAD_PATH" でどの環境が動作しているか分かるはず。 NumRu-0.42.exeのインストールの最後に環境変数を設定するをチェックすると、インストールしたユーザのPATH等が自動で設定されますが、依然つかっていたRubyのPATHより後ろにPATHが設定されると思います。。 すでにRubyの実行環境をインストール済みであれば、 システム→(システムの詳細設定)→詳細設定→環境変数 ユーザとシステムにPATHがあるので、依然使っていたrubyのPATHを削除もしくは、電脳 Rubyプロジェクトのものより後に設定してみてください。

関連するQ&A

  • N連立方程式の解き方を教えてください。

    N連立方程式の解き方を教えてください。 未知:  n個の2次元ベクトル: {a_i | i=1,...,n }  なお、すべて大きさは1です。 |a_i| = 1 for all i  n個のスカラー: { λ_i | i=1,...,n }  ※ 未知数は 3n 個ありますが、ベクトルの大きさの条件から実際には 2n 個です。 既知:  n×n 個の 2x2 行列: {A_ij | i,j = 1,...,n } 問題:  以下の n 本の連立方程式から a_i と λ_i の値を出す。 i = 1,...,n に対して    A_i1 a_1 + A_i2 a_2 + ... + A_in a_n = λ_i a_i  (左辺は2次元ベクトルの和ですので、実際には 2n 本の   連立方程式になり、未知数と同数になります。) 考察:  n 個の λ_i が全部同じなら固有値問題に帰着できますが、  そうではなく、また、右辺が非線形なので困っております。 反復的な近似解法でも結構ですので、ご教授いただければ幸いです。 よろしくお願いします。

  • 連立方程式 未知数より方程式の数が多いとき

    線形代数での連立方程式についてです。 今現在線形代数を勉強しているのですが、未知数より方程式の数が多いときはどうなるのでしょうか? 解は一つに定まるか不定になる思うのでしょうか。。。。 なぜなら Guass elimination で計算すると、たとえば (1) (2) 1 2 | 3 1 2 | 3 0 1 | 2 0 1 | 2 0 0 | 0 0 0 | 2 (1)のような場合だと解が一つに定まり、(2)なら不定だになると思うからです。 しかし、ネットで検索すると以下のサイトで、”方程式の個数が未知数の個数よりも多い連立1次方程式は,一般には解が存在しない.”とありました。 http://www.geisya.or.jp/~mwm48961/linear_algebra/simul_eq1.htm なぜでしょうか?

  • 連立一次方程式を解くプログラム

    すこし煩雑な(21×11です)の連立一次方程式を解くプログラムを作りたいのですが 何か良い文献、HPなどは無いでしょうか? いろいろなものを見ましたが大体縦横が同じ(n次元?)の 計算のヒントみたいなのしか見つけれませんでした。 プログラムはほとんどやったことが無いので、 ソースなどが公表されていてそれをちょっと書き換えれば 目的のものがつくれるというのが理想ですが・・・。 解法はガウスジョルダンとかガウスサイデル あるいは他にもっとよいものがあればそちらで構いません。 また、連立一次方程式のちゃんとした答え(言い方悪いですね)が求まらない場合、 近似解を算出することになると思うのですが これはどういった基準で「解」とされるのでしょうか? 計算の反復回数とかでしょうか? まとまりのない質問ですがよろしくお願いします。 何かあれば補足をお願いします。

  • 格子運動の連立同次方程式

    格子運動の振動姿勢について式を導く過程をお尋ねしたいと思います。 質量M,m(M>m)をもつ2種類の原子が交互に配列して一次元結晶を作っている場合、最近接原子間だけにフックの法則に従う相互作用があると仮定したときに次の2式が成り立つ m(d^2u2n/dt^2) = f(u2n+1 - u2n) - f(u2n - u2n-1 ) ・・・・・1・1 M(d^2u2n+1/dt^2) = f(u2n+2 - u2n+1) - f(u2n+1 - u2n) ・・・・・1・2 fは復元力定数、u ( u0.u1,u2...)は原子の平衡位置からのずれを表しています。 解として u2n = Aexp(j(ωt+2nq)) u2n+1 = Bexp(j(ωt(2n+1)qa)) の進行波をもつとするこの2式(1.1と1.2)に代入すると振幅AとBを未知数とする連立同次方程式になるらしいのですが、この連立同次方程式に導く過程と連立同次方程式がどういう形になるのか教えていただけますか?

  • Σを含む連立方程式の解法

    Σを含む連立方程式の解法がわからなくて困っています。 例えば X=Σ(Ax^n+Bx^-n)*con(nθ) とします。nは1~∞です。 この式を二つの境界条件に代入してXに含まれる定数AとBを導こうとしています。nは下のような境界条件により決定するものです。 例えば x=a X'+X=0     x=b X=cosθ のような感じです。(具体的には違いますが今回は簡単のため) しかし、nが増加するのに伴って未知の定数が無限に増えてしまって答えが得られないのでは?と思います。 こうゆう場合はどのような考え方で解くのですか? どなたか教えてください。

  • 同次元連立一次方程式において自明でない解を持つ

    松坂和夫著『線形代数入門』からの質問です。 同次連立一次方程式においてn>mならば自明でない実数解を持つみたいです。 ↓同次連立一次方程式 a_11x_1 + a_12x_2 + … + a_1nx_n = 0 a_21x_1 + a_22x_2+ … + a_2nx_n = 0 …… a_m1x_1 + a_m2x2 + … + a_mnx_n = 0 この証明なんですが、mというのは方程式の数で、nというのは未知数の個数ですよね。 だったらm=nだとこの方程式が解けるようにおもえます。 命題の意味と証明がいまいち理解できないです。 この証明において著者は帰納法を使って証明しているのですが、いまいちピンときません。

  • 連立一次方程式を解く

    A[N×N] × X[N] = B[N]の式が与えられ、 X[N]について解く方法が知りたいです。 しかも、かなり大規模な計算です。 ここでの回答が困難であれば、ホームページや書籍を紹介して欲しいです。 ちなみに英語は分かりません。 連立一次方程式を簡単に解く方法にガウスの消去法がありますが、処理速度、メモリの扱いから言って、現実的ではないですよね。 バンドマトリクスも考えられますが、一応考えている行列は疎行列で対角線付近に非零が多いと思いますが、基本的に任意の行列になると思うので、バンドマトリクスが効果的とも思えません。 で、非ゼロだけを集めメモリ消費をおさえる、スカイライン法というのを知りましたが、どう言うアルゴリズムで、コーディングして良いのかも分かりません。 もしくは、既に数値解析用のライブラリがどこかで開発され、無料で公開されており、スカイライン法や他の解法も使用できるものは無いでしょうか。その時はルーチンの使用方法を教えてくれるとありがたいです。 私のプログラム環境はLinuxでgccかg++を使用しています。 または、SunOSでしょうか? 近々、2Ghz、1GMBになる予定。力技も可能? また、ネットワークを利用して並列処理をする技術は持ち合わせていませんし、環境もありません。 希望は上記式のNが数万以上の連立一次方程式を解きたいと思っています。億行くかな? 色々探しても数値解析となるとFORTRANに関するものが多いのはなぜ?CやC++では行われないのかな?

  • 行列・非同次連立一次方程式

    「非同次連立方程式の解が一意に決まるとき、係数行列と拡大行列の階数の関係と、その理由を説明せよ」という問題について、やや曖昧なところがあるので質問します。 まず階数の関係については、係数行列をm行n列としたとき、(係数行列の階数)=(拡大行列の階数)=nとなった場合に、解が一意に定まるという解答だと思うのですが、これで正しいでしょうか? 続いて、その理由について、係数行列がn列ということは、未知数がn個あり、階数がnということは式がn個並ぶはずなので、n個の未知数にn個の式で一意解になるというのは、なんとなくわかるのですが、やや説明が曖昧な気がして、悩んでいます。 もし、これよりも明解な理由があれば、ご教授願いたいです。よろしくお願いします。

  • Mathematica で2元4次連立方程式を解くには・・・

    教えて下さい! 2元4次連立方程式{f(x,y)=0, g(x,y)=0} (関数fとgはxとyの4次方程式です。)について、 例えば、[x,-10,10]のような限定された範囲で 実数解(x,y)を Mathematicaを使って、30桁精度で数値的に求め、 それをx,yの2次元プロットしたいと思っております。 Mathematica のどのような関数を組み合わせれば これができるか、ご教示下さいませんでしょうか? よろしくお願いいたします。 (自分でC言語でプログラムした場合、解けるには解け るのですが、有効数字の桁数が十分でなく、部分的に 数値が丸まってしまい、プロットがとぎれてしまう問題 があったので、有効数字を自在に調節できるMathematica でやってみようと思ったのですが、例えば、安直に Plot[N[Solve[{f == 0, g == 0}], 30], {x, -10, 10, 0.01}] としてもダメでした。NRootなども検討しましたがうまく 行きません。)

  • 連立常微分方程式

    x(t)をn次元ベクトル、A(t)をn次正方行列として、 dx/dt=A(t)x (1) なる連立微分方程式を考えます。 関数の行列V(t)の各列ベクトルが式(1)の解で、V(t)が正則であるとき、 V(t)を基本行列と呼びます。 V1(t),V2(t)が式(1)の基本行列のとき、定数の正則行列について V1(t)・T=V2(t) (2) が成り立つことを証明するには、 d(V1^{-1}・V2)/dt=0 (3) を示せばV1^{-1}・V2=T(定数行列)となって、(2)を証明できるのですが、 どうすれば(3)が示せるのかわかりません。