【求助】请问这个含有Kummer函数的方程要如何求解?
mathematica吧
全部回复
仅看楼主
level 2
如题,想求解一个含有Kummer函数(第一类合流超几何函数)的方程。原方程如下:
具体需求是:
1、求出每一个y值(y值:0.001,0.002,……,0.5(共500个))对应的最大的n个x值(由最大开始,第二大,……,第n大x)(n=min{全部解的个数,4})。
2、需要求解几百个不同的y值所对应的x(已知x求y也试过了,问题是一样的),所以想一下子能把几百个解都求出出来。
所做的尝试和遇到的问题如下:
1、NSolve求解(先尝试了只求一个y对应的x,发现求不出来)。
代码:
g = 9.81;
alpha = Pi/18;
l = 100;
y = 0.1;
xmin = 0.00001*x;
xmax = 0.5*x;
a = -1/2*(y^2/g/x/Tan[alpha] - 1)
NSolve[Hypergeometric1F1[a, 1, 2*x*l] -
2*a*Hypergeometric1F1[a + 1, 2, 2*x*l] == 0, x, Reals]
问题:
没有给出明确的数值解,输出结果入下:
NSolve[-(1 - 0.00578112/x) Hypergeometric1F1[
1 + 1/2 (1 - 0.00578112/x), 2, 200 x] +
Hypergeometric1F1[1/2 (1 - 0.00578112/x), 1, 200 x] == 0, x, Reals]
2、FindRoot求解
问题:只能找出一个零点。
3、RootSearch求解
代码:
Needs["Ersek`RootSearch`"]
?RootSearch
g = 9.81;
alpha = Pi/18;
l = 100;
y = Import["D:\\y.txt", "list"](*因为没法传文件,这个表我是直接用excel拉的,y从0.01,0.02,……,0.5,共500个*)
xmin = 0.00001*y;
xmax = 0.5*y;
a = Table[-1/2*(y[[i]]^2/g/x/Tan[alpha] - 1), {i, 500}]
tao = Table[
N[Hypergeometric1F1[a[[i]], 1, 2*x*l] -
2*a[[i]]*Hypergeometric1F1[a[[i]] + 1, 2, 2*x*l]], {i, 500}]
soln = Table[
RootSearch[tao[[i]] == 0, {x, xmin[[i]], xmax[[i]]}], {i, 500}]
问题:
可以正常求解,但是部分输出的解不全,无法满足具体需求1。
想请教下各位大佬,这个方程要怎么求啊?小白头秃……
2023年04月23日 04点04分 1
level 2
翻到了之前的求助帖,想起来用RootSearchSamples,把RootSearchSamples加入了Table循环中。但是在循环里的时候,RootSearchSamples找的根也不全,只有单个用RootSearchSamples输出的时候,根是比较全的,,,这要怎么办啊?[泪]
2023年04月23日 09点04分 2
2023年04月23日 09点04分
吧务
level 15
y = Import["D:\\y.txt", "list"](*因为没法传文件,这个表我是直接用excel拉的,y从0.01,0.02,……,0.5,共500个*)
__________________________
你给我把Table或者Range的自带帮助再仔细看看。
可以正常求解,但是部分输出的解不全。
——————————————
你怎么知道解不全的?
还有,这种情况下
正确的
提问方法是给出一个导致问题的y值,而不是一口气在问题塞500个y让人找问题。
但是在循环里的时候,RootSearchSamples找的根也不全,只有单个用RootSearchSamples输出的时候,根是比较全的
————————————
这是不可能的,RootSearchSamples在循环内外的行为不会有差异,你代码到底是怎么写的?
2023年05月06日 07点05分 3
1