首页 > 其他分享 >工程数学 上机实验 (二)

工程数学 上机实验 (二)

时间:2023-05-15 11:25:59浏览次数:36  
标签:上机 point iter 实验 数学 Optimal x0 grad 最速

上机实验二:最速下降法程序设计

1、基本要求

通过最速下降法的程序设计,为今后的约束优化方法的学习和编程奠定基础;掌握负梯度方向的定义和最速下降法的迭代;通过此次实验,进一步巩固最速下降法的基本原理和思想。

2、主要内容

(1)求解无约束优化问题

(2)终止准则取;

(3)完成最速下降法(负梯度法)的MATLAB编程、调试;

(4)要求选取多个不同的初始点,并给出迭代次数,最优函数值等相关信息,有能力的同学尝试画出最优值随迭代次数变化的曲线图;

(5)按照模板撰写实验报告,要求规范整洁。

3、操作要点

(1)最速下降法Matlab的实现;

(2)学会分析实验结果;

(3)撰写实验报告;

4、主要仪器设备

微机及Matlab软件

 

 

% 定义目标函数
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

运行结果:

MinHJ
Initial point (-2, 2)
Number of iterations: 10000
Optimal point: (1.02229, 1.04527)
Optimal function value: 0.000500858

Initial point (-3, 3)
Number of iterations: 10000
Optimal point: (1.07711, 1.16049)
Optimal function value: 0.00595669

Initial point (0.5, -1.5)
Number of iterations: 10000
Optimal point: (0.999932, 0.999864)
Optimal function value: 4.58761e-09

 

标签:上机,point,iter,实验,数学,Optimal,x0,grad,最速
From: https://www.cnblogs.com/tianminggeng/p/17401304.html

相关文章

  • 工程数学上机实验(四)
    共轭梯度法程序设计1、实验目的掌握共轭梯度法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。2、实验内容(1)求解无约束优化问题;(2)终止准则取,搜索方法采用非精确搜索Armijo;(3)完成FR共轭梯度法的MATLAB编程、......
  • 软件构造实验一
    任务一:幻方幻方是一个行和、列和、对角线和均相等的方阵。要求一是编写一个程序读入文本文件,判断是否为幻方。publicstaticbooleanisLegalMagicSquare(StringfileName)throwsFileNotFoundException{FileReaderf=newFileReader(fileName);Scannerin=newSca......
  • MSTP-VRRP-DHCP-OSPF-BFD实验(二)
    所有交换机需启用MSTP服务[JR_SW7]stpregion-configuration[JR_SW7-mst-region]region-nameaa[JR_SW7-mst-region]revision-level1[JR_SW7-mst-region]instance1vlan23200[JR_SW7-mst-region]instance2vlan456[JR_SW7-mst-region]activeregion-configuration......
  • 电机控制器,BLDC无刷直流电机Simulink模型(数学方法搭建) 版本:m
    电机控制器,BLDC无刷直流电机Simulink模型(数学方法搭建)版本:marlab2018a,可生成低版本包括:模型,设计文档,电机参数m文件仿真时在第三秒加入3Nm的负载,图中为模型和仿真结果(输出扭矩,转速,转子位置,机械角度)模型优点:纯数学方法搭建,可生成代码刷进控制器做SIL测试(simscape搭建的模型无法生......
  • 首先阐述了光伏电池的工作原理及其数学模型,根据数学模型在 MATLAB仿真软件中搭建了光
    首先阐述了光伏电池的工作原理及其数学模型,根据数学模型在MATLAB仿真软件中搭建了光伏电池的工程通用仿真模型。同时,根据生产厂家提供的参数,分析了光伏电池的输出特性曲线,研究了光照强度和环境温度对光伏电池的影响。其次介绍了?mppt?控制算法的工作原理,比较了4种常用控制算法......
  • IIR卡尔曼滤波器:使用IIR滤波器(使用二阶形式的陷波滤波器)和非时不变卡尔曼滤波器进行实
    IIR卡尔曼滤波器:使用IIR滤波器(使用二阶形式的陷波滤波器)和非时不变卡尔曼滤波器进行实验ID:92200672832644749......
  • pta python实验3-6
    python实验4循环结构 1importmath23defestimate_pi(n):4total=05ret=06foriinrange(n+1):7ifi%2==0:8sign=19else:10sign=-111term=sign/((2*i+1)*mat......
  • 基于EKF滤波的二阶RC电池模型的Soc估计仿真,附带实验数据(MATLAB仿真)
    基于EKF滤波的二阶RC电池模型的Soc估计仿真,附带实验数据(MATLAB仿真)ID:92200669861200737......
  • 20.马克思手稿中的数学题
       #include<stdio.h>intmain(){intx,y,z,number=0;printf("MenWomenChildren\n");for(x=0;x<=10;x++){y=20-2*x;z=30-x-y;if(3*x+2*y+z==50)printf("%2d:%4d%5d%6d\n",++number,x,y,z);}return0;}......
  • 2.10 马克思手稿中的数学题
    马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,他们在同一家饭馆吃饭,总共花了50先令。已知每个男人吃饭需要花3先令,每个女人吃饭需要花2先令,每个小孩吃饭需要花1先令,请编程求出男人、女人和小孩各有几人。解答#include<stdio.h>intmain(){intx,y,z,n......