user1594303 - 1 year ago 90

Python Question

My aim is to plot a function with two variable t and x.

we assign 0 to x if 0

`import matplotlib.pyplot as plt`

import numpy as np

t=np.linspace(0,5,100)

def x(i):

if i <= 1:

j = 1

else :

j = 0

return j

y = 8*x(t)-4*x(t/2)-3*x(t*8)

plt.plot(t,y)

plt.ylabel('y')

plt.xlabel('t')

plt.show()

it return an error :

`ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()`

Answer Source

what do you want to do with that code? take a look `t`

is a np.array then you use it as a single number the element wise operator didnâ€™t work in that case maybe you prefer using a loop like:

```
import matplotlib.pyplot as plt
import numpy as np
t=np.linspace(0,5,100)
def x(i):
if i <= 1:
j = 1
else :
j = 0
return j
y = []
for i in t:
y.append(8*x(i)-4*x(i/2)-3*x(i*8))
# or using list comprehensions
y = [8*x(i)-4*x(i/2)-3*x(i*8) for i in t]
plt.plot(t,y)
plt.ylabel('y')
plt.xlabel('t')
plt.show()
```