How To Do A Sigma In Python 3
Solution 1:
A sigma (∑) is a Summation operator. It evaluates a certain expression many times, with slightly different variables, and returns the sum of all those expressions.
For example, in the Ballistic coefficient formula
The Python implementation would look something like this:
# Just guessing some values. You have to search the actual values in the wiki.
ballistic_coefficients = [0.3, 0.5, 0.1, 0.9, 0.1]
total_numerator = 0
total_denominator = 0
for i, coefficient in enumerate(ballistic_coefficients):
total_numerator += 2**(-i) * coefficient
total_denominator += 2**(-i)
print('Total:', total_numerator / total_denominator)
You may want to look at the enumerate
function, and beware precision problems.
Solution 2:
The easiest way to do this is to create a sigma function the returns the summation, you can barely understand this, you don't need to use a library. you just need to understand the logic .
defsigma(first, last, const):
sum = 0for i inrange(first, last + 1):
sum += const * i
returnsum# first : is the first value of (n) (the index of summation)# last : is the last value of (n)# const : is the number that you want to sum its multiplication each (n) times with (n)
Solution 3:
An efficient way to do this in Python is to use reduce()
.
To solve
3
Σ i
i=1
You can use the following:
from functools import reduce
result = reduce(lambda a, x: a + x, [0]+list(range(1,3+1)))
print(result)
reduce()
will take arguments of a callable and an iterable, and return one value as specified by the callable. The accumulator is a
and is set to the first value (0
), and then the current sum following that. The current value in the iterable is set to x
and added to the accumulator. The final accumulator is returned.
The formula to the right of the sigma is represented by the lambda. The sequence we are summing is represented by the iterable. You can change these however you need.
For example, if I wanted to solve:
Σ π*i^2
i
For a sequence I [2, 3, 5]
, I could do the following:
reduce(lambda a, x: a + 3.14*x*x, [0]+[2,3,5])
You can see the following two code lines produce the same result:
>>>reduce(lambda a, x: a + 3.14*x*x, [0]+[2,3,5])
119.32
>>>(3.14*2*2) + (3.14*3*3) + (3.14*5*5)
119.32
Solution 4:
I've looked all the answers that different programmers and coders have tried to give to your query but i was unable to understand any of them maybe because i am a high school student anyways according to me using LIST will definately reduce some pain of coding so here it is what i think simplest way to form a sigma function .
#creating a sigma function
a=int(input("enter a number for sigma "))
mylst=[]
for i inrange(1,a+1):
mylst.append(i)
b=sum(mylst)
print(mylst)
print(b)
Solution 5:
Captial sigma (Σ) applies the expression after it to all members of a range and then sums the results.
In Python, sum
will take the sum of a range, and you can write the expression as a comprehension:
For example Speed Coefficient
A factor in muzzle velocity is the speed coefficient, which is a weighted average of the speed modifiers si of the (non- casing) parts, where each component i starting at the head has half the weight of the previous:
The head will thus always determine at least 25% of the speed coefficient.
For example, suppose the shell has a Composite Head (speed modifier 1.6), a Solid Warhead Body (speed modifier 1.3), and a Supercavitation Base (speed modifier 0.9). Then we have
s0=1.6
s1=1.3
From the example we can see that i starts from 0 not the usual 1 and so we can do
defspeed_coefficient(parts):
return (
sum(0.75 ** i * si for i, si inenumerate(parts))
/
sum(0.75 ** i for i, si inenumerate(parts))
)
>>>speed_coefficient([1.6, 1.3, 0.9])
1.3324324324324326
Post a Comment for "How To Do A Sigma In Python 3"