タグ付けされた質問 「matlab」

数値プログラミング言語MATLABに関する質問。

4
MATLABバックスラッシュ演算子は、正方行列の
いくつかのコードを「ストック」MATLABコードと比較していました。その結果には驚きました。 サンプルコードを実行しました(スパースマトリックス) n = 5000; a = diag(rand(n,1)); b = rand(n,1); disp('For a\b'); tic;a\b;toc; disp('For LU'); tic;LULU;toc; disp('For Conj Grad'); tic;conjgrad(a,b,1e-8);toc; disp('Inv(A)*B'); tic;inv(a)*b;toc; 結果 : For a\b Elapsed time is 0.052838 seconds. For LU Elapsed time is 7.441331 seconds. For Conj Grad Elapsed time is 3.819182 seconds. Inv(A)*B Elapsed time …

4
困難な振動積分の数値積分の方法
以下の積分を数値的に評価する必要があります。 ∫∞0s i n c′(x r )r E(r )−−−−√dr∫0∞sinc′(xr)rE(r)dr\int_0^\infty \mathrm{sinc}'(xr) r \sqrt{E(r)} dr ここで、、と。ここで、は第2種の修正ベッセル関数です。私の特定のケースでは、、およびです。のx∈R+λ、κ、ν>0Kλ=0.00313κ=0.00825ν=0.33E(r )= r4(λ κ2+ r2−−−−−−√)- ν- 5 / 2K- ν- 5 / 2(λ κ2+ r2−−−−−−√)E(r)=r4(λκ2+r2)−ν−5/2K−ν−5/2(λκ2+r2)E(r) = r^4 (\lambda\sqrt{\kappa^2+r^2})^{-\nu-5/2} K_{-\nu-5/2}(\lambda\sqrt{\kappa^2+r^2})X ∈ R+x∈R+x \in \mathbb{R}_+λ 、κ 、ν> 0λ,κ,ν>0\lambda, \kappa, \nu >0KKKλ = 0.00313λ=0.00313\lambda = 0.00313κ = 0.00825κ=0.00825\kappa = 0.00825ν= …

12
Octaveを使用してMATLABプログラミングを学習することはできますか?
この質問は、Computational Science Stack Exchangeで回答できるため、Cross Validatedから移行されました。 7年前に移行され ました。 私は自分でいくつかの研究/分析を行うことができ、またオンラインで見つけたMATLABスクリプトなどを研究/修正できるようにMATLABプログラミングを学びたいです。 ただし、問題は、MATLABを購入する余裕がないことです。私が聞いたところによると、GNU OctaveはまったくMATLAB互換です。しかし、Octaveの課題は、ドキュメントが非常に少ないことです。 そのため、MATLABは非常に高価です(-ve)が、多くの優れたドキュメント、チュートリアル、およびオンラインスクリプト(+)があり、Octaveは(理解できるように)包括的なドキュメントなどがなくても(ビールのように)無料です。 Octaveをダウンロードしてインストールすることを考えていますが、MATLABドキュメント(およびスクリプト)を使用して作業を進めています。OctaveとMATLABにはいくつかの違いがあることを認識しています-私が解決しようとしているのは、その違いが(Octaveを使用してMATLABを学習する)努力を妨げるほど大きいかどうかです。 建設的なフィードバックを歓迎します。

3

5
なぜODEの数値解は不安定な平衡から遠ざかるのですか?
二重振り子のようなシステムの動作をシミュレートしたいと思います。このシステムは2自由度のロボットマニピュレーターであり、作動しないため、重力の影響を受ける二重振り子のように動作します。二重振り子との唯一の主な違いは、2つの振り子が、質量中心に質量と慣性の特性を持つ2つの剛体で構成されていることです。 基本的ode45に、次のタイプのODEのシステムを解決するためにMatlabでプログラミングしました。 ⎡⎣⎢⎢⎢10000M110M1200100M120M22⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢x˙1x˙2x˙3x˙4⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢x2−V1−G1x4−V2−G2⎤⎦⎥⎥⎥[10000M110M1200100M120M22][x˙1x˙2x˙3x˙4]=[x2−V1−G1x4−V2−G2] \left[ \begin{array}{cccc} 1 & 0 & 0 & 0\\ 0 & M_{11} & 0 & M_{12}\\ 0 & 0 & 1 & 0\\ 0 & M_{12} & 0 & M_{22} \end{array} \right] \left[ \begin{array}{c} \dot{x}_1\\ \dot{x}_2\\ \dot{x}_3\\ \dot{x}_4 \end{array} \right]= \left[ \begin{array}{c} x_2\\ -V_1-G_1\\ x_4\\ -V_2-G_2 \end{array} …

1
Matlabのこの数値三重積分を信頼できますか?
計算科学の人々: 私はもともと数学スタック所でこの質問を投稿し、誰かが、私はここに、「より良い」答えを得るかもしれないとコメント: 私は数値計算法とMatlabの初心者です。次の2つのトリプル積分の合計を評価しようとしています(明らかにもっと簡単に書くことができますが、それでもシンボリックに評価することはできません(?))。Lの取得に問題がありますはここで動作するので、ここで渋々それをバラバラに分割しました。LATEXLATEX\LaTeX 2((1/0.3)−1)2(∫1/0.31∫r11∫r1−r00F1(r0,r1,t)exp(−(0.3)2t24)dtdr0dr1),2((1/0.3)−1)2(∫11/0.3∫1r1∫0r1−r0F1(r0,r1,t)exp⁡(−(0.3)2t24)dtdr0dr1),\frac{2}{((1/0.3) - 1)^2}\left(\int_1^{1/0.3}\int_1^{r_1}\int_0^{r_1-r_0}F_1(r_0,r_1,t)\exp(-\frac{(0.3)^2 t^2}{4})\,dt\,dr_0\,dr_1 \right), そして 2((1/0.3)−1)2(∫1/0.31∫r11∫r1+r0r1−r0F2(r0,r1,t)exp(−(0.3)2t24)dtdr0dr1),2((1/0.3)−1)2(∫11/0.3∫1r1∫r1−r0r1+r0F2(r0,r1,t)exp⁡(−(0.3)2t24)dtdr0dr1),\frac{2}{((1/0.3) - 1)^2}\left(\int_1^{1/0.3}\int_1^{r_1}\int_{r_1-r_0}^{r_1+r_0} F_2(r_0,r_1,t)\exp(-\frac{(0.3)^2 t^2}{4})\,dt\,dr_0\,dr_1 \right), どこ F1(r0,r1,t)=t2r30∗(0.3)32r31π−−√F1(r0,r1,t)=t2r03∗(0.3)32r13πF_1(r_0,r_1,t)=\frac{t^2 r_0^3*(0.3)^3}{2r_1^3\sqrt{\pi}} そして F2(r0,r1,t)=(0.3)3π3/2(r0+r1−t)4(t2+2t(r0+r1)−3(r1−r0)2)2288(43πr30)(43πr31).F2(r0,r1,t)=(0.3)3π3/2(r0+r1−t)4(t2+2t(r0+r1)−3(r1−r0)2)2288(43πr03)(43πr13).F_2(r_0,r_1,t)=\frac{(0.3)^3\pi^{3/2}(r_0+r_1-t)^4 (t^2+2t(r_0+r_1)-3(r_1-r_0)^2)^2}{288(\frac{4}{3}\pi r_0^3)(\frac{4}{3}\pi r_1^3)}. 編集(2013年3月2日):Mathematicaに積分をシンボリックに実行させたと誰かが答えました。私はこれを(積分の単純化されたバージョンで)実行しようとしましたが、Mathematicaは最初の2つだけを実行でき、2つ目は停止しました。助けていただければ幸いです。これが私がしたことです。 私は評価しようとしました via∫21∫r21∫r2−r10r31t2exp(−t2)r32dtdr1dr2∫12∫1r2∫0r2−r1r13t2exp⁡(−t2)r23dtdr1dr2\int_1^2 \int_1^{r_2} \int_0^{r_2-r_1} \frac{r_1^3 t^2 \exp(-t^2)}{r_2^3}\,dt\,dr_1\,dr_2 Integrate [r1 ^ 3 / r2 ^ 3 * t ^ 2 * Exp(-t ^ 2)、{t、0、r2-r1}、{r1、1、r2}、{r2、1、2}] Mathematicaが戻ります(Lに問題がありましたは結果が長いためです。私はそれを2つの方程式に分けました。誰かがこれを表示する良い方法を知っているなら教えてください):LATEXLATEX\LaTeX ∫21164r22e−1−r22(2e2r2(25+r2(19+2r2(1+r2)))−∫12164r22e−1−r22(2e2r2(25+r2(19+2r2(1+r2)))−\int_1^2 \frac{1}{64r2^2} …
15 matlab 

2
Matlabの積分がScipyでintegrated.quadより優れているのはなぜですか?
matlabが数値積分とScipyを処理する方法に不満を感じています。以下のテストコードで次の違いを観察します。 Matlabのバージョンは、私のPythonの同等バージョンよりも平均で24倍高速に動作します! Matlabのバージョンは警告なしで積分を計算することができますが、Pythonは nan+nanj 上記の2つの点に関して、Pythonで同じパフォーマンスが得られるようにするにはどうすればよいですか?文書によると、両方の方法は、積分を近似するために「グローバル適応求積法」を使用する必要があります。 以下は、2つのバージョンのコードです(かなり似ていますが、Pythonでは複雑な被積分関数を処理できるように積分関数を作成する必要があります)。 Python import numpy as np from scipy import integrate import time def integral(integrand, a, b, arg): def real_func(x,arg): return np.real(integrand(x,arg)) def imag_func(x,arg): return np.imag(integrand(x,arg)) real_integral = integrate.quad(real_func, a, b, args=(arg)) imag_integral = integrate.quad(imag_func, a, b, args=(arg)) return real_integral[0] + 1j*imag_integral[0] vintegral = np.vectorize(integral) def …

2
Matlabで「for」ループを記述する最も効率的な方法は何ですか?
たとえば、forマトリックスのインデックスを実行するダブルループがある場合、外側のループにインデックスを実行する列を配置する方が効率的であることを読みました。例えば: a=zeros(1000); for j=1:1000 for i=1:1000 a(i,j)=1; end end 3つ以上のforループがある場合、それをコーディングする最も効率的な方法は何ですか? 例えば: a=zeros(100,100,100); for j=1:100 for i=1:100 for k=1:100 a(i,j,k)=1; end end end

3
MATLABでODEを使用したステップサイズの選択
こんにちは、私の質問を見てくれてありがとう。これは、以前にphysics.stackexchange.comに投稿した私の質問の更新版です。 現在、2D励起子スピナーBose-Einstein Condensateを研究しており、このシステムの基底状態に興味があります。基底状態に到達する数学的方法は、虚数時間法と呼ばれます。 この方法は、量子力学の時間が虚数に置き換えられる非常に単純な この置換により、システム内の高エネルギー粒子が低エネルギー粒子よりも速く崩壊します。計算のすべてのステップで粒子の数を再正規化すると、最終的に最も低いエネルギーの粒子のシステム(別名)になります。基底状態。t=−iτt=−iτ t = -i \tau 問題の方程式は非線形であり、非線形シュレディンガー方程式と呼ばれ、時にはグロス-ピタエフスキー方程式とも呼ばれます。問題を解決するために、Matlabs ode45を使用しています。これは、システムを時間内に進化させ、最終的に基底状態に到達します。 注意!非線形シュレディンガー方程式には、ラプラシアンおよびその他の空間の微分項が含まれます。これらはすべて高速フーリエ変換を使用して解決されます。最後に、時間ODEのみがあります。* 私の問題と質問:計算はからにます。ode45はforループに入れられるため、巨大なベクトルを同時に計算しません。最初のラウンドはode45(odefun、)で、次にからます。ここで、タイムステップは私の問題です。タイムステップの選択が異なると、基底状態のソリューションも異なります。どのタイムステップが「最も」正しい基底状態を与えるかを判断する方法がわかりません。t0t0t_0tftft_f[ T 0、T 0 + Δ / 2 、T 0 + Δ ] 、Y 、... 、T 0 + Δ Δ[t0,…,tf][t0,…,tf][t_0,\dots,t_f][t0,t0+Δ/2,t0+Δ],y,…[t0,t0+Δ/2,t0+Δ],y,…[t_0, t_0+\Delta/2, t_0 + \Delta],y,\dotst0+Δt0+Δt_0 + \DeltaΔΔ\Delta 私の試み:このスキームでは、大きな時間ステップにより元の粒子に再正規化される前に多数の粒子が崩壊し、小さな時間ステップにより再正規化される前に少量の粒子が崩壊します。私の最初の考えは、小さな時間ステップがより正確な解決策を提供するはずであるが、それは反対のように思われるということです。 私は数値の専門家ではないので、ode45の選択は単純に任意でした。ode113でも同じことがわかります。:( 誰もこの問題について何か考えを持っていますか。追加の詳細が必要かどうかを教えてください。 ありがとうございました。 更新1: 仮想時間法とODEを研究しています。タイムステップが十分に小さくないと、全体が不安定になります。これは、私の非線形方程式が硬く、理解することから物事をはるかに難しくするのではないかと思うようになります。最新情報をお届けします。 更新2: 修正済み:問題は実際にODEの外部で正規化されていました。正規化がodefun内に保持される場合、ODEは、「外部」タイムステップの異なる選択に対して同じ結果を返します。同僚が古いコードを見せてくれたので、odefunに1行だけ追加しました。 function y_out = odefun(t,y_in,...variables...) …

5
同じ、異なるを繰り返し解く
MATLABを使用して、が時間とともに変化するすべてのタイムステップでを解く問題を解決しています。現在、MATLABを使用してこれを実現しています:Ax=bAx=b\mathbf{A} \mathbf{x}=\mathbf{b}bb\mathbf{b}mldivide x = A\b 必要なだけ多くの事前計算を行う柔軟性があるので、より高速で正確な方法があるかどうか疑問に思っていmldivideます。ここで通常行われることは何ですか?皆さんありがとう!

2
Matlab [Q、R、E] = qr(A)の背後にある対応するLAPACK関数は何ですか?
現在、行列適切なランク推定を安価に計算しようとしています。したがって、以下を使用してQR分解をピボット化するコラムレットを計算しますAAA [Q,R,E]=qr(A) Matlabで。を使用してのランクを推定しますAAA tol = size(A,n)*eps*norm(A,'fro'); r = sum(abs(diag(R))>tol) これは正常に機能し、Rのすべての対角要素に対するプロットは次のようになります。 RRR 入力行列は、両方の実験でまったく同じです。 私の質問は、Matlabからの列ピボットQR分解がどのLAPACK関数に依存しているかということです。 助けてくれてありがとう、グリス 編集: DGEQPFは同じ間違った結果を与えます。 編集2: AAAE+sign(E,F)E+sign(E,F)E+sign(E,F) AAA RRR LAPACK 3.4.0とOpenBlas / GotoBLAS(64ビット)を使用しました Matlab 7、2007b、2010b Linux 32ビット 編集3:-GDBを使用して、Matlab 2010bはDGEQP3を呼び出すことがわかりました:/usr/ubuntu10.04/matlabr2010b/bin/glnx86 /../../ bin / glnx86 /../からのdgeqp3_()の#3 0xaa46ce2f。 ...
12 matlab  lapack 

3
最小二乗近似質問
私は科学的計算のコースを取っているのですが、最小二乗近似について調べました。私の質問は、特に多項式を使用した近似についてです。n + 1個のデータポイントがある場合、これらすべてのポイントを記述する次数nの一意の多項式を見つけることができることを理解しています。しかし、これが必ずしも理想的ではない理由もわかります。このようなアプローチを使用すると、データポイント間で多くのノイズを取得できます。データを十分に推定する低次の多項式を取得するのは良いことだと思います。 私の質問は、実際にどの程度の多項式を使用するかをどのように決定するのですか?経験則はありますか、それとも手元の問題のみに依存していますか?多かれ少なかれ程度を決定する際に、さまざまなトレードオフを考慮する必要がありますか?または、私はここで何かを誤解していますか? 前もって感謝します。

4
発行可能な画像を作成するための優れた(無料の)ソフトウェアですか?
現在、Matlabを使用して1dおよび2d画像を作成し、特定のモデルとの精度を比較しています。私の方法を標準のGaussian .wfnモデルと比較する必要があり、分子とラプラシアンの密度を分析することでそれを行います。 私は、.wfn近似の近似(おそらく等高線マップを使用して)の違いの2次元画像を生成することに関心があり、2つの原子間の結合経路と直接線に沿った特性(密度、ラプラシアンなど)にも関心があります。 前に述べたように、私は現在、Matlabを使用して画像を作成していますが、これらの画像は主に私と同僚のためのものです。それらは、私が論文や他の出版物でよく目にするタイプの画像ではないようです。 出版品質のグラフと画像を作成するには、どのようなソフトウェアを使用する必要がありますか(または他のユーザーが使用しますか)?

1
有限集合のジェネレーターを与えられた行列リー代数の基底をどのように計算できますか?
(数値)正方複素行列の任意のセット所与、Iはによって生成された実行列リー代数計算に興味、それを呼び出します。つまり、 ここで再帰的に定義されるような、およびのための。A L A L A = S P A N R { B :B ∈ ∪ ∞ 、K = 1個のC K } C K C 1 = A C K + 1 = { [ X 、Y ] :X 、Y ∈ ∪A={A1,A2,⋯,Am}A={A1,A2,⋯,Am}\mathcal{A}=\{A_1,A_2,\cdots,A_m\}AA\mathcal{A}LALA\mathcal{L_\mathcal{A}}LA=spanR{B:B∈∪∞k=1Ck}LA=spanR{B:B∈∪k=1∞Ck} \mathcal{L_\mathcal{A}} = \mathbb{span_R}\{B:B\in\cup_{k=1}^{\infty}\mathcal{C}_k\} CkCk\mathcal{C}_kC1=AC1=A\mathcal{C_1}=\mathcal{A}K≥1Ck+1={[X,Y]:X,Y∈∪kj=1Cj}Ck+1={[X,Y]:X,Y∈∪j=1kCj}\mathcal{C_{k+1}}=\{[X,Y]:X,Y\in\cup_{j=1}^k\mathcal{C_j}\}k≥1k≥1k\geq 1 この計算は(量子)制御理論に基づいています。 現在、ここにあるメソッドを使用しています。このメソッドは、Lieブラケットの繰り返し(つまり)、終了が保証されています。ただし、他の(より高速な)方法があるかどうかを知りたいです。おそらく、P。Hallベースを使用しているのでしょうか?おそらく再帰アルゴリズムですか?私の現在のデフォルト言語はMatlabです。[Aj1,[Aj2,[Aj3,⋯[Ajn−1,Ajn]⋯]]][Aj1,[Aj2,[Aj3,⋯[Ajn−1,Ajn]⋯]]][A_{j_1},[A_{j_2},[A_{j_3},\cdots[A_{j_{n-1}},A_{j_n}]\cdots]]]

1
Matlabでの最適なトランスポートワーピングの実装
私は「登録とワーピングに最適なマストランスポート」というペーパーを実装しています。私の目標は、オイラーマストランスポートコードをオンラインで見つけることができないため、オンラインにすることです。これは、少なくとも画像処理の研究コミュニティにとって興味深いものです。 この論文は次のように要約できます。 - x座標とy座標に沿った1Dヒストグラムマッチングを使用して初期マップを見つける の固定点を、ここでは反時計回りの90度回転を表し、はディリクレ境界条件(= 0)のポアソン方程式の解を表します。そして、ヤコビ行列の行列です。 -タイムステップ安定性が保証されていますu t = 1uuuあなたt= 1μ0D U ∇⊥△− 1di v (u⊥)ut=1μ0Du∇⊥△−1div(u⊥)u_t = \frac{1}{\mu_0} Du \nabla^\perp\triangle^{-1}div(u^\perp)あなた⊥u⊥u^\perp△− 1△−1\triangle^{-1}D UDuDudt &lt; 分| 1μ0∇⊥△− 1di v (u⊥)|dt&lt;min|1μ0∇⊥△−1div(u⊥)|dt<\min|\frac{1}{\mu_0}\nabla^\perp\triangle^{-1}div(u^\perp)| 数値シミュレーション(通常のグリッドで実行)の場合、ポアソン方程式を解くためにmatlabのpoicalcを使用することを示し、風上スキームを使用して計算されるD UDuDuを除いて、空間微分に中心有限差分を使用します。 私のコードを使用すると、エネルギー関数とマッピングのカールは、2、3回の反復(タイムステップに応じて数十から数千)に対して適切に減少しています。しかし、その後、シミュレーションは爆発します。非常に少ない反復でエネルギーが増加し、NANに到達します。私は微分と積分(ここで cumptrapzのより高次の置換がここにあります)といくつかの補間スキームに対していくつかの次数を試してみましたが、常に同じ問題が発生します(非常に滑らかな画像、どこでも0でないなど)。 誰かがコードや私が直面している理論上の問題に興味がありますか?コードはかなり短いです。 デバッグ機能を備えたコード 登録機能 登録する同じサイズの2つのイメージがある場合、テストコード テストスタッフなしで必要な機能のみ(&lt;100行) 最後のgradient2()をgradient()に置き換えてください。これはより高次の勾配でしたが、問題も解決しません。 今のところ、紙の最適な輸送部分にのみ関心があり、追加の正則化用語には関心がありません。 よろしくお願いします!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.