变量未在jupyter笔记本中设置为正确值

时间:2018-03-02 18:51:44

标签: python-3.x

我对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的输出变化

1 个答案:

答案 0 :(得分:0)

不知何故,但该方法未知,sub2改变了TIME的值。

应用

的修正
TIME = np.arange(0,5,0.5)
每次使用TIME之前

都可以解决问题。再一次,不知道为什么会发生这种情况......但事实就是如此。