作业一


求函数的极值

截止时间:2020年10月9日 23:59

参考答案

内容

考虑到可扩展性与性能,大规模计算任务一般采用迭代算法,梯度下降法是一种最简单的迭代算法。

采用梯度下降法求解函数f的极小值

$$f(x,y) = 3(1-x)^2e^{-x^2-(y+1)^2} - 10(\frac{x}{5}-x^3-y^5)e^{-x^2-y^2} - \frac{1}{3}e^{-(x+1)^2-y^2}$$

1
2
% matlab
f=@(x,y)3*(1-x).^2.*exp(-(x.^2) - (y+1).^2)- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2)- 1/3*exp(-(x+1).^2 - y.^2);

注: 这一次作业为摸底性质,请独立完成,好反馈真实的编程能力。

要求

  • 报告中需要说明具体使用的迭代算法
  • 测试不同的几组初值,并返回极小值点(x, y)以及极小值f(x,y)
  • 打印或绘制收敛过程
  • 采用拟牛顿法求解该函数的极小值 (奖励分1)

提交

提交内容

  • 可运行的代码(Matlab或Python)
  • [Optional] 补充材料 – 避免代码不可运行导致的扣分
    • 运行结果
    • 说明文档
    • Python代码以课程指定工具箱及其版本为准,若不然需要附带环境配置说明

提交格式

代码文件仅支持 .m, .mlx, .py, .ipynb

提交方式

  1. 将所有文件打包成zip并以你的学号命名,例如51160601160.zip
  2. 提交到FTP服务器的AI_homework/Graduate/HW1文件夹下
  3. (可选)你可以多次上传,以最后一次上传的结果为准

具体提交方式见作业提交系统

评分

总分 5 = 可执行2 + 正确2 + 代码质量1(主观评价)

  • 代码不可运行时参考补充材料的内容酌情处理
  • 多个代码版本(不超过两个)以正确的为准
  • 奖励分1记录到总的平时成绩中

参考结果

只要能说明算法的迭代过程和结果即可:

1
2
3
初值为(-0.200, -0.500)时的极小值为f(0.228, -1.626)=-6.551
初值为(-0.200, -0.200)时的极小值为f(0.297, 0.318)=-0.065
初值为(-0.500, -0.500)时的极小值为f(-1.347, 0.204)=-3.050