My_sum函数进化

本文介绍了五种不同的方法来创建一个Python函数,能够根据传入不同参数类型计算从开始到终止的数值和。方法包括传统循环、range对象、使用默认参数和内置sum函数。适用于初学者理解函数灵活性及高级开发者提升代码简洁度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写一个函数

函数

此函数可以传入一个参数,两个参数,三个参数:

1、传入一个时参数代表终止数

2、传入两个时。第一个为起始值,第二个为终止值

3、传入三个时第三个代表步长

功能:返回从开始到终止值得和

方法一:

def My_sum1(*a):
    result = 0
    if len(a)==1:
        for i in range(a[0]):
            result += i
    elif len(a)==2:
        for x in range(a[0],a[1]):
            result +=x
    elif len(a)==3:
        for y in range(a[0],a[1],a[2]):
            result += y
    return result
# print(My_sum1(5))
# print(My_sum1(4,6))
# print(My_sum1(5,10,2))

方法二:

def My_sum2(*a):
    result = 0
    if len(a)==1:
        r = range(a[0])
    elif len(a)==2:
        r = range(a[0],a[1])
    elif len(a)==3:
        r = range(a[0],a[1],a[2])
    for i in r:
        result +=i
    return result
# print(My_sum2(5))
# print(My_sum2(4,6))
# print(My_sum2(5,10,2))

方法三:

# 使用缺省参数定义形参
def My_sum2(start,stop=None,step=1):
    if stop==None:
        stop = start
        start = 0
    result = 0
    for x in range(start,stop,step):
        result +=x
    return result

# print(My_sum2(5))
# print(My_sum2(4,6))
# print(My_sum2(5,10,2))

方法4:

# 使用缺省参数定义形参(sum函数)
def My_sum4(start,stop=None,step=1):
    if stop==None:
        stop = start
        start = 0
    return sum(range(start,stop,step))

# print(My_sum4(5))
# print(My_sum4(4,6))
# print(My_sum4(5,10,2))

方法5:

def My_sum4(*args):
    return sum(range(*args))

print(My_sum4(5))
print(My_sum4(4,6))
print(My_sum4(5,10,2))

### 使用MATLAB中的Fitness函数进行优化 在MATLAB环境中,`fitness` 函数通常作为遗传算法的一部分被用来评估个体的表现。为了更好地理解和使用 `fitness` 函数,在此提供一个完整的流程说明。 #### 定义适应度函数 适应度函数决定了种群中每个成员的好坏程度。对于最大化问题而言,该值越高越好;而对于最小化问题,则需调整目标函数使其转化为最大值寻找问题[^2]。定义适应度函数时应当注意其输入参数为待评价的变量集合,并返回相应的适应度得分。 ```matlab function f = my_fitness_function(x) % 这里可以放置任何复杂的数学表达式或其他逻辑判断语句 f = -(x.^2 - 10*cos(2*pi*x) + 10); % 假设这是一个需要最优化的目标方程 end ``` #### 设置遗传算法选项并调用GA工具箱 利用MATLAB自带的Global Optimization Toolbox提供的`ga()`命令来进行基于遗传算法的寻优工作。设置好初始种群规模、进化代数以及其他必要的控制参数之后就可以启动搜索过程了。 ```matlab options = optimoptions('ga', 'PopulationSize', 50, ... 'MaxGenerations', 200,... 'CrossoverFraction', 0.8); [x_optimal, fval] = ga(@my_fitness_function, nvars, [],[],[],[], lb, ub,[], options); disp(['Optimized solution:', num2str(x_optimal)]); disp(['Objective value at optimized point:', num2str(fval)]); ``` 其中,`nvars` 表示决策变量的数量;而 `[lb,ub]` 则分别代表这些变量上下限组成的向量。上述代码片段展示了如何配置一些常用的遗传算法定制项,如群体大小(`PopulationSize`)、迭代次数上限(`MaxGenerations`)等。 #### 向量化加速计算性能 当处理大规模数据集或者高维度空间内的优化任务时,考虑采用矩阵运算代替循环结构能够显著提升执行速度。确保适应度函数支持接受整个种群作为一次性输入,并能快速得出所有个体对应的适应度评分[^4]。 ```matlab % 修改后的适应度函数以接收批量样本为例 function F = vectorized_my_fitness_function(X) % X 是 m×d 的矩阵,每行为一条记录 d = size(X, 2); F = sum(-X .^ 2 + 10 * cos(2 * pi * X), 2) + 10*d; end ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值