我想制作一个函数的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]
但它没有绘制任何东西,我不知道该怎么做
编辑:
谢谢,对于提示,我想我是这样解决的。它没有给我任何错误,但是即使在一个点上也需要花费大量时间来评估结果......你认为这是正常的吗?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]
答案 0 :(得分:1)
首先,Function的工作原理如下:
In[1]:= q = Function[x, x^2];
In[2]:= q[4]
Out[2]= 16
因此丢失了每个函数定义末尾的[var]。 你也可以这样做
q[x_]:= x^2
并跳过使用Function [],如果这样会更简单。
接下来,定义函数e以接受单个参数,但是当您在Plot3D中使用它时,它会给它两个参数。因此,您需要弄清楚您对函数e的定义应该是什么,我甚至无法猜测如何做到这一点。
答案 1 :(得分:0)
这需要很长时间,因为它很难象征性地整合功能。学习它不可能需要一段时间才能完成。 - 使用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]
快速返回:
(* ~7 10^84 *)