Mathematica求数值解,错在哪??

h=4.13566743*(10^-15)m=0.1*9.109*(10^-31)Do[NSolve[(0.4-2*y)/(2*Sqrt[0.4*y-y^2])*Sinh... h = 4.13566743*(10^-15)
m = 0.1*9.109*(10^-31)
Do[NSolve[(0.4 - 2*y)/(2*Sqrt[0.4*y - y^2])*
Sinh[Sqrt[8*Pi^2*m*(0.4 - y)/h^2]*x/2]*
Sin[Sqrt[8*Pi^2*m*y/h^2]*x/2] +
Cosh[Sqrt[8*Pi^2*m*(0.4 - y)/h^2]*x/2]*
Cos[Sqrt[8*Pi^2*m*y/h^2]*x/2] - Cos[x] == 0, {x, y}], {x, 0, 10,
1}]
展开
 我来答
xzcyr
2013-10-08 · TA获得超过3400个赞
知道大有可为答主
回答量:1400
采纳率:100%
帮助的人:670万
展开全部

1 你的m的赋值式里面用了中文标点。

2 Do是不会主动显示循环中的计算结果的,要使用Print语句,当然最方便的改法还是把Do改成Table。

3 最关键的一点,这个超越方程恐怕不是Solve和NSolve能解的了的。可以考虑用FindRoot,不过这就需要你对解的范围有大概的了解,要了解解的范围,一个可能的方法,是使用ContourPlot观察解的位置:

h = 4.13566743*(10^-15);
m = 0.1*9.109*(10^-31);
ContourPlot[(0.4 - 2*y)/(2*Sqrt[0.4*y - y^2])*Sinh[Sqrt[8*Pi^2*m*(0.4 - y)/h^2]*x/2]*Sin[Sqrt[8*Pi^2*m*y/h^2]*x/2] + Cosh[Sqrt[8*Pi^2*m*(0.4 - y)/h^2]*x/2]*Cos[Sqrt[8*Pi^2*m*y/h^2]*x/2] - Cos[x] == 0, {x, 0, 11}, {y, 0, 20}, PlotPoints -> 30]


然后就根据图上显示的解的范围去寻根吧。

追问
那如果要把==0换成<=0,可以吗
追答

用RegionPlot——虽然想这么说,但是RegionPlot对你这个式子的出图效果并不好。这里可以变通一下,利用Plot3D:

Plot3D[(0.4 - 2*y)/(2*Sqrt[0.4*y - y^2])*Sinh[Sqrt[8*Pi^2*m*(0.4 - y)/h^2]*x/2]*
   Sin[Sqrt[8*Pi^2*m*y/h^2]*x/2] + Cosh[Sqrt[8*Pi^2*m*(0.4 - y)/h^2]*x/2]*Cos[Sqrt[8*Pi^2*m*y/h^2]*x/2] - Cos[x], {x, 0, 10}, {y, 0, 20}, PlotRange -> {0, 2}]

图中平的部分,就是小于等于0的部分——话说我怎么觉得这个曲面越看越眼熟,你是不是在贴吧还是知道上问过这个问题?

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式