牛顿法python代码_如何用Python 和牛顿法解四元一次方程组

我是试图用Sympy这个库来解决问题,却出错了。frommathimport*frompylabimport*#AvoidconfictbetwwensympyandmathimportsympyasspyfromWoyToolsimport*r1=300r2=1200r3=800r31=476.74...

我是试图用Sympy这个库来解决问题,却出错了。

from math import *

from pylab import *

#Avoid confict betwwen sympy and math

import sympy as spy

from WoyTools import *

r1=300

r2=1200

r3=800

r31=476.74

r32=1000

r4=800

r5=400

r6=1746.42

r7=600

theta1=pi/2

theta7=pi/2

alfa=float(float(100.02)/180.0*spy.pi)

gama=float(float(28)/180.0*spy.pi)

theta6=float(float(66.371)/180.0*spy.pi)

#set angle velocity of theta2

w1 = float(2*spy.pi)

#set angle acceleration of theta2

a1 = float(0/180.0*spy.pi)

ri=float(180/180.0*spy.pi)

theta5=float(323.13/180.0*spy.pi)

Ax=0

Ay=0

Ex=70

Ey=160

Fx=130

Fy=160

#guess value

theta2=float(float(84.982)/180.0*spy.pi)

theta3=float(float(22.676)/180.0*spy.pi)

theta4=float(float(159.626)/180.0*spy.pi)

theta5=float(float(152.334)/180.0*spy.pi)

time = 1

count=0

for t in arange(0,time+0.1,0.01):

theta1 = w1 * t + 0.5 * a1 * t * t

theta22=spy.Symbol('theta22')

theta33=spy.Symbol('theta33')

theta44=spy.Symbol('theta44')

theta55=spy.Symbol('theta55')

f1=r1*cos(theta1)+r2*spy.cos(theta22)+r31*spy.cos(theta33)*spy.cos(alfa)-r31*spy.sin(theta33)*spy.sin(alfa)+r4*cos(theta44)-r6*cos(theta6)

f2=r1*sin(theta1)+r2*spy.sin(theta22)+r31*spy.sin(theta33)*spy.cos(alfa)+r31*spy.cos(theta33)*spy.sin(alfa)+r4*sin(theta44)-r6*sin(theta6)

f3=r32*spy.cos(theta33)*spy.cos(gama)+r32*spy.sin(theta33)*spy.sin(gama)-r4*cos(theta44)+r5*cos(theta55)+r7

f4=r32*spy.sin(theta33)*spy.cos(gama)-r32*spy.cos(theta33)*spy.sin(gama)-r4*sin(theta44)+r5*sin(theta55)-r6*sin(theta6)

theta2,theta3,theta4,theta5 = spy.nsolve((f1,f2,f3,f4),(theta22,theta33,theta44,theta55),(theta2,theta3,theta4,theta5))

错误提示是在f1那里raise ValueError("Symbolic value, can't compute")

ValueError: Symbolic value, can't compute

有没有其他能用的解牛顿法的库或者如果用Sympy解决这个问题?

Sympy这个库里关于使用牛顿法的语法规则就是要加引号的,我这么写在其他程序里没有问题

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值