2012-05-14 8 views
-2

私は以下のように二重積分を描くためにmatlabのmファイルを書いた。誰もが私のそれをmathematicaに見せることはできますか?mファイルのmatlabをmathematicaに変更する

tetha = pi/4; 
lamb = -1; 
h = 4; 
tetha0 = 0; 
syms x y l 

n = [h.*((cos(tetha)).^2)./sin(tetha); h.*abs(cos(tetha)); 0]; 
ft = ((tetha - pi/2)./sin(tetha)).^4; 
Rt = [cos(tetha) -sin(tetha); sin(tetha) cos(tetha)]; 
zt = [cos(tetha0) -sin(tetha0); sin(tetha0) cos(tetha0)]; 
lt = [x;y]; 

integrand = @(x,y)(ft.*h.*((abs(cos(tetha)).*  (x.*cos(tetha)-y.*sin(tetha)))-((cos(tetha)).^2/sin(tetha)).*(x.*sin(tetha)+y.*cos(tetha)))); 
PhiHat = @(a,b)(dblquad(integrand,0,a,0,b)); 
ezsurfc(PhiHat,[0,5,0,5]) 
+4

...のは、そこに行くわけにはいきません。今ではMatlabからこれらの方程式を最初に導き、Mathematicaでそれらの式を再実装するようにお願いしています。個人的に私はどちらかをするつもりはありません。あなた自身の問題で良いスタートをしたことを示すなら、あなたは一般的にここでより良い答えを得るでしょう。 –

+0

MathematicaではなくMatlabでも複雑ではない行列の生成を導き出すことは簡単です。 私の問題は、変数がその演算子の下にない積分の範囲にあるときに二重積分を描く方法です!!!!!!!!!!! – Roboticist

+3

@High Performance Markの意味するところは、Matlabの熱心なユーザーでない人にとってMathematicaへの翻訳をするのは難しいということです。元の方程式を提供する場合は、Matlabの実装は必要ありません。私はMathematicaで境界の有無にかかわらず二重積分をどのように行うのかを完全によく知っていますが、この@(a、b)のMatlabコードの意味に関する手掛かりはありません。 –

答えて

4

ここでは、最小限の変更しか行いませんが、Mathematicaの関数定義、統合、プロットなどを理解するためには宿題をしなければなりません。また、これは慣用のMathematicaではありませんが、私たちに元の方程式(複数可)を示した場合、あなたのためにMathematicaを書くことが容易になるだろう

tetha=Pi/4; 
lamb=-1; 
h=4; 
tetha0=0; 

n={h*((Cos[tetha])^2)/Sin[tetha],h*Abs[Cos[tetha]],0}; 
ft=((tetha-Pi/2)/Sin[tetha])^4; 
Rt={{Cos[tetha], -Sin[tetha]}, {Sin[tetha], Cos[tetha]}}; 
zt={{Cos[tetha0], -Sin[tetha0]}, {Sin[tetha0], Cos[tetha0]}}; 

integrand[x_,y_]:= (ft*h*((Abs[Cos[tetha]]*(x*Cos[tetha]-y*Sin[tetha]))-((Cos[tetha])^2/Sin[tetha])*(x*Sin[tetha]+y*Cos[tetha]))); 
PhiHat[a_,b_]:=NIntegrate[integrand[x,y],{x,0,a},{y,0,b}]; 
Plot3D[PhiHat[x,y],{x,0,5},{y,0,5}] 

enter image description here

+0

'Rt'は' {{Cos [tetha]、-Sin [tetha]}、{Sin [tetha]、Cos [tetha}} '(そして' zt'と同様)であるべきだと思います。 – Heike

+0

うん、そうだよ。 MATLABは区切り文字として '、'とスペースの両方を取ります。それをMathematicaにコピーしたとき、FEはそれ自身のスペースとパディングを追加していたからです。 – abcd

+0

ありがとうございました! 残念ながら、私はまだmathematicaの構文に慣れていませんが、もっと良くしようとしています! – Roboticist

関連する問題