首页 > 其他分享 >工程数学实验三

工程数学实验三

时间:2024-05-29 11:25:47浏览次数:13  
标签:工程 sym 实验 x3 x2 数学 x0 x1 x4

function [k, x, val] = dampnm(fun, gfun, Hess, x0, epsilon)

% 输入:% fun - 被优化的函数;% gfun - 目标函数的梯度;% Hess - 目标函数的Hessian矩阵;% x0 - 初始点;% epsilon - 收敛阈值;% 输出:% k - 迭代次数;% x - 极值点;% val - 极值点的函数值;

k = 1; % 初始化迭代计数器

gk = feval(gfun, x0); % 计算初始梯度和Hessian矩阵

Gk = feval(Hess, x0);

while norm(gk) > epsilon

    dk = -Gk\gk;               % 求解线性方程组以找到搜索方向

    x0 = x0 + dk;               % 更新点

    gk = feval(gfun, x0);    % 计算新点的梯度和Hessian矩阵

    Gk = feval(Hess, x0);

     

     k = k + 1;    % 迭代计数器递增

     if k > 10000   % 如果迭代次数太多,退出循环

        warning('The method did not converge after 10000 iterations.');

        break;

    end

end

x = x0; % 输出最终迭代结果

val = feval(fun, x0);

end

脚本:

% 使用符号变量定义目标函数、梯度和Hessian矩阵

syms x1 x2 x3 x4;

funf_sym = (x1 + 10*x2)^2 + 5*(x3 - x4)^2 + (x2 - 2*x3)^4 + 10*(x1 - x4)^4;

gradf_sym = gradient(funf_sym, [x1, x2, x3, x4]);

hessf_sym = hessian(funf_sym, [x1, x2, x3, x4]);

 

% 将符号表达式转换为函数句柄,明确设置为接受列向量

funf = matlabFunction(funf_sym, 'Vars', {[x1; x2; x3; x4]});

gradf = matlabFunction(gradf_sym, 'Vars', {[x1; x2; x3; x4]});

hessf = matlabFunction(hessf_sym, 'Vars', {[x1; x2; x3; x4]});

 

% 初始化初始点和精度

x0 = [2; 2; 2; 2]; % 初始点

epsilon = 1e-6;    % 收敛阈值

 

% 调用牛顿法

[k, x_opt, f_opt] = dampnm(funf, gradf, hessf, x0, epsilon);

 

% 输出结果

fprintf('迭代次数: %d\n极值点 x: [%f, %f, %f, %f]\n极值点的函数值: %f\n', ...

        k, x_opt(1), x_opt(2), x_opt(3), x_opt(4), f_opt);

标签:工程,sym,实验,x3,x2,数学,x0,x1,x4
From: https://www.cnblogs.com/yuanxinglan/p/18219799

相关文章

  • 开发-----运维不迷茫,运维工程师转型升级之路
    导言在工作中你是否遇到过困惑和迷茫的时期,总是有解决不完的问题,救不完的火,总在反复单调的做着同样的事情,担心自己会被时代给淹没,会被时代给抛弃,运维这样的工作是不是也能转型升级?下面我们一起看看腾讯应用运维工程师的产品经理转型升级之路吧!其实只要功夫深,铁杵磨成针,工作......
  • 【EI检索稳定 | 东华理工大学机械与电子工程学院协办】2024年数字技术与智慧教育国际
    2024年数字技术与智慧教育国际会议(DTSE2024)将于2024年7月26日在广东省广州市召开,本次会议专注于“数字技术与智慧教育”领域,将汇集全球范围内的学者、研究人员以及教育技术开发者,共同探索和分享该领域内的最新学术成果和技术进展。会议的主要目标是构建一个高质量的学术交流和......
  • IDEA 创建 JavaFX 工程
    JavaFX下载安装1.检查本机JDK版本CMD命令行窗口输入java--version查询JDK版本,如下:C:\Users\Administrator>java--versionjava17.0.92023-10-17LTSJava(TM)SERuntimeEnvironment(build17.0.9+11-LTS-201)JavaHotSpot(TM)64-BitServerVM(build17.0.9+......
  • 【GD32F303红枫派使用手册】第二节 GPIO-流水灯实验
    2.1实验内容通过本实验主要学习以下内容:GPIO结构及原理;GPIO输出功能实现;LED驱动原理。2.2实验原理2.2.1GPIO外设原理GD32F303系列MCU最多可支持112个通用I/O引脚(GPIO),分别为PA0~PA15,PB0~PB15,PC0~PC15,PD0~PD15,PE0~PE15,PF0~PF15和PG0~PG15,各......
  • 【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service
    在使用AppService服务部署业务应用,因为有些第三方的接口需要调用者携带TLS/SSL证书(X509Certificate),在官方文档中介绍了两种方式在代码中使用证书:1)直接使用证书文件路径加载证书2)从系统的证书库中通过指纹加载证书本文中,将分别通过代码来验证以上两种方式. 第一步:使用P......
  • 招聘-杭州-蚂蚁集团Java开发工程师
    【工作内容】1、参与蚂蚁集团通用流程体系建设,负责蚂蚁流程平台,RPA机器人平台,流程智能平台等多个系统的系统设计和分析,能灵活应对业务变化,支持业务快速发展,承担核心功能模块编写,协同各方资源,推动项目进度,保证上线质量。能够用创新的方式,解决领域的技术或业务难题。2、参与团队的......
  • 第十三周实验
    GitHubGitHub是一个面向开源及私有软件项目的托管平台,且只支持Git作为唯一的版本库格式进行托管。提供Git的分布式版本控制,源代码管理,访问控制和多种协作功能,例如错误跟踪、功能请求、任务管理等。功能会自动记录代码的修改,在必要的时候,能够帮助用户快速回退到之前的历史版......
  • 网络工程师---第四十三天
    1、网络地址转换请简述DNS服务器迭代查询与递归的区别?2、请从技术方面简述RAIDO、RAID1、RAID3、RAID5的特点?3、请从层次结构、部署设备和功能配置方面描述层次化的网络结构?4、请简述IPSECVPN和AH和ESP的区别?5、请简述IDS和IPS的区别?6、请简述IPSECVPN传输模式和隧......
  • 数字信号处理实验三:IIR数字滤波器设计及软件实现
    一、实验目的1.掌握MATLAB中进行IIR模拟滤波器的设计的相关函数的应用;2.掌握MATLAB的工具箱中提供的常用IIR数字滤波器的设计函数的应用;3.掌握MATLAB的工具箱中提供的模拟滤波器转数字滤波器的相关的设计函数的应用。二、实验内容本实验为综合性实验项目,要求通过利用MAT......
  • 微服务实践k8s&dapr开发部署实验(3)订阅发布
    自托管模式运行dapr新建订阅webapi项目,取名为backend项目增加docker支持,取消https支持修改Program.csvarbuilder=WebApplication.CreateBuilder(args);builder.Services.AddControllers();builder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen......