Wolfram mathematica Mathematic函数的三维绘图

Wolfram mathematica Mathematic函数的三维绘图,wolfram-mathematica,Wolfram Mathematica,我想画一个函数的3d图,把另一个变量的函数作为一个变量 由于我的函数是嵌套的分段函数,整个事情变得复杂了 这是我的密码: phi0=Function[u,1.21*10^-6/((u/10^44.25)^1.01 + (u/10^44.25)^2.38)][Lx] zc=Function[v,Piecewise[{{2.49,v>=10^45.74},{2.49*(v/10^45.74)^0.2,v<10^45.74}}]][Lx] e=Function[uu,Piecewise[

我想画一个函数的3d图,把另一个变量的函数作为一个变量

由于我的函数是嵌套的分段函数,整个事情变得复杂了

这是我的密码:

phi0=Function[u,1.21*10^-6/((u/10^44.25)^1.01 + (u/10^44.25)^2.38)][Lx]
zc=Function[v,Piecewise[{{2.49,v>=10^45.74},{2.49*(v/10^45.74)^0.2,v<10^45.74}}]][Lx]

e=Function[uu,Piecewise[{{(1+uu)^4.62,uu<=zc},{(1+zc)^4.62*((1+uu)/(1+zc))^-1.15,uu>zc}}]][z]

Plot3D[e[z,Lx],{z,0,7},{Lx,10^42,10^47}, PlotRange->Full]
phi0=函数[u,1.21*10^-6/((u/10^44.25)^1.01+(u/10^44.25)^2.38)][Lx]
zc=函数[v,分段[{2.49,v>=10^45.74},{2.49*(v/10^45.74)^0.2,vFull]
但它没有策划任何事情,我也不知道该怎么办

编辑:

谢谢你的提示,我想我是这样解决的。它没有给我任何错误,但即使在一个点上评估结果也要花很多时间…你认为这正常吗

phizero[Lx_] := 1.21/10^6/((Lx/10^44.25)^1.01 + (Lx/10^44.25)^2.38)

zc[Lx_] := 
 Piecewise[{{2.49, Lx >= 10^45.74}, {2.49*(Lx/10^45.74)^0.2, 
    Lx < 10^45.74}}]

e[z_, Lx_] := 
 Piecewise[{{(1 + z)^4.62, 
    z <= zc[Lx]}, {(1 + zc[Lx])^4.62*((1 + z)/(1 + zc[Lx]))^-1.15, 
    z > zc[Lx]}}]

phi[z_, Lx_] := phizero[Lx]*e[z, Lx]

(*D[phi[z,Lx],Lx]:=Lx*phi[z,Lx]*)

p[z_, Lx_] = Integrate[Lx*phi[z, Lx], Lx]
p[4, 10^44]
phizero[Lx]:=1.21/10^6/((Lx/10^44.25)^1.01+(Lx/10^44.25)^2.38)
zc[Lx_]:=
分段[{2.49,Lx>=10^45.74},{2.49*(Lx/10^45.74)^0.2,
Lx<10^45.74}]
e[z,Lx]:=
分段[{(1+z)^4.62,
z zc[Lx]}]
phi[z,Lx]:=phizero[Lx]*e[z,Lx]
(*D[phi[z,Lx],Lx]:=Lx*phi[z,Lx]*)
p[z_u,Lx_u]=积分[Lx*φ[z,Lx],Lx]
p[4,10^44]

首先,函数的工作原理如下:

In[1]:= q = Function[x, x^2];
In[2]:= q[4]
Out[2]= 16
因此,请丢失每个函数定义末尾的[var]。 你也可以这样做

q[x_]:= x^2
如果更简单的话,请跳过函数[]的使用


接下来,将函数e定义为接受一个参数,但在Plot3D中使用它时,给它两个参数。因此,您需要弄清楚函数e的定义应该是什么,我甚至猜不出该怎么做。

这需要很长时间,因为它很难对函数进行符号集成。这需要很长时间有一段时间我才知道这是不可能的。--使用NIntegrate进行数值积分。这里是一个尝试。注意,作为一个好习惯,我在表达式中省略浮点值,直到真正需要:

 constants = {c1 -> 10^45.74, c2 -> 10^44.25, c3 -> 2.49, c4 -> 4.62, 
   c5 -> 2.38, c6 -> 0.2, c7 -> 1.21/10^6, c8 -> -1.15, c9 -> 1.01}
phizero[Lx_] := c7/((Lx/c2)^c9 + (Lx/c2)^c5)
zc[Lx_] := Piecewise[{{c3, Lx >= c1}, {c3 (Lx/c1)^c6, Lx < c1}}]
e[z_, Lx_] := 
      Piecewise[{{(1 + z)^c4, 
           z <= zc[Lx]}, {(1 + zc[Lx])^c4 ((1 + z)/(1 + zc[Lx]))^c8, 
           z > zc[Lx]}}]
phi[z_, Lx_] := phizero[Lx] e[z, Lx]
p[z_, L1_, L2_] := NIntegrate[Lx phi[z, Lx] /. constants, {Lx, L1, L2}]
p[4, 10^42, 10^47]

其次,在不显式使用函数[]的情况下重写它祝贺您。从第一篇文章到编辑,您似乎取得了更大的进步,只需几点提示。我担心您的集成。您正在对第二个参数使用常量10^44进行集成,而integral需要的是一个变量,而不是常量。解决了这个问题,您应该会看到一个即时的答案。请注意,这不是一个变量延迟函数def,因此积分是在调用数值参数之前象征性地完成的。saimon我想你想要一个定积分。我认为george是对的,他的解决方案是有效的(也感谢他教我如何设置常数)。它没有给我我我期望的答案(大约90个数量级),所以我需要弄清楚我是不是搞砸了。在“帮助”部分,写这篇文章的目的不是为了感谢别人的回答,而是为了感谢他们,如果没有你,我会失去很多天,所以非常感谢,也非常感谢比尔给我提出了关于如何改进代码的提示(作为一个完全的初学者,我非常需要他们).我会投票支持这两项,但我没有所需的15个声誉,我会尽快拥有它们
   (* ~7 10^84 *)