Python 函数帮助
请帮帮我!我实在搞不懂这个问题。
给定这个函数
f(x,n)= n**x(n-1)
5c. 使用这个函数,计算
(((2^3 + 3^2)^4 -2^4)^2 + (3^4 – (6^2 + 3)^4)^3)^3
的变化率。
这是我在IDLE中写的代码:
def function(x, n):
return (n*(x**(n-1)))
assertEqual (
function ((((
function (2.0, 3.0))+(
function (3.0, 2.0)), 4.0)-(
function (2.0, 4.0)), 2.0)+((
function (3.0, 4.0))-((
function (6.0, 2.0))+(
function (3.0, 1.0)), 4.0), 3.0), 3.0), 35994405888.0)
然后我保存并运行后,得到了这个信息:
Traceback (most recent call last):
File "C:\Users\Jonathan Cohen\Desktop\School\CISC 106\lab2.py", line 83, in <module>
assertEqual (function ((((function (2.0, 3.0))+(function (3.0, 2.0)), 4.0)-(function (2.0, 4.0)), 2.0)+((function (3.0, 4.0))-((function (6.0, 2.0))+(function (3.0, 1.0)), 4.0), 3.0), 3.0), 35994405888.0)
TypeError: unsupported operand type(s) for -: 'tuple' and 'float'
4 个回答
1
一开始这看起来像是微积分的内容,但很快就变得复杂了。
基础的微分计算告诉我们,如果你有一个函数:
那么关于自变量x的第一个导数是:
我觉得你是在用Python尝试计算类似的东西,但你给出的元组表达式让我有点困惑。里面是不是应该隐藏着某个自变量呢?
2
这种情况出现过几次,但这是第一次。
function ((((function (2.0, 3.0))+(function (3.0, 2.0)), 4.0)-(function (2.0, 4.0)), 2.0)+((function (3.0, 4.0))-((function (6.0, 2.0))+(function (3.0, 1.0)), 4.0), 3.0), 3.0)
((function (2.0, 3.0))+(function (3.0, 2.0)), 4.0)
我遮住的那部分代码会生成一个叫做元组的东西,内容是(18.0, 4.0)
。然后你试图对这个元组进行正常的数学运算,但失败了。
针对评论的回复,如果你这样做,这段代码会更好:
function((function (2.0, 3.0))+(function (3.0, 2.0)), 4.0)
3
(function(a, b), c)
是一个包含两个部分的组合,第一个部分是 function(a,b)
的结果,第二个部分是 c
。
如果你想表示 (a^b)^c
,你需要用类似 function(function(a,b), c)
的方式来写(假设 function()
是用来计算第一个参数的值被提升到第二个参数的幂)。