首页 > 其他分享 >工程数学

工程数学

时间:2023-05-25 09:55:44浏览次数:31  
标签:opt 工程 iter 数学 fprintf x0 grad norm

function [x_opt, f_opt, iter] = steepest_descent()

    % 定义目标函数
    f = @(x) 100*(x(1)^2 - x(2))^2 + (x(1) - 1)^2;

    % 计算目标函数的梯度
    grad_f = @(x) [400*x(1)*(x(1)^2 - x(2)) + 2*(x(1) - 1); -200*(x(1)^2 - x(2))];

    % 定义终止准则
    epsilon = 1e-5;

    % 设置初始点
    x0_list = [0, 0; -1, 1; 2, -2]; % 可根据需要尝试不同的初始点

    for k = 1:size(x0_list, 1)
        % 初始化变量
        iter = 0;
        x_opt = x0_list(k, :)';
        f_opt = f(x_opt);
        grad_norm = norm(grad_f(x_opt));

        % 最速下降法迭代过程
        while grad_norm >= epsilon
            % 计算搜索方向
            p = -grad_f(x_opt);

            % 更新变量
            alpha = line_search(x_opt, p, f, grad_f);
            x_opt = x_opt + alpha * p;
            f_opt = f(x_opt);
            grad_norm = norm(grad_f(x_opt));

            % 更新迭代次数
            iter = iter + 1;
        end

        % 输出结果
        fprintf('初始点:%s\n', mat2str(x0_list(k, :)));
        fprintf('最优解:%s\n', mat2str(x_opt));
        fprintf('最优值:%f\n', f_opt);
        fprintf('迭代次数:%d\n', iter);
        disp('----------------------');
    end
end

function alpha = line_search(x, p, f, grad_f)
    % 简单的线搜索方法:固定步长
    alpha = 0.01;
end
% 调用最速下降法函数
[x_opt, f_opt, iter] = steepest_descent();
function [x_opt, f_opt, iter] = newton_method()

    % 定义目标函数
    f = @(x) 100*(x(1)^2 - x(2))^2 + (x(1) - 1)^2;

    % 计算目标函数的梯度和Hessian矩阵
    grad_f = @(x) [400*x(1)*(x(1)^2 - x(2)) + 2*(x(1) - 1); -200*(x(1)^2 - x(2))];
    hessian_f = @(x) [1200*x(1)^2 - 400*x(2) + 2, -400*x(1); -400*x(1), 200];

    % 定义终止准则
    epsilon = 1e-5;

    % 设置初始点
    x0_list = [0, 0; -1, 1; 2, -2]; % 与上面的最速下降法使用相同的初始点

    for k = 1:size(x0_list, 1)
        % 初始化变量
        iter = 0;
        x_opt = x0_list(k, :)';
        f_opt = f(x_opt);
        grad_norm = norm(grad_f(x_opt));

        % 牛顿法迭代过程
        while grad_norm >= epsilon
            % 计算搜索方向
            p = -hessian_f(x_opt)\grad_f(x_opt);

            % 更新变量
            x_opt = x_opt + p;
            f_opt = f(x_opt);
            grad_norm = norm(grad_f(x_opt));

            % 更新迭代次数
            iter = iter + 1;
        end

        % 输出结果
        fprintf('初始点:%s\n', mat2str(x0_list(k, :)));
        fprintf('最优解:%s\n', mat2str(x_opt));
        fprintf('最优值:%f\n', f_opt);
        fprintf('迭代次数:%d\n', iter);
        disp('----------------------');
    end
end
% 调用牛顿法函数
[x_opt, f_opt, iter] = newton_method();

 

标签:opt,工程,iter,数学,fprintf,x0,grad,norm
From: https://www.cnblogs.com/psh888/p/17430291.html

相关文章

  • 系统工程(二)系统工程方法
    系统工程方法是对为了以最好实现系统为目的,而对系统的结构、元素、信息、反馈进行分析研究所形成的一系列规则。分类:1、霍尔三维结构,适合组织管理大型工程建设项目   三维:逻辑、时间、知识。(whyhow what,为什么做:解决问题的过程,怎样做:工作进程,需要什么:专业科学知识)逻......
  • 我是如何学习软件工程的
    软件工程是一个庞大且不断演化的领域,涉及许多创新。虽然如此,大多数技术——如果不是全部——在软件工程中往往最终汇聚为几个基本原则。工程师更好地学习软件工程的方法是学习软件工程的基础知识,而不是那些不断变化的框架、语言或平台。即使学习基础知识也需要时间和努力。人们经......
  • 2023.5.24——软件工程站立会议(阶段二)
    站立会议内容:1.整个项目预期的任务量:目前已经花的时间:剩余的时间:2.任务看板照片: 3.团队照片: 4.产品状态:最新做好的功能:正在完成中5.燃尽图:......
  • (大二下)课程总结——软件工程
    1)回顾你的课程计划(第一周的计划),你完成的程度如何?请列出具体数据和实际例子。  1.你在这门课的计划是什么?参考一些学校的教学,你对这个课程有什么期待?你打算怎样度过这个课程?    计划就是尽力跟上建民老师的节奏同时,还能主动学习一些其他知识。我的期待是希望能跟上建民......
  • 2023.5.24——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • 软件工程 期末个人总结
    (1)本学期对第一周提出的计划完成情况。1.基本达到了老师的要求,能够完成老师交给的一个mis系统,完成最基本的增删改查,并把所有的功能都进行流程化。(学生选课管理系统)2.能够实现安卓的开发实现手机端的一个地铁查询系统。(双人团队项目)3.在团队项目中担任队长督促队员完成团队项目,并......
  • 软件工程课程个人总结
    1.关于第一周的计划对于增删改查相对来说比较熟悉,对于测试不那么慌张,从我自身感受来说,无论是上学期的期末还是这学期的开学考试,我整个人都是一个比较慌的状态,就像是高中考数学,明明会做但是因为自己的紧张到处出错,看着一点一点流逝的时间只能更加紧张,但是现在感觉没那么慌张了,或许......
  • 软件工程日报——课程总结
    最近王建民老师给我们布置了一个最新的作业,让我们对软件工程这门课的一学期的学习做一个课程总结。回顾这学期的软件工程的学习,可以说是“历经九九八十一难”,现在想想这“噩梦”般的生活。我确实感觉自己收获了很多。还记得在上半年的这个时候,我专业分流选择了软件工程这个专业,......
  • 使用Maven管理Web工程
    使用命令创建webapp工程:到workdpace运行命令[b][color=red]mvnarchetype:create-DgroupId=com.pandy-DartifactId=MavenDemo-DarchetypeArtifactId=maven-archetype-webapp[/color][/b]使用maven构建web项目实例[url]http://hnzhoujunmei.iteye.com/......
  • solidworks工程图
    代码:OptionExplicitConstTRAININGDIRAsString=_"D:\ApplicationData\SolidWorks\文章\TRN_CDT2315_API2023\SOLIDWORKSTrainingFiles\APIFundamentals"ConstTEMPLATEDIRAsString=_"C:\ProgramData\SolidWorks\SOLIDWORKS2022......