2023年5月17日(软件工程日报)
工程数学
实验二:最速下降法程序设计 一、实验目的 通过最速下降法的程序设计,为今后的约束优化方法的学习和编程奠定基础;掌握负梯度方向的定义和最速下降法的迭代公式;通过此次实验,进一步巩固最速下降法的基本原理和思想。 二、实验内容 1)求解无约束优化问题: (2)终止准则取 ; (3)完成最速下降法(负梯度法)的MATLAB编程、调试; (4)要求选取多个不同的初始点,并给出迭代次数,最优函数值等相关信息,有能力的同学尝试画出最优值随迭代次数变化的曲线图; (5)按照模板撰写实验报告,要求规范整洁。 三、算法步骤、代码、及结果 1. 算法步骤 2. 代码 % 定义目标函数 f = @(x) 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; % 最速下降法求解 % 设定初始点和迭代终止准则 x0_list = [-2, 2; -3, 3; 0.5, -1.5]; % 多个不同的初始点 max_iter = 10000; tol = 1e-5; for i = 1:length(x0_list) x0 = x0_list(i,:); x = x0'; a = 0.01; % 步长 iter = 0; grad_norm = inf; % 初始化为正无穷 while grad_norm > tol && iter < max_iter iter = iter + 1; grad = [400*x(1)^3-400*x(1)*x(2)+2*x(1)-2; 200*(x(2)-x(1)^2)]; x_new = x - a*grad; if f(x_new) < f(x) x = x_new; a = a * 1.1; % 放大步长 else a = a * 0.5; % 缩小步长 end grad_norm = norm(grad); end fprintf('Initial point (%g, %g)\n', x0(1), x0(2)); fprintf('Number of iterations: %d\n', iter); fprintf('Optimal point: (%g, %g)\n', x(1), x(2)); fprintf('Optimal function value: %g\n', f(x)); fprintf('\n'); end 3.结果 Initial point (-2, 2) Number of iterations: 413 Optimal point: (-0.300609, 0.00015509) Optimal function value: 0.0110275 Initial point (-3, 3) Number of iterations: 560 Optimal point: (-0.300585, 0.000152774) Optimal function value: 0.0110275 Initial point (0.5, -1.5) Number of iterations: 87 Optimal point: (1, 1) Optimal function value: 0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南