Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数调用的结果不是正确的浮点、fsolve和sympy数组_Python_Scipy_Sympy - Fatal编程技术网

Python 函数调用的结果不是正确的浮点、fsolve和sympy数组

Python 函数调用的结果不是正确的浮点、fsolve和sympy数组,python,scipy,sympy,Python,Scipy,Sympy,我试图使用fsolve,但它返回的函数调用结果不是正确的浮点数组 这是密码 如果我这样做,它就不起作用了 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/

我试图使用fsolve,但它返回的函数调用结果不是正确的浮点数组 这是密码

如果我这样做,它就不起作用了

    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,行列式不是float,我如何将它转换为float?

用于将符号表达式转换为可以数值计算的函数:

func = sy.lambdify(B, detA)

将sympy导入为sy
输入数学
从scipy.optimize导入fsolve
B=系统符号('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))
[0、[0、-B**3,3,0,B**3,3,B**3,,[B**2,0,B**,[B**B**4*c**4*c**2*c**2*c**2*c*I*(B**3[0、[0、[3、[2,B**2,B**2,0,B,[0,[0、[B**B**B**4*B**4*c**4*c**4*c**4*c**4*c**2*c**2*c**2*m*2*m**m*m*(sy 4*m*(Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.cos(Y.cos(Y.cosh.cosh.cosh(B.cosh(B.cosh(B*L)(B.cosh(B*],[-B**2*sy.cos(B*L),-B**2*sy.sin(B*L),B**2*sy.cosh(B*L),B**2*sy.sinh(B*L)])
detA=AA.det()
func=sy.lambdify(B,detA)
第2(B)段:
6.6666666666666666666666 6 6 6.666666666666666666666666666666666666666 6.6666666666666666666666666666666666666 6 6 6.666666666666666666666 6 6 6.66666666666666666666666666666666666666 7 7 7 7*B*7 7 7 7*7*7 7 7 7 7*7 7 7*7 7 7*7 7 7 7*7 7 7*7 7 7*7 7 7 7 7 7*7*7 7 7 7*7*7*7 7 7 7*7*B B B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*11*B*B*11*B*B*B*B数学cosh(0.97*B)**2
断言abs(func(1)-func2(1))<1e-8
对于范围(1,15)内的i:
B0=f解决方案(func,i)
打印(“B0=”,B0)
打印(“w0=”,B0**2*c)
import sympy as sy
import math
from scipy.optimize import fsolve

B = sy.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 = sy.sqrt(E * I / (ro * A))
AA = sy.Matrix([[0, -B**3, 0, B**3], [-B**2, 0, B**2, 0], [B**4 * c**2 * m * (sy.cos(B * L)) + E * I * (B**3 * sy.sin(B * L)), B**4 * c**2 * m * (sy.sin(B * L)) + E * I * (- B**3 * sy.cos(B * L)), B**4 * c**2 * m * (sy.cosh(B * L)) + E * I * (B**3 * sy.sinh(B * L)), B**4 * c**2 * m * (sy.sinh(B * L)) + E * I * (B**3 * sy.cosh(B * L))], [-B**2 * sy.cos(B * L), - B**2 * sy.sin(B * L), B**2 * sy.cosh(B * L), B**2 * sy.sinh(B * L)]])
detA = AA.det()

func = sy.lambdify(B, detA)

def func2(B):
        return 5606.66666666667*B**11*math.sin(0.97*B)*math.cosh(0.97*B) - 5606.66666666667*B**11*math.cos(0.97*B)*math.sinh(0.97*B) + 478.634125*B**10*math.sin(0.97*B)**2 + 478.634125*B**10*math.cos(0.97*B)**2 - 957.26825*B**10*math.cos(0.97*B)*math.cosh(0.97*B) - 478.634125*B**10*math.sinh(0.97*B)**2 + 478.634125*B**10*math.cosh(0.97*B)**2

assert abs(func(1) - func2(1)) < 1e-8

for i in range(1, 15):
    B0 = fsolve(func, i)
    print("B0=", B0)
    print("w0=", B0**2 * c)