2012-05-14 99 views
-2

我写了一个matlab m文件来绘制如下的double积分。每个人都可以在数学中给我看等价物吗?将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

它会更容易写你的Mathematica你,如果你向我们展示了原始方程(组)。现在你需要我们首先从Matlab中导出这些方程,然后在Mathematica中重新实现它们。我个人也不打算做;如果你证明你已经在自己的问题上开了个好头,那么你通常会在这里得到更好的答案。 –

+0

它简单本身就是导出一些矩阵制作不是非常复杂,既不在matlab中也不是mathematica! 我的问题是如何在变量位于不在其运算符下的整数的范围内时绘制双积分!!!!!!!!!!! – Roboticist

+3

我认为@High Performance Mark意味着对于那些不是用户使用Matlab的人来说,很难将其翻译成Mathematica。如果您提供原始公式,我们不需要您的Matlab实现。举个例子,我非常清楚在Mathematica中如何进行双积分或者没有边界,但是对于这个@(a,b)的Matlab代码段的含义没有任何线索。 –

回答

4

这里你去了(只做了很小的修改),但是你必须做你的功课来理解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

非常感谢亲爱的yoda! 不幸的是我还没有流利的mathematica语法,但我试图做得更好! – Roboticist