-4

I can't install anything new I need to use the default python library and I have to integrate a function. I can get the value for any f(x) and I need to integrate from 0 to 6 for my function f(x).

Nico Schlömer
  • 53,797
  • 27
  • 201
  • 249
J C
  • 1
  • 1
  • 1
  • 1
  • To avoid the question being closed without being answered, please refer to [How to Ask](http://stackoverflow.com/help/how-to-ask) –  Dec 06 '16 at 01:05

3 Answers3

11

In discrete form, integration is just summation, i.e.

enter image description here

where n is the number of samples. If we let b-a/n be dx (the 'width' of our sample) then we can write this in python as such:

def integrate(f, a, b, dx=0.1):
    i = a
    s = 0
    while i <= b:
        s += f(i)*dx
        i += dx
    return s

Note that we make use of higher-order functions here. Specifically, f is a function that is passed to integrate. a, b are our bounds and dx is 1/10 by default. This allows us to apply our new integration function to any function we wish, like so:

# the linear function, y = x
def linear(x):
    return x

integrate(linear, 1, 6) // output: 17.85

# or using lamdba function we can write it directly in the argument
# here is the quadratic function, y=x^2
integrate(lambda x: x**2, 0, 10) // output: 338.35
Justin Bell
  • 800
  • 7
  • 20
0

You can use quadpy (out of my zoo of packages):

import numpy
import quadpy


def f(x):
    return numpy.sin(x) - x


val, err = quadpy.quad(f, 0.0, 6.0)
print(val)
-17.96017028290743
Nico Schlömer
  • 53,797
  • 27
  • 201
  • 249
-1
def func():
    print "F(x) = 2x + 3"
    x = int(raw_input('Enter an integer value for x: '))
    Fx = 2 * x + 3
    return Fx

print func()

using the input function in python, you can randomly enter any number you want and get the function or if hard coding this this necessary you can use a for loop and append the numbers to a list for example

def func2():
    print "F(x) = 2x + 3"
    x = []
    for numbers in range(1,7):
        x.append(numbers)

    upd = 0
    for i in x:
        Fx = 2 * x[upd] + 3
        upd +=1
        print Fx

print func2()

EDIT: if you would like the numbers to start counting from 0 set the first value in range to 0 instead of 1

Falcon
  • 23
  • 2
  • This evaluates the function, it doesn't do any integration. – Prune Dec 06 '16 at 01:52
  • can you explain in a bit more detail what you want? – Falcon Dec 06 '16 at 01:55
  • You evaluated the function over the range [1,6]; the poster needs the integral over the range [0,6]. I don't see anywhere that you've dealt with the definite integral of a given function. See the earlier answer for a good presentation. – Prune Dec 06 '16 at 02:01