matlabでsymsを使う方法とおすすめの入門書について

このQ&Aのポイント
  • matlabでsymsを使うためには追加のtoolが必要です
  • f=x^2-x-1でf=0をxについて解く場合、どのようにmatlabに入力すればいいのか分からない
  • 初心者におすすめのわかりやすいmatlab入門書やサイトを教えてください
回答を見る
  • ベストアンサー

matlabについて

こんにちは。matlabについての質問です。 matlabについてまったくの初心者なのですが、大学のパソコンに入っているmatlabでsymsという変数の指定をしても、エラー表示がでてしまいます。これはどうやらmatlabに追加のtoolが入っていないと使えないということが調べていたらわかりました。この場合たとえば、f=x^2-x-1でf=0をxについて説くという場合どのようにmatlabに入力すればいいのですか?いろいろ調べたのですがよくわからなくて・・・。また、僕みたいな超初心者でもわかりやすいmatlab入門書やサイトで、お薦めの本などありましたら、教えていただきたいです。お願いします。

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

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

ええと一応念のため。参考意見として聞いてください。 ずーっと眺めていたんですが、教えてgoo!に「Matlabで……」って質問は結構上がるんですけど、レスって付きにくいんですよ(笑)。 と言うのも、 1.Matlabは個人で所有するには高すぎる。 2.そもそも研究者用なんでユーザー数が少ない。 ですから、Matlab互換と言われるGNU OctaveかScilabの方が回答してくれる人が増えるかもしれません。これらだったら大学の端末以外で個人所有のPCにも無料でインストール出来て使えますし、少なくともコッチの環境とそちらの環境を合わす事が可能です。 いずれにせよ、Matlab関係の情報がここに限らず、ネット上探しても比較的少ないのは、そう言う理由があると思われます。とにかく値段が高いしユーザー数が少ないし専門的にならざるを得ないから、です。 さて、元々MatlabとかOctaveとかは「数値計算用のソフトウェア」です。確かに検索した限り、MatlabではSymbolic Math Toolboxesと言うライブラリを追加すれば文字式を使った代数計算が出来るような事が書いてありましたが、原則、数式処理はMatlabとかOctaveの範疇じゃないです。ましてや、大学のMatlabにライブラリが入っていない以上、どうしようもないでしょうね。 一応注釈しておきますが、「計算用ソフト」と言っても2種類あります。 ・数値計算ソフト ・数式処理ソフト 前者は「実際に数値を入力して計算結果を見る」為のソフトで、広義ではMicrosoft Excelなんかも含まれます。例えば方程式があったとしても「抽象的に文字式を処理して解を見る」と言うのは原則的に無理で、実際何らかの数値を引数として与えて「計算結果を見る」と言うのがこの分野のソフトです。Matlabなんかはコッチに含まれます。 後者が貴方が求めてる分野のソフトウェアです。これは「計算する」と言うよりどっちかと言うと「記号処理」の分野なんですね。一つの方程式を「数式として解釈する」んじゃなくってテキストとみなして変形していく、ってのが動作原理です。これは「方程式を文字式として解釈して解を出せる」んですが、生憎、需要が前者に比べれば圧倒的に少ないです。有名どころではMathematicaとかMapleと言うソフトウェアがあります。既出のMatlab用ライブラリ、Symbolic Math Toolboxesと言うのは、この「Maple」と言うソフトウェアの核をMatlab上で扱えるようにしたもの、と言う話ですね。 と言うことは、まずはやるべき事は大学のコンピュータに「Mathematica」ないしは「Maple」が入ってるのかどうか調べてみる事でしょう。良く分かりませんが、仮に「Mapleが使える」んだったらわざわざMatlabでSymbolic Math Toolboxesを使う必要がない、ってんでインストールしてない可能性もあります。 いずれにせよ、原則的にはMatlabは「貴方がやりたい計算」を行う為のソフトウェアではない、と言う事なんです。 一応ここで「Maxima」を紹介しておきます。これは数式処理用のフリーウェアで、「貴方がやりたい事」に対してはドンピシャだと思います。 GNU Maxima: http://maxima.sourceforge.net/ これならコマンドラインで solve(x^2-x-1,x); と入力すれば「f=0をxについて解く」事が可能となります。 試してみてください。

dakadaka22
質問者

お礼

なるほど。根本的にMatlabというソフトについての解釈が間違えていたんですね。とても、参考になり助かりました。学校のコンピュータにMathematicaが入っていたと思うのでそちらで試してみます。 ありがとうございました!

関連するQ&A

  • MATLAB ヤコビアン行列 変数の指定

    MATLABでヤコビアン行列を求めるプログラムを組みたいのですが、MATLAB初心者のため、どうしても変数を指定するところから先に進むことができません。 変数V(1)…V(10)、Y(1,1)…Y(10,10)には、本当は数値を入れたいのですが、シンボリック式でないとヤコビアン行列は扱えないようなので、symsで上の変数をシンボリック化したいと思っています。 上のように…と省略しているように、変数を指定する際、V(1)…V(10)の10個とY(1,1)…Y(10,10)の10×10=100個を羅列せずに省略して書く方法はありませんか? どなたか分かる方よろしくお願い致します。

  • MATLABでの標準偏差

    MATLABでの標準偏差 MATLABで入力するいくつかの数値の標準偏差が分かっているのですが、 その変数たちで作られる関数の標準偏差を求めることは出来ますか? 例えば、x、yに標準偏差を導入した場合、 f(x、y)の標準偏差をもとめたいのですが。 たとえば、f(x、y)=xyだった場合、 まず、どのように、x、yの標準偏差を導入し、 どのようにfの標準偏差を求めればよいでしょうか? コマンド文を教えてください。

  • matlabについて教えてください

    プログラミング初心者です。matlabについて教えてください いまmatlabのプログラム上に、x, y, z, という、それぞれ5行1列の変数があります。 これらをまとめて、linuxのテキストエディタ(geditなど)で読み込める1つのファイルを作りたいと思っています。 作りたいファイルは、1列目にx、2列目にy、3列目にz の値が並んでいるような感じです。 どうかやり方を教えて下さいますようお願いします。

  • matlabにおける行列の格納

    matlabにおける質問です。 (matlabもとよりプラグラミング初心者です。) 例えばx=[1 2 3;3 4 5]となっているとき for i=1:10 y(1)=i*x end のように、しても、y(1)とxの次元が合わないというエラーが 出ると思います 行列を、このように「i番目」といった添え字のついた変数に 代入するには、どうしたらよいのでしょうか。 初心者のため大変初歩的なことですが、どなたかご教授ください。 とても焦っております。。。

  • Matlabによる複素数・・・

    Matlabでの複素数の実部・虚部成分の成分表示方法についての質問です。 例えば、 f=3+3*i fr=real(f) fi=imag(f) とするとそれぞれ実部成分と虚部成分が求められますが、複素数fが以下の様に任意の変数(a)を使うとうまくいきません・・・ syms a; f=a^2+i fr=real(f) fi=imag(f) 結果:fr =1/2*a^2+1/2*conj(a)^2 fi =-1/2*i*(a^2+2*i-conj(a)^2) うまく"fr=a^2,fi=1"と結果を表示するためにはどうしたらいいのでしょうか・・・ 分かる方、よろしくお願いいたします。

  • matlab matファイルから一部だけを読み込む

    Matlab初心者です、よろしくお願いします。 Matlabでn×m行列のデータが入っているmatファイルからx×y行列のデータを変数に読み込みたいのですが、どうすれば良いのでしょうか? ご教授していただけると助かります。 よろしくお願いします。

  • MATLABの使い方

    純粋な数学の質問じゃなくて申し訳ないのですが、数学に関することなのでここで質問させていただきました。MATLABを使って以下のことを計算させたいのですが、その入力の仕方を教えてください。 1.以下の近似値を求めよ。 (1)e=lim[n→∞](1+1/n)^n (2)e=Σ[n=0→∞]1/(n!) (3)π=4(1-1/3+1/5-1/7+…) (4)π=4{4(1/5-1/(3・5^3)+1/(5・5^5)-…)-(1/239-1/(3・239^3)+1/(5・239^5)-…)}  (5)100^(1/9) (6)5^(-x)=x 2.以下の関数のグラフを表示させる  (1)e^(-x)・Arctanx (-5≦x≦5)  (2)x=(t^2-t-3)e^(t)・cost,y=(t^2-5t+1)e^(t)・sint (-1≦t≦10) MATLABに関してはまったくの初心者なので、できれば入力方法を具体的に示していただければ幸いです。よろしくお願いします。

  • MATLABの使い方で困ってます。

    >> s=sym('s'); >> r=sym('r'); >> W=int(pi(r^2-(r-s)^2),0,x) と計算しようと思ったのですが、 ??? エラー: ==> pi 入力引数が多すぎます と表示されました。 MATLABではπはpiで計算できると思うのですが、どうしてエラーになるのでしょうか? また上の積分は、sについての範囲[0,x]の積分にしたいのですが、どうやったらいいでしょうか? お願いします。助けて下さい。

  • MATLABにて場合分け関数を定義したい

    MATLABの超初心者です. 関数f(x)を定義域により,違う関数で定義したいと考えています. つまり, f(x)= f1(x) if x<=5 = f2(x) if x>5 という感じです.なにぶん初心者のため,何を調べればよいのやら途方に暮れています.アドバイスお願いします

  • matlabに関する質問です.

    タイトルの通りmatlabに関する質問です. matlabの組み込み関数ndgridにつきまして,[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn)のように入力をx1,x2,...,xnと増加させると出力もX1,X2,...,Xnと増加するのですが,任意の入力数(セル配列で入力)に対して出力側も任意の出力数に対応させたいのですが [Xn_cell{:}] = ndgrid(xn_cell{:})としてもエラーが出てしまい上手く出来ません. 何か良い方法はありませんでしょうか. ご教授の程,宜しくお願いいたします.

専門家に質問してみよう