最速下降法和牛顿方法的Python实现和MATLAB实现

算法来源:《数值最优化方法~高立》

算法目的:实现函数的局部最优化寻找,以二元函数为例,展示了最速下降法和牛顿寻优的算法过程

主要Python模块:numpy,sympy

(1)Python实现

(2)MATLAB实现

(3)比较

(1)Python实现

A 最速下降法

# -*- coding: utf-8 -*-
"""
Created on Sat Oct 01 15:01:54 2016
@author: zhangweiguo
"""
import sympy,numpy
import math
import matplotlib.pyplot as pl
from mpl_toolkits.mplot3d import Axes3D as ax3
#最速下降法,二维实验
def SD(x0,G,b,c,N,E):
	f = lambda x: 0.5 * (numpy.dot(numpy.dot(x.T, G), x)) + numpy.dot(b.T, x) + c
	f_d = lambda x: numpy.dot(G, x)+b
	X=x0;Y=[];Y_d=[];
	xx=sympy.symarray('xx',(2,1))
	n = 1
	ee = f_d(x0)
	e=(ee[0]**2+ee[1]**2)**0.5
	Y.append(f(x0)[0,0]);Y_d.append(e)
	a=sympy.Symbol('a',real=True)
	print '第%d次迭代:e=

你可能感兴趣的:(Python)