Я пытаюсь использовать fsolve но он возвращает результат от вызова функции не является собственно массив поплавки здесь кодРезультата от вызова функции не является надлежащим массив поплавков, fsolve, SymPy
Если я сделайте это так, это не сработает.
from sympy import *
B=symbols('B')
L=0.97
a = 0.04
b= 0.029
m = 4.8
I = 3.14*(a/2)*(b/2)**3/4
E = 10**10
ro = 900
A = 3.14*(a/2)*(b/2)
c = sqrt(E*I/(ro*A))
AA=Matrix([[0,-B**3,0,B**3],[-B**2,0,B**2,0],[B**4*c**2*m*(cos(B*L)) + E*I*(B**3*sin(B*L)), B**4*c**2*m*(sin(B*L))+ E*I*(- B**3*cos(B*L)),B**4*c**2*m*(cosh(B*L))+ E*I*(B**3*sinh(B*L)),B**4*c**2*m*(sinh(B*L))+ E*I*(B**3*cosh(B*L))],[-B**2*cos(B*L),- B**2*sin(B*L),B**2*cosh(B*L),B**2*sinh(B*L)]])
detA=AA.det()
from math import cosh, sinh, cos, sin
from scipy.optimize import fsolve
def func(B):
return detA
for i in range(1,15):
B0=fsolve(func,i)
print("B0=",B0)
print("w0=",B0**2*c)
Но если я распечатаю detA, а затем скопирую/вставьте его в функцию, он будет работать нормально.
from math import cosh, sinh, cos, sin
from scipy.optimize import fsolve
def func(B):
return 5606.66666666667*B**11*sin(0.97*B)*cosh(0.97*B) - 5606.66666666667*B**11*cos(0.97*B)*sinh(0.97*B) + 478.634125*B**10*sin(0.97*B)**2 + 478.634125*B**10*cos(0.97*B)**2 - 957.26825*B**10*cos(0.97*B)*cosh(0.97*B) - 478.634125*B**10*sinh(0.97*B)**2 + 478.634125*B**10*cosh(0.97*B)**2
for i in range(1,15):
B0=fsolve(func,i)
print("B0=",B0)
print("w0=",B0**2*c)
Я предполагаю, что, поскольку я использовал SymPy, определитель не плывут, как я мог бы превратить его плавать?