通过数字找到积极的根源

问题描述

对于给定的M值,该方程如何在数值上求解正E?我在Mathematica中尝试了FindRoot方法,但从未将其收敛到正确的解决方案。在此,M是任何正实数。我的目标是绘制M与E的曲线。

Sqrt[E]*Cos[Sqrt[E]]=-M*Sin[Sqrt[E]]

解决方法

如果您唯一的目标是将M与E作图,请使用

"because the next pointer of node i-1 points to node i+1."

enter image description here

,

这是Mathematica的一种似乎有效的方法:

In[37]:= FindRoot[x + 1/10 Tan[x],{x,# + Abs[#]*10^-14,(# + Pi) (1. - 10^-14)},Method -> "Brent"] & /@ Range[-Pi/2,50 Pi,Pi]
Out[37]= {{x -> 0.},{x -> 1.63199},{x -> 4.73351},{x -> 7.86669},{x -> 11.0047},{x -> 14.1442},{x -> 17.2845},{x -> 20.4252},{x -> 23.5662},{x -> 26.7073},{x -> 29.8485},{x -> 32.9898},{x -> 36.1311},{x -> 39.2725},{x -> 42.4139},{x -> 45.5553},{x -> 48.6967},{x -> 51.8382},{x -> 54.9797},{x -> 58.1212},{x -> 61.2627},{x -> 64.4042},{x -> 67.5457},{x -> 70.6872},{x -> 73.8288},{x -> 76.9703},{x -> 80.1119},{x -> 83.2534},{x -> 86.395},{x -> 89.5365},{x -> 92.6781},{x -> 95.8196},{x -> 98.9612},{x -> 102.103},{x -> 105.244},{x -> 108.386},{x -> 111.527},{x -> 114.669},{x -> 117.811},{x -> 120.952},{x -> 124.094},{x -> 127.235},{x -> 130.377},{x -> 133.518},{x -> 136.66},{x -> 139.802},{x -> 142.943},{x -> 146.085},{x -> 149.226},{x -> 152.368},{x -> 155.509}}

从本质上讲,通过替换Sqrt[E] = x,您只需要求解x + M Tan[x] == 0,就可以求解正数Mx。您知道Tan[x]的变化符号是Pi/2 + kPi的每一个倍数。因此,您知道每个]Pi/2 + k Pi,Pi/2 + (k+1) Pi[都有一个根。我们在这里使用布伦特(Brent)方法,因为这可以确保始终在正值和负值之间找到根,并且由于Tan[x]的性质,我们知道靠近相应区间边界的值具有相反的符号。

我们还使用FindRoot代替NSolve,因为NSolve是专为多项式设计的。