# Integral of a triangle function in python

I have just defined a function which is the integral of a given step function, and now I would like to integrate the triangle function obtained. jerk:1,-1,1-1 The step function correspond of a given list of successive jerk. For getting the triangle function,

I have used the formula: `a(t)=kt+ac` with k the Jerk and ac a constant which ensures the continuity and change for each step. But know, if I use the formula `v(t)=(1/2)kt^2+ac*t+vc`, I get negative value for velocity which is incorrect.

I have found some scipy function which return a number for an integral but I need a curve, do you have any idea of how I could integrate this? tks you

Asked by: Grace182 | Posted: 06-12-2021

You can use `scipy.integrate.quad` function...

``````from scipy.integrate import quad

def g(x): # your triangle function
return abs((x+1)%2-1)

for x in (0.1*i for i in xrange(40)):
print "x = %f -> g(x) = %f -> I(g, 0, x) = %f" % (x, g(x), I)
``````

Is it the thing you are looking for?

@edit:

When the g function is discrete then you can sum the integrates of non-discrete intervals:

``````from math import floor

I = 0.0
for x in (1.0*i for i in xrange(4)):
print "x = %f -> g(x) = %f -> I(g, 0, x) = %f" % (x, g(x), I)
if floor(x) % 2 == 0:
g = lambda x: 1
else:
g = lambda x: -1
``````

Answered by: Lucas739 | Posted: 07-01-2022

This may be what your are looking for : ``````import numpy as np
import matplotlib.pyplot as plt
from scipy import integrate

# step Function
def jerkstep(xprime,k):
return (1 - 2*( int(xprime)%2 == 1 ) )*k

# Triangle function ( step integration)
def jerkint(x,k,ac):
return  integrate.quad( jerkstep ,0, x, args =(k) ) + ac*x

# Integrate of triangle
def jerkintint(x,k,ac,vc):
return integrate.quad( jerkint, 0 , x , args = (1,0) ) + vc*x

# linearly spaced time samples (~ x axis)
t = np.linspace(2.0, 10.0, num = 100)

#optional arguments
k = 1
ac = 0
vc = 0

#output functions
jerk = np.array(t);
triangle = np.array(t);
curve = np.array(t);

# Warning : it can be long ( integration not optimized )
for indice,time in zip(range(len(t)),t): # Double indexation on t indices and t values
print "Time, in seconds : ", time

jerk[indice] = jerkstep(time,k)
print "Step function : " , jerk[indice]

triangle[indice] =jerkint(time,k,ac)
print "Step function integrate ( = triangle ) : " , triangle[indice]

curve[indice] = jerkintint(time,k,ac,vc)
print "Step function double integrate ( = triangle integrate ) : " , curve[indice]
print "\n"

# plot figure in mathplotlib
fig, axs = plt.subplots(3, 1, sharex=True, sharey=False)
axs.plot(t, jerk, 'o-', label=str("Step Function"))
axs.plot(t, triangle, 'o-' , label=str("Triangle Function"))
axs.plot(t, curve, 'o-' , label=str("Curve Function"))
fig.show()
plt.show()
``````

Answered by: Emily549 | Posted: 07-01-2022

# Similar questions

python - How do I overlap widgets with the Tkinter pack geometry manager?

I want to put a Canvas with an image in my window, and then I want to pack widgets on top of it, so the Canvas acts as a background. Is it possible to have two states for the pack manager: one for one set of widgets and another for another set?

Good geometry library in python?

Closed. This question does not meet Stack Overflow guid...

python - Postgis - How do i check the geometry type before i do an insert

i have a postgres database with millions of rows in it it has a column called geom which contains the boundary of a property. using a python script i am extracting the information from this table and re-inserting it into a new table. when i insert in the new table the script bugs out with the following: Traceback (most recent call last): File "build_parcels.py", line 258, in &lt;module&gt;...

python - How do I use Django to insert a Geometry Field into the database?

class LocationLog(models.Model): user = models.ForeignKey(User) utm = models.GeometryField(spatial_index=True) This is my database model. I would like to insert a row. I want to insert a circle at point -55, 333. With a radius of 10. How can I put this circle into the geometry field? Of course, then I would want to check which circles overlap a given circle. (my select stat...

Help with Windows Geometry in Python

Why are the commands to change the window position before and after sleep(3.00) being ignored? if self.selectedM.get() == 'Bump': W1 = GetSystemMetrics(1) + 200 print W1 w1.wm_geometry("+100+" + str(W1)) w2.wm_geometry("+100+" + str(W1)) w3.wm_geometry("+100+" + str(W1)) w4.wm_geometry("+100+" + str(W1)) self.rvar.set(0) self.rvar2.set(0) ...

python - Parsing MSDN Geometry Data Type

I have a database where one field gives spatial coordinates. I have learned the field is a serialised MSDN geometry Data Type (http://msdn.microsoft.com/en-us/library/bb933973.aspx). I want to access this database from Python and was wandering if anyone knew the format of the Geometry Data Type, or any libraries capable of parsing ...

python - GUI layout using Tk Grid Geometry Manager

Building a small application for personal use with Python and thought I'd try my hand with a little GUI programming using Tkinter. This is the GUI I've created so far: Application doubts: How can I make sure that the three LableFrames - A, B and C in the screenshot - have the same width? (Or rather, have ...

python - Is there a GUI design app for the Tkinter / grid geometry?

Closed. This question does not meet Stack Overflow guid...

geometry - Python - Pygame Drawing Angle

I need to draw an angle(in Pygame), given it's 1. Measure of the angle (θ) 2. Endpoints of the base(A &amp; B) Here I know 1. Measure of θ (in radians and degrees) 2. (x,y) of A and B 3. Measure of BC My Question How do I calculate the position of the Co-ordinates(...

python - Convert Point Geometry to list

I have the following script that creates a point geometry. How can I convert this point geometry to a list only containing the coordiantes to look like [258432.79138201929, 1001957.4394514663]? &gt;&gt;&gt; import ogr &gt;&gt;&gt; driver = ogr.GetDriverByName('ESRI Shapefile') &gt;&gt;&gt; pointshp = driver.Open('U:/My Documents/Tool/shp/point.shp', 0) &gt;&gt;&gt; pointlyr = pointshp.GetLayer...