我对python比较陌生,而且我遇到了问题:
打印
sub2(x_eq,t,TIME)
给出
[ 0. 0.44508534 0.67843048 0.74471979 0.70970004 0.53404757
0.14018878 -0.33691033 -0.63391147 -0.73733656]
虽然
x_points=sub2(x_eq,t,TIME)
print(x_points)
给出
[102.66143508 79.77874816 21.62259676 -4.52895461 9.89269732
63.13232847 101.94641713 112.58619799 168.77080144 206.69523487]
没有错误,没有任何错误。只是错误地分配了变量。
(其余代码)
from sympy import *
from sympy.abc import t,x,y,z
import numpy as np
import matplotlib.pyplot as plt
def sub2(eq,var1,var2):
l3=var2
for i in range(0,len(var2)):
l3[i]=eq.subs(var1,var2[i])
return l3
def getTangentLineParametric(x_eq,y_eq,loc_t):
dx_dt=diff(x_eq,t)
dy_dt=diff(y_eq,t)
dy_dx=dy_dt/dx_dt
slope=dy_dx.subs(t,loc_t)
tanline=slope*(t-x_eq.subs(t,loc_t))+y_eq.subs(t,loc_t)
plt.figure()
TIME = np.arange(0,5,0.5)
x_points=sub2(x_eq,t,TIME)
print(type(x_points),type(sub2(x_eq,t,TIME)))
print(sub2(x_eq,t,TIME))
y_points=sub2(y_eq,t,TIME)
y_tanlin=sub2(tanline,t,TIME)
print(x_eq,x_points,y_eq,y_points)
plt.plot(x_points,y_points,color="blue")
#plt.plot(TIME,y_tanlin)
return tanline
getTangentLineParametric(sin(t),3*t**3,2)
打印x_points和sub2(x_eq,t,TIME)的类型得到:
<class 'numpy.ndarray'> <class 'numpy.ndarray'>
在分配节目之前尝试打印它们是未初始化的,因此这不是问题。 然而...
y_points与x_points完全相同,导致y = x line
输出方程正常工作:36 *(t - sin(2))/ cos(2)+ 24
这一切都非常混乱,我不知道为什么变量不能正确设置
我正在使用jupyter笔记本
注意:sub2只是subs函数,除了你可以输入一个列表/数组而不只是一个整数/ float
进一步测试显示每次执行时sub2的输出变化
答案 0 :(得分:0)
不知何故,但该方法未知,sub2改变了TIME的值。
应用
的修正TIME = np.arange(0,5,0.5)
每次使用TIME之前都可以解决问题。再一次,不知道为什么会发生这种情况......但事实就是如此。