String manipulation by substituting String in a mathematical expression

Imagine something like

exp(49/200)+(x-49/200)

I want to pass as an argument to the function "roundn" any operation that is not an addition or subtraction. Thus, my expression has become

roundn(exp(roundn(49/200, n)), n) + (x - roundn(49/200, n)

Well, the expression I want to manipulate is as follows:

exp(49/200)+exp(49/200)*(x-49/200)+1/2*exp(49/200)*(x-49/200)^2+1/6*exp(49/200)*(x-49/200)^3+1/24*exp(49/200)*(x-49/200)^4+1/120*exp(49/200)*(x-49/200)^5+1/720*exp(49/200)*(x-49/200)^6+1/5040*exp(49/200)*(x-49/200)^7+1/40320*exp(49/200)*(x-49/200)^8+1/362880*exp(49/200)*(x-49/200)^9+1/3628800*exp(49/200)*(x-49/200)^10+1/39916800*exp(49/200)*(x-49/200)^11
+3
source share
4 answers

, , , . Pythoners , , , (, 1.0/10 = 0.100000000000001). , , round(49/200,n) . exp(49/200) 13 , .

zz = round(49/200,n)
e_zz = exp(zz)
ans = (e_zz + 
    e_zz * (x-zz) +
    1/2 * e_zz * (x-zz)**2 +
    1/6 * e_zz * (x-zz)**3 +
    1/24 * e_zz * (x-zz)**4 +
    1/120 * e_zz * (x-zz)**5 +
    1/720 * e_zz * (x-zz)**6 +
    1/5040 * e_zz * (x-zz)**7 +
    1/40320 * e_zz * (x-zz)**8 +
    1/362880 * e_zz * (x-zz)**9 +
    1/3628800 * e_zz * (x-zz)**10 +
    1/39916800 * e_zz * (x-zz)**11)

e . 11- . ( , Python **, ^.)

Edited: . , . * e_zz , (, , ):

zz = round(49/200,n)
e_zz = exp(zz)
ans = e_zz * (1 + 
    (x-zz) +
    1/2 * (x-zz)**2 +
    1/6 * (x-zz)**3 +
    1/24 * (x-zz)**4 +
    1/120 * (x-zz)**5 +
    1/720 * (x-zz)**6 +
    1/5040 * (x-zz)**7 +
    1/40320 * (x-zz)**8 +
    1/362880 * (x-zz)**9 +
    1/3628800 * (x-zz)**10 +
    1/39916800 * (x-zz)**11)
+6
+2

, :

eq, replace :

eq.replace('49/200', 'roundn(49/200,n)')

roundn exp() (, - ).

+1

, p=re.compile(r'\d+/\d+'), roundn. FYI, , , , , .

0
source

Source: https://habr.com/ru/post/1776404/


All Articles