Here is the equation that I want to integrate, I want to integrate the
theta, it will be a function of
y = f(V), then plot the
y - V. All other parameters are known.
How can I do it?
Here is what I’ve done:
# Part 1: Create integ_expr y=f(V) from sympy import * from __future__ import division import numpy as np import matplotlib.pyplot as plt V, theta = symbols('v theta') # U, phi, sigu, sigv = symbols('U phi sigu sigv') u,v = -2.63582726849, 0.562272364634 sigu, sigv = 7.9369982103, 6.56056711043 U = (u)**2 + (v)**2 phi = atan(u/v) expr = exp(((V*cos(theta)-U*cos(phi))**2/sigu**2+(V*sin(theta)-U*sin(phi))**2/sigv**2)*-1/2) integ_expr = integrate(expr, (theta, 0, 2*np.pi)) # this can return a result # Part 2: plot `y-V` lf = lambdify(V, integ_expr) fig = plt.figure() x_vals = np.linspace(-20.,20.) y_vals = lf(x_vals) # reports TypeError: can't convert expression to float axes.grid() axes.plot(x_vals, y_vals) plt.show();
I can get the
y_vals = lf(x_vals) gives me
TypeError: can't convert expression to float.
I think it’s maybe the
integ_expr is still an
expression not a
function that can directly return a result?
I just get started with
Sympy, the above code may feel childish to most of you, so I’m wondering if there is a right way to plot
Source: Stack Overflow