list元素求和_C# lamda =>与 数组 list,简单应用

1、lamda =>委托应用。(1)定义委托类型 mydel(类似定义 int);(2)说明方法的实现内容 ww=x=>{return x*x} (类似定义变量 int a);(3)调用委托 ww(a) ,(类似使用变量a=3)。因为委托可以理解为一种方法的定义和使用,所以要定义方法的类型,说明方法的内容(可能要引入具体简单变量),让后才使用方法。

共有三句:(1) delegate int mydel(int i); 定义类型

(2) mydel ww=x=>{return x*x}; 说明方法

(3)ww(a); 调用

964d5ab46f868468be1409aedcde2418.png

2、lamda在集合中的应用

(1) 数组xx[],的方法select内部可以接收委托。

yy=xx.Select(x=>x+1).ToList。数组xx中每一个元素都实现+1功能。

也可以*1.0 ,或者(double)操作每一个数组元素,进行转换为浮点类型。

而不必邀使用 for或者foreach对每一个元素处理。

mm=xx.Select(x=>x>0).ToList();结果是true和false的数组或者list。

(3)数组还有where查找符合条件的元素,以及求和xx.sum()功能,C#的功能蛮强大的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将这段代码转换为伪代码:def levenberg_marquardt(fun, grad, jacobian, x0, iterations, tol): """ Minimization of scalar function of one or more variables using the Levenberg-Marquardt algorithm. Parameters ---------- fun : function Objective function. grad : function Gradient function of objective function. jacobian :function function of objective function. x0 : numpy.array, size=9 Initial value of the parameters to be estimated. iterations : int Maximum iterations of optimization algorithms. tol : float Tolerance of optimization algorithms. Returns ------- xk : numpy.array, size=9 Parameters wstimated by optimization algorithms. fval : float Objective function value at xk. grad_val : float Gradient value of objective function at xk. grad_log : numpy.array The record of gradient of objective function of each iteration. """ fval = None # y的最小值 grad_val = None # 梯度的最后一次下降的值 x_log = [] # x的迭代值的数组,n*9,9个参数 y_log = [] # y的迭代值的数组,一维 grad_log = [] # 梯度下降的迭代值的数组 x0 = asarray(x0).flatten() if x0.ndim == 0: x0.shape = (1,) # iterations = len(x0) * 200 k = 1 xk = x0 updateJ = 1 lamda = 0.01 old_fval = fun(x0) gfk = grad(x0) gnorm = np.amax(np.abs(gfk)) J = [None] H = [None] while (gnorm &gt; tol) and (k < iterations): if updateJ == 1: x_log = np.append(x_log, xk.T) yk = fun(xk) y_log = np.append(y_log, yk) J = jacobian(x0) H = np.dot(J.T, J) H_lm = H + (lamda * np.eye(9)) gfk = grad(xk) pk = - np.linalg.inv(H_lm).dot(gfk) pk = pk.A.reshape(1, -1)[0] # 二维变一维 xk1 = xk + pk fval = fun(xk1) if fval < old_fval: lamda = lamda / 10 xk = xk1 old_fval = fval updateJ = 1 else: updateJ = 0 lamda = lamda * 10 gnorm = np.amax(np.abs(gfk)) k = k + 1 grad_log = np.append(grad_log, np.linalg.norm(xk - x_log[-1:])) fval = old_fval grad_val = grad_log[-1] return xk, fval, grad_val, x_log, y_log, grad_log
06-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值