python scipy求解非线性方程组


  1. 求解非线性方程组,cos(a) = 1 - d^2 / (2*r^2) L = a * rd = 140L= 156; 导入参数雅克比矩阵, 再次进行求解。


    A、求解非线性方程组:


    #导入优化模块和余弦函数


    from scipy.optimize import fsolve


    from math import cos


    #定义函数


    def f(x):


        d=140


        l=156


        a,r=x.tolist()


        return [cos(a)-1+d*d/(2*r*r),l-a*r]


    res = fsolve(f,[1,1])


    #打印


    print("a r")


    print(res)


    print(f(res))


    输出结果


    a r


    [ 1.5940638  97.86308398]


    [4.596323321948148e-14,2.7682744985213503e-11]


     


    B、用jacobi矩阵来解非线性方程组


    #导入优化模块和余弦函数


    from scipy.optimize import fsolve


    from math import cos


    #定义函数


    def f(x):


        d=140


        l=156


        a,r=x.tolist()


        return [cos(a)-1+d*d/(2*r*r),l-a*r]


    #定义导函数


    def j(x):


        d=140


        l=156


        a,r=x.tolist()


        return[


                [-sin(a),-(d*d)/(r*r*r)],


                [-r,-a]


            ]


    #通过fprimej的参数传递给fsolve()


    res = fsolve(f,[1,1],fprime=j)


    #打印


    print("a r")


    print(res)


    print(f(res))


    输出结果:


    a r


    [ 1.5940638  97.86308398]


    [-1.3322676295501878e-15,-5.400124791776761e-13]



猜你喜欢

转载自blog.csdn.net/qq_16668303/article/details/80620843