Write math formula in python

2019-09-18 18:48发布

问题:

This is the value I want to calculate. I am writing it as follows, here i is the imaginary number.I am using python and networkx.Can someone help.

import math
import matplotlib
matplotlib.use('TkAgg')
from pylab import *
import cmath
import networkx as nx
import random as rd
import numpy as np

g=nx.karate_club_graph()
for i in g.nodes_iter():
    g.node[i]['theta']=1

a=abs((cmath.exp( (g.node[i]['theta']*(1j)) for i in    g.nodes_iter()))/g.number_of_nodes())

The error output that I get is:

"""File "", line 1, in runfile('C:/Users/Bhawesh/Desktop/workingdirectory/bookpractice.py', wdir='C:/Users/Bhawesh/Desktop/workingdirectory')

File "C:\Users\Bhawesh\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile execfile(filename, namespace)

File "C:\Users\Bhawesh\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 87, in execfile exec(compile(scripttext, filename, 'exec'), glob, loc)

File "C:/Users/Bhawesh/Desktop/workingdirectory/bookpractice.py", line 18, in b=abs((cmath.exp( (g.node[i]['theta']*(1j)) for i in g.nodes_iter()))/g.number_of_nodes())

TypeError: a float is required """

回答1:

Python's sqrt operation doesn't support negative integers. However, numpy works with complex numbers. The imaginary number $i$ is given by 1j in Python. So you will have to convert your equation to:

a=abs((np.exp( (g.node[i]['theta']*(1j)) for i in g.nodes_iter()))/g.number_of_nodes())