【python】传递函数

1. 当对一个变量赋值时,实际是将相同
对象的引用赋值给这个变量。如果对象是函数的话,这个对象所有的别名都是可调用的。

>>> def foo():
... print 'in foo()'
...
>>> bar = foo
>>> bar()
in foo()

2. 函数作为参数传入其他函数来进行调用

>>> def bar(argfunc):
... argfunc()
...
>>> bar(foo)
in foo()

3. 一个将函数作为参数传递,并在函数体内调用这些函数

#!/user/bin/env python
def convert(func, seq):
    return [func(eachNum) for eachNum in seq]

myseq = (1,11.11,-1.1e8, 999999999L)
print convert(int, myseq)
print convert(long, myseq)
print convert(float, myseq)

执行结果:

[1, 11, -110000000, 999999999]
[1L, 11L, -110000000L, 999999999L]
[1.0, 11.109999999999999, -110000000.0, 999999999.0]


数学建模是指使用数学方法和技术来解决实际问题的过程,它涉及到多个领域的知识,如数学、统计学、计算机科学等。在Python中,我们可以使用许多不同的库和工具来进行数学建模。 下面是一个简单的示例,展示如何使用Python进行数学建模: 1. 导入必要的库 在Python中,我们可以使用NumPy、SciPy和Matplotlib等库来进行数学建模。因此,我们需要先导入这些库。 ```python import numpy as np import scipy.optimize as opt import matplotlib.pyplot as plt ``` 2. 定义问题 在进行数学建模之前,我们需要首先定义我们要解决的问题。例如,我们可以定义一个函数来表示一个物理系统的行为。在本例中,我们将考虑一个简单的弹簧质量系统,其中弹簧的行为由胡克定律描述,质量受到重力作用。 ```python def spring_mass_system(x, k, m, g): return k * x - m * g ``` 此函数将给出弹簧伸长量x的力,其中k是弹簧常数,m是质量,g是重力加速度。 3. 解决问题 接下来,我们需要使用数值方法来解决我们的问题。在本例中,我们将使用SciPy库中的优化函数来寻找我们的方程的根。我们可以通过使用opt.root函数来实现此目的。 ```python x0 = 0.5 # 初始值 k = 0.1 # 弹簧常数 m = 0.2 # 质量 g = 9.8 # 重力加速度 # 寻找根 res = opt.root(spring_mass_system, x0, args=(k, m, g)) x = res.x[0] ``` 在此代码中,我们使用初始值x0、弹簧常数k、质量m和重力加速度g来寻找方程的根。我们可以将这些参数作为参数传递给函数,并使用args参数将它们传递给opt.root函数。 4. 可视化结果 最后,我们可以使用Matplotlib库将结果可视化,以便更好地理解我们的问题。 ```python # 绘制结果 t = np.linspace(0, 10, 100) y = k * x * np.cos(np.sqrt(k / m) * t) plt.plot(t, y) plt.xlabel('Time (s)') plt.ylabel('Position (m)') plt.title('Spring-Mass System') plt.show() ``` 在这个例子中,我们绘制了时间t和弹簧伸长量y的关系。我们可以看到,随着时间的推移,弹簧的伸长量发生了变化,这符合我们对物理系统的预期。 这只是一个简单的示例,展示了如何使用Python进行数学建模。在实际应用中,我们需要根据具体问题选择不同的库和工具,并使用更复杂的算法和技术来解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值