日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

最优化--牛顿法求解多元函数极值例题(python)

發布時間:2023/12/20 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最优化--牛顿法求解多元函数极值例题(python) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 一.問題
    • 二.python代碼
    • 三.結果

一.問題

給定一個函數f(x)=60-10x1-4x2+x12+x22-x1x2,利用牛頓法求解該函數的最小值,需給出中間結果。

二.python代碼

import numpy as np import matplotlib.pyplot as plt#牛頓法求解f = 60-10*x1-4*x2+x1**2+2*x2**2-x1*x2的極值 #原函數 #建立點的列表并關聯起來 X1=np.arange(-50,50,0.1) X2=np.arange(-50,50,0.1) [x1,x2]=np.meshgrid(X1,X2) f = 60-10*x1-4*x2+x1**2+2*x2**2-x1*x2 plt.contour(x1,x2,f,20) # 畫出函數的20條輪廓線#求梯度 def jacobian(x):return np.array([-10+2*x[0]-x[1],-4+2*x[1]-x[0]])#求海森矩陣 def hessian(x):return np.array([[2,-1],[-1,2]])#牛頓法程序 def newton(x0):W=np.zeros((2,10**2))i = 1imax = 100W[:,0] = x0 x = x0delta = 1alpha = 1#迭代條件,當迭代次數不少于100次并且精度大于0.1時進行循環while i<imax and delta>0.1:#將海森矩陣的逆與梯度相乘p = -np.dot(np.linalg.inv(hessian(x)),jacobian(x))x0 = xx = x + alpha*pW[:,i] = xdelta = sum((x-x0))print('第',i,'次迭代結果:')print(x,'\n')i=i+1W=W[:,0:i] # 記錄迭代點return W#初始點 x0 = np.array([-40,40]) W = newton(x0)plt.plot(W[0,:],W[1,:],'g*',W[0,:],W[1,:]) # 畫出迭代點收斂的軌跡 plt.show()

三.結果

總結

以上是生活随笔為你收集整理的最优化--牛顿法求解多元函数极值例题(python)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。