• 締切済み

maximaをより、効率的に使いたい!

maximaで行列の固有値を求める計算をしております。固有値を求めた後、その対数とそれ自体の積を求めなくてはいけません。今は値をコピーし貼り付けるという単純な作業をやっておりますが、精度を上げることとなり(40~50桁),その様な場合、間違えないか不安です。maximaではそういった作業~ひとつの入力に対し、複数の出力がある場合、その結果に番号を振り、それらで新たな計算を容易に行うこと~は出来ますか?よろしくお願い致します。

みんなの回答

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.2

たとえば A:solve(x^3+2*x^2+2*x-4=0,x);Ar:realpart(A[2]);Ai:imagpart(A[2]); とすることで 3次方程式の解の2番目を取り出すことができます。 そして、その解の実部をArに、虚部をAiに取り込むことができます。 連立方程式の解のように、何組も解がある場合 連立方程式の解Aが A:[[1,2,3],[4,5,6],[7,8,9]] となった場合、「4」+「8」は A[2][1]+A[3][2] で引用できます。 (%i1) A:[[1,2,3],[a,5,6],[7,b,9]];C:A[2][1]+A[3][2]; (%o1) [[1,2,3],[4,5,6],[7,8,9]] (%o2) C:b+a A:やC:は表示されませんが値は保持していますので その内容を他でA,Cで引用することができます。 このように行列の要素を指定するように、m番目の出力の式の組の中のn番目の式と場合、出力全体をA:と定義している場合、A[m][n]で1つの式だけ取り出せます。A[m]だけだと「m番目の出力の式の組」全体を取り出します。 試してみてください。

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.1

一般的な抽象論で論じないで、具体的な例を挙げて質問して下さい。 >間違えないか不安です 簡単な具体例(代表的な3例以上の具体例)で確認するようにすると間違いを回避できるかと思います。 また結果が、物理的な意味、数学的な意味や常識と異なる場合は間違いのチェックをすることが必要でしょう。

aroron
質問者

補足

早速のお返事有難うございます。説明不足ですいませんでした。私の質問は添付資料のに%o4の結果を足し合わせたり(%i5)する場合、いちいち、数値を代入しなくてはいけないのか、より簡単に計算することができるのかどうかと、いう事です。この例の場合はケタも個数も楽ですが、固有値の桁数を上げると大変かつ写し間違いが不安なので、なんかよい方法はないでしょうか

関連するQ&A

  • maximaの行列計算

    maximaで行列の計算をしております。8次の正方行列の固有値を求めた際に、行列が対称行列に関わらず、固有値が虚数になってしまいます。maximaでは行列の計算は無理なのでしょうか?それとも、良い方法があるのでしょうか?教えて下さいます様、よろしくお願い致します。

  • Maximaが積分を行ってくれません

    Maximaで関数f(x)をxで不定積分しました。 するとf(x)の前に積分記号が付いただけの結果が出ます。(定積分の場合も同じで記号の上下に数値があるだけです) 単純な関数だと計算してくれます。 しかし、今回用いる関数が非常に複雑(指数eの肩に対数log、対数の中身も指数の分数・・など)(必要な場合はお教えします)なのですがそのような結果が出力されました。 積分能力が低いため複雑な関数は出来ないのでしょうか?積分する際の留意点などあるのでしょうか? よろしくお願いします。

  • Maxima について教えてください。

    私は「maxima」で三角関数や積分などの代数計算やグラフの描画 などをしたいので、「maxima」に関する複数のサイトからインストール のできるサイトを探し、Maxima 5.37.3.exe (Windows 用)を インストールして、(%i1) 2+3; と入力したのですが、 つぎのように表示されて答えの5が得られませんでした。 incorrect syntax: 2 is not an infix operator (%i1) 2+    ^ (カレットの位置がずれていますが、正しくは2の真下に表示されて います) ブログなどに解説してある通りに入力しているのですが、 これは何が原因しているのでしょうか。 また、(%i1) を入力せずに直接 2+3; と入力するとつぎのように 表示されました。 <<出力結果が長過ぎて表示できません!>> (もし表示したい場合は、 メニューバーの「編集」から「設定」ダイアログを開き、「出力に時間が かかる式も表示」にチェックを入れて下さい) この場合は答えが表示されないのは解りますが、出力結果が長過ぎて云々ということが 2+3; と入力したときの答えが得られない原因なのでしょうか。 なお、使用しているパソコンのOSは次の通りです。 Windows 7 Home Premium SP1 RAM:4GB HDD:100GB なお、インストールしたいのは数式が見易く、表示の綺麗な wxMaxima が 希望です。 どうぞよろしくお願いします。

  • Maximaの順次出力

    Basic言語などで、例えば10までの整数の和を求めるとき、 for i=1 to 10 a=a+i print i next i とでもすれば、iが1まで、2まで、3まで…10までの計算結果が得られますよね。ところが、Maximaの場合は、for函数の中に出力命令は入れられないようなんですが?これは、仕方のないことなのでしょうか? それぞれの計算結果は、配列に覚えこませてやるよりないのでしょうか。やろうとしていることは、複雑な式の展開なので、できるだけこの方法は避けたいのですが。

  • 初心者です。プログラミング 3×3行列の積

    先日、課題が出されて、1週間ほど考えてはみたのですがわからなかったため質問させていただきます。 3行3列の行列の積を求めるプログラムを作成しなさい。ただし、各行列要素は疑似乱数を使って値を求めるようにしなさい。また各行列要素は二桁以下の整数とし、行列の積を計算する部分を関数で行うようにしなさい。という問題なんですが、どなたかわかる方がいらっしゃいましたらご回答よろしくお願いいたします。できれば詳しく式などを書いていただきたいです。

  • 3×3行列の固有値と固有ベクトル

    以下の行列Aの固有ベクトルを求めようとしているのですが,解を見つけられないでいます. 2 1 0 1 2 0 0 0 -2 計算を進めた結果,固有値λは3,1,-2となり,λ=3,1に対応する固有ベクトルはそれぞれ[1,1,0]t,[1,-1,0]tとなったのですが,λ=-2の場合で求めた固有ベクトル[1,1,k]t(kは任意の実数)がAx=λxに対応しない値になってしまいます.私の計算に何か問題があるのでしょうか? また,行列Aは対称行列なのでそれぞれの固有ベクトルの内積は0になると思うのですが,固有ベクトルの値が得られないことと何か関係があるのでしょうか? 回答よろしくお願いします.

  • 固有値

    この問題がまったく何を言っているのかわかりません。。固有値は|A-λE│=0の固有値方程式を解いて、固有値λを求めればいいんですよね?参考書などを見れば言葉で書いてあるだけで詳しい解きかたが書いていません。どうかできるだけ計算過程も詳しく教えてください。できれば(1)と(2)だけでも結構です。お願いします。 行列Aの固有値と対角化を以下の手順で考えていこう。    0 1 0  ( 1 0 0 )    0 0 0 (1)行列Aの固有値を求めなさい。数量の検算には、固有値の和が行列Aのトレースに等しいことに注意せよ。 (2)固有値に属する固有ベクトルを求めなさい。 (3)行列Aの固有ベクトルを列ベクトルとして任意の順に並べて作った行列Pを示しなさい。 (4)行列Aはこの行列Pによって対角化可能であるかどうかどうか調べなさい。 (5)行列Pの転置行列tPを示し、行列Pとの積tPPを計算しなさい。 (6)行列Aが行列Pによって対角化可能であるならば、対角化されることを示しなさい。

  • 行列A'Aの固有値と行列Aの固有値の関係性

    行列Aの固有値だけから、 A'Aの固有値を求める方法はありますか。 例えば、A*Aの固有値は行列Aの固有値の2乗になると思うのですが、 A'Aの場合のAの固有値とA'Aの固有値に関係性があれば知りたいです。 A'Aの行列式(A'Aの固有値の積)は、行列Aの行列式(Aの固有値の積)の2乗になることはわかりましたが、個別の固有値を知りたいです。具体的なA'Aの固有値が分からなくても、それぞれの固有値が比例するなどの関係性でも教えていただければ幸いです。 Aは下三角行列で、 A’は行列Aの逆行列です。 よろしくお願いします。

  • 対数

    6^15や7^49が何桁になるか求めることができますが 1桁目の値って対数を使って求めることができましたっけ? 1桁目じゃなくて最上位の桁だったかな・・・・^^; 計算方法も含め教えていただけませんか?

  • 実験の有効数字について

    有効数字3桁の値を用いて計算を行ったところ、値が0.11235や0.09812となったのですがこのときの有効数字は0.112と0.0981となるんでしょうか? これだと精度が変わってしまうと思うんですけどこの場合はどうなるでしょうか? どうぞよろしくお願いします。