переписывает функцию fsolve с клена на питон - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь решить уравнение численно, используя fsolve на интервале 0,100 с максимальными решениями n. Я сделал это в Maple, и он делает то, что мне нужно. Вот мой код:

E:= proc (a, n, maxe) local E1, E2; E1 := fsolve(tan((1/2)*w*a) == 
tanh((1/2)*w*a), w, 0 .. maxe, maxsols = n); E2 := {-E1[2 .. -1]} union {E1} 
end proc:
aa:=1.5; nn:=4: sqrtener(aa,nn,100);

Мой вывод:

{-20.42035224, -14.13716549, -7.853204624, 0., 7.853204624, 14.13716549, 20.42035224}

Но я должен переписать его на языке Python. Так используется та же функция:

def E(a, n, maxe):
    E1 = fsolve(lambda w : np.tan(w * a / 2) - np.tanh(w * a / 2),range(maxe), maxfev = n)
    E2 = set(np.array(E1)) | set(np.array((-1)*E1[:-1]-1))
    return(E2)
print(E(1.5,4,100))

Но он возвращает мне 200 чисел от -100 до 100, даже если я поставлю параметр maxfev = 4

Может быть, кто-то знает другую функцию вместо fsolve?

...