Это не вопрос python или даже вопрос программирования. Это простая математика.
f(x) = 1/(x * (1 + x/a)**3)
g(x) = 4x**2
h(x) = 4x/(1 + x/a)**3
Существует ли разница между f (g (r)) и h (r)? Есть конечно. Несмотря на то, что графики выглядят точно так же, f (g (0)) не определено, а на графике должно отображаться как точечный разрыв.
Как интеллектуальный пользователь этой функции, вы можете узнать, что существует точечный разрыв. Если вы выберете, вы можете заменить f (g (r)) на h (r). Единственное различие будет иметь желаемую функцию, определенную в 0.
Математика не делает этого самостоятельно, а нет языка программирования уменьшит состав функций для вас самостоятельно, если вы не спросите это, потому что вы пользователь, и вы должны знать, чего хотите от программы. Если вы создадите композицию функций с разрывом точки, ожидается, что вы сделали это по какой-то причине. Ожидается, что интеллект будет в программисте, а не в компиляторе. Либо составляйте и уменьшайте функцию самостоятельно, либо делайте что-то вроде симпатии. В любом случае, вы должны сделать это явным для компьютера, что эти две функции должны быть связаны друг с другом.
действительно, возможно, попытка/исключение ZeroDivisionError может помочь здесь ... –