【求助】正切函数的超越方程如何得到一系列的解?
mathematica吧
全部回复
仅看楼主
level 3
筇殇love 楼主
代码如下:
L = 5;
c = 0.2;
FF = Tan[L*b] - (c*b)/(b^2 - 0.01);
Plot[FF, {b, 200, 210}]
q1 = b /. FindRoot[FF, {b, 0.3}]
q2 = b /. FindRoot[FF, {b, 0.5}]
q3 = b /. FindRoot[FF, {b, 7}];
q4 = b /. FindRoot[FF, {b, 7.5}];
q4 - q3
m = 50;
B = Table[0, {j, 1, m}];
B[[1]] = B[[1]] + b /. FindRoot[FF, {b, 0.3}];
B[[2]] = B[[2]] + b /. FindRoot[FF, {b, 0.5}];
NE = 0.6;
Table[
x1 = B[[2]] + (i - 2)*NE1;
B[[i]] =
B[[i]] + b /.
FindRoot[FF, {b, B[[i - 1]] + NE}, MaxIterations -> Infinity]
, {i, 3, m}];
B[[30]]
2019年01月26日 07点01分 1
level 3
筇殇love 楼主
在已知L,c时,可以通过调试得到一系类的解,但是如果c是变化的数,如何得到任意c下的B[[x]]呢?
2019年01月26日 07点01分 2
level 3
筇殇love 楼主
求助求助!!!!!
2019年01月26日 07点01分 3
吧务
level 12
Tan以Pi为周期且每个周期内取值从负无穷到正无穷,所以每个周期内至少有一个根,指定初值时指定在不同周期里就可以得到不同的解了
fun[L_, c_] := Module[{init, sol},
(*初始值,代表在0.2到40范围内设置初始值,可以换成你需要的范围*)
init = Range[0.2, 40, \[Pi]/L];
sol = FindRoot[Tan[L*b] - (c*b)/(b^2 - 0.01), {b, init}];
DeleteDuplicates[b /. sol]
]
fun[5, 0.2]
2019年01月26日 11点01分 4
[惊哭]东瓜出现了
2019年01月26日 13点01分
非常感谢回答,但是我有一个疑问的是,如果我的初始值是从0开始的话,就会漏掉0.19这个根,请问有什么办法能不漏根吗?我需要大于0的前200个根。
2019年01月27日 13点01分
吧务
level 15
2019年03月02日 04点03分 5
1