[英]Recursively generate LaTeX expression for continued fractions for a given python list
我正在尝试为Jupyter Notebook
中的连续分数生成LaTeX
字符串表达式。 例如,给定的 Python 列表x=[1,2,3,4,5]
可以写成连分数:
生成这个LaTeX
分数的结构表达式是\\frac{Numerator}{Denominator}
使用非递归代码:
from IPython.display import display, Markdown
# Non-recursive:
def nest_frac(previous_expr, numerator_expr1, denominator_expr2):
return previous_expr + " + \\frac{"+ numerator_expr1 + "}{" + denominator_expr2 + "}"
# Cumbersome, error-prone
display(Markdown("$"+ \
nest_frac("1","1", \
nest_frac("2","1", \
nest_frac("3","1", \
nest_frac("4","1", "5") \
) \
) \
) \
+ "$") \
)
x = [1,2,3,4,5]
如何递归生成表达式提供了一个 python 列表。
我们可以将x
作为附加参数来定义 function nest_frac_N
:
def nest_frac_N(previous_expr, numerator_expr1, denominator_expr2, x):
temp_frac=str(x[len(x)-1]-1) +"+ \\frac{"+str(numerator_expr1)+"}{"+str(x[len(x)-1])+"}"
for i in reversed(x[:len(x)-2]):
temp_frac = str(i) +"+ \\frac{1}{"+temp_frac+"}"
return temp_frac
如果我们需要x=[1,2,3,4,5]
的 output,我们会这样做:
>>> x = [1,2,3,4,5]
>>> nest_frac_N(1, 1, 1, x)
... '1+ \\frac{1}{2+ \\frac{1}{3+ \\frac{1}{4+ \\frac{1}{5}}}}'
要获得 markdown 格式,我们使用:
display(Markdown("$"+nest_frac_N(1, 1, 1, x)+"$"))
让x
大小为 10 以确保 function 是灵活的:
Output
>>> x = [1,2,3,4,5,6,7,8,9,10]
>>> nest_frac_N(1, 1, 1, x)
... '1+ \\frac{1}{2+ \\frac{1}{3+ \\frac{1}{4+ \\frac{1}{5+ \\frac{1}{6+ \\frac{1}{7+ \\frac{1}{8+ \\frac{1}{9+ \\frac{1}{10}}}}}}}}}'
并获得 markdown:
display(Markdown("$"+nest_frac_N(1, 1, 1, x)+"$"))
而我们可以很方便的重新设置function,直接显示markdown的格式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.