I am currently working on the following python script to plot the given piecewise function over the specified domain np.linspace(1.0, 3.0)
and have run into some plotting errors. When I run the script, I am given the following error: ValueError: x and y must have same first dimension, but have shapes (50,) and (42,)
. I have tried adjusting the length of domain
to match that of codomain
by domain = np.linspace(1.0, 3.0, 42)
but have had no luck. Here is my code given below:
import numpy as np
from matplotlib import pyplot as plt
def f(x):
image = []
for p in x:
if p in np.linspace(1.0, 1.5):
y = 1.000004 * (p - 1.0) 0.486068 * (p - 1.0) ** 2 - 0.106566 * (p - 1.0) ** 3
image.append(y)
elif p in np.linspace(1.5, 2.0):
y = 0.608198 1.406152 * (p - 1.5) 0.326219 * (p - 1.5) ** 2 - 0.052277 * (p - 1.5) ** 3
image.append(y)
elif p in np.linspace(2.0, 2.5):
y = 1.386294 1.693164 * (p - 2.0) 0.247803 * (p - 2.0) ** 2 - 0.032798 * (p - 2.0) ** 3
image.append(y)
elif p in np.linspace(2.5, 3.0):
y = 2.290727 1.916372 * (p - 2.5) 0.198606 * (p - 2.5) ** 2 - 0.021819 * (p - 2.5) ** 3
image.append(y)
return image
domain = np.linspace(1.0, 3.0)
codomain = f(domain)
plt.plot(domain, codomain)
plt.show()
Disclaimer: this is my first post on this site so if there is anything I need to adjust for better feedback please let me know.
CodePudding user response:
You seem to be misunderstanding what np.linspace
is doing. Specifically, the values in np.linspace(1,1.5)
are not guaranteed to be in np.linspace(1,3)