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

工程数学实验四

时间:2024-06-13 12:54:37浏览次数:27  
标签:FR 工程 vars max sym 实验 iter 数学 x0

上机实验四:共轭梯度法程序设计

1、基本要求

掌握共轭梯度法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。

2、主要内容

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

(2)终止准则取;

(3)完成FR共轭梯度法的MATLAB编程、调试;

(4)选取几个与实验二实验三中相同的初始点,并给出相关实验结果的对比及分析(从最优解、最优值、收敛速度(迭代次数)等方面进行比较);

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

3、操作要点

(1)通过编程实现FR共轭梯度法;

(2)使用MTALAB调试程序,并将实验结果保存到文件中;

(3)撰写实验报告。

4、主要仪器设备

微机及Matlab软件

 

 

FR:

 

function [x, iter] = FR(func, x0, tol, max_iter)

 

% func - Ŀ�꺯�����ַ�����ʾ���� 'x1^2 + 10*x2^2'

 

% x0 - ��ʼ�㣬������

 

% tol - ����Ҫ���ݶȵ�ģ��

 

% max_iter - ����������

 

 

 

n = length(x0);

 

vars = sym('x', [1 n]); % ��̬�������ű�������

 

 

 

% ����Ŀ�꺯��

 

funf_sym = str2sym(func);

 

 

 

% �����ݶȺ�Hessian����

 

gradf_sym = gradient(funf_sym, vars);

 

hessf_sym = hessian(funf_sym, vars);

 

 

 

% �����ű���ʽת��Ϊ�������

 

funf = matlabFunction(funf_sym, 'Vars', {vars.'});

 

gradf = matlabFunction(gradf_sym, 'Vars', {vars.'});

 

hessf = matlabFunction(hessf_sym, 'Vars', {vars.'});

 

 

 

x = x0;

 

g = gradf(x);

 

d = -g;

 

k = 0;

 

 

 

while norm(g) > tol && k < max_iter

 

% ʹ�� Hessian ���� * d

 

Hd = hessf(x) * d;

 

alpha = -(g' * d) / (d' * Hd);

 

% ���� x

 

x = x + alpha * d;

 

% �����µ��ݶ�

 

g_new = gradf(x);

 

% Fletcher-Reeves ��ʽ

 

beta = (g_new' * g_new) / (g' * g);

 

% ���� d

 

d = -g_new + beta * d;

 

% ���¾ɵ��ݶ�

 

g = g_new;

 

k = k + 1;

 

end

 

 

 

iter = k;

 

 

 

end

 

 

 

FR_run:

 

% ����Ŀ�꺯��

 

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

 

 

 

% ��ʼ��

 

x0 = [2; 2; 2; 2];

 

 

 

% ����

 

tol = 1e-6;

 

 

 

% ����������

 

max_iter = 1000;

 

 

 

% �����Ż�����

 

[x, iter] = FR(func, x0, tol, max_iter);

 

 

 

% ������

 

disp('Optimal solution x:');

 

disp(x);

 

disp(['Number of iterations: ', num2str(iter)]);

 

标签:FR,工程,vars,max,sym,实验,iter,数学,x0
From: https://www.cnblogs.com/yuanxinglan/p/18245677

相关文章

  • Java工程师技术提升汇总【1.1】
    4.6.VIM键盘图第5章网络配置和系统管理操作5.1查看网络IP和网关1)查看虚拟网络编辑器2)修改ip地址5.2配置网络ip地址5.2.1ifconfig配置网络接口ifconfig:networkinterfacesconfiguring网络接口配置1)基本语法:ifconfig(功能描述:显示所有网络接口......
  • 史上最强!华为交换机常用命令大全,网络工程师收藏!
    华为作为全球领先的信息与通信解决方案供应商,其交换机产品在全球市场占据了重要位置。华为交换机以高性能、高可靠性和丰富的功能著称,广泛应用于企业、数据中心、运营商网络等各类环境中。无论是中小企业的局域网,还是大型数据中心的核心网络,华为交换机都能提供灵活、稳定的......
  • 谷歌工程师指责OpenAI阻碍AGI研究进展:推迟了5到10年
    Google母公司Alphabet的一位软件工程师表示,OpenAI阻碍了人工通用智能(AGI)的发展5到10年。在最近的一次播客访谈中,Google软件工程师弗朗索瓦·乔莱特(FrançoisChollet)表达了他对AGI研究现状的担忧。这段对话被发布在了他的YouTube频道上。他表示,OpenAI“凭一己之力改变了......
  • 西电计科嵌入式程序设计课程实验源码
    前言博主是21级计科院的,在此澄清一下部分学长留存的实验经验:实验比较基础,并不像之前所说非常棘手;可以提前准备,但也没太大必要,认真做下午基本就能完全结束;实验三代码需要自己编写,但结构清晰,较为容易;用Qt编写嵌入式GUI程序——加减乘除四则运算器设计头文件#ifndefCAL......
  • CD实验环境
    condacreate-nwind_2021python==3.7(base)C:\Users\bim>condacreate-nwind_2021python==3.7Channels:-defaultsPlatform:win-64Collectingpackagemetadata(repodata.json):doneSolvingenvironment:done##PackagePlan##environmentloc......
  • spring和Mybatis的逆向工程
    目录十二、注解开发1、注解方式单表的增删改查的操作十三、逆向工程13.1、创建逆向工程的步骤⑴添加依赖⑵配置MyBatis的核心配置文件⑶创建逆向工程的配置文件,该文件文件名必须是:generatorConfig.xml13.2测试十四、分页插件14.1、使用步骤14.2分页插件的使用十二、注解开发注......
  • 网y云微专业-大数据开发工程师
    在当今数字化时代,数据已成为企业最宝贵的资产之一。大数据开发工程师作为数据世界的构建者和探索者,正变得越来越重要。网易云微专业推出的“大数据开发工程师”课程,旨在培养具备大数据处理、分析和应用能力的高级技术人才。课程概述//下栽のke:yydsit_come/course/detail/1249......
  • 高效管理JMeter中的Cookies:测试工程师的全面指南
    前言在性能测试和自动化测试中,Cookie管理是一个至关重要的环节。ApacheJMeter提供了强大的Cookie管理器,帮助测试工程师在模拟用户会话和维持状态时更加方便。本指南将详细介绍如何在JMeter中配置和使用Cookie管理器。什么是Cookie及其重要性Cookie是一种由服务器发送并存储在......
  • 工程数学 实验5-MATLAB最优化工具箱的使用
    (1)线性规划应用案例的求解1、基本要求通过一个农业生产计划优化安排的实例求解,培养学生解决实际线性规划问题的初步能力;熟悉线性规划的建模过程;掌握Matlab优化工具箱中线性规划函数的调用。2、主要内容某村计划在100公顷的土地上种植a、b、c三种农作物。可以提供的劳力、粪肥和......
  • 【申报】苏州市工程技术研究中心需要准备什么材料?
    苏州市工程技术研究中心的建设和认定是一个系统性工程,旨在通过工程技术研究、试验和成套技术服务,为企业提供成熟配套的技术、工艺、装备和产品,促进成果转化和技术辐射。为了顺利申报和认定,相关企业需要准备一系列详细的材料和文件,以确保其符合苏州市的要求和标准。苏州市工程......