机械优化设计MATLAB程序

合集下载

机械优化设计论文(基于MATLAB工具箱的机械优化设计)

机械优化设计论文(基于MATLAB工具箱的机械优化设计)

基于MATLAB工具箱的机械优化设计长江大学机械工程学院机械11005班刘刚摘要:机械优化设计是一种非常重要的现代设计方法,能从众多的设计方案中找出最佳方案,从而大大提高设计效率和质量。

本文系统介绍了机械优化设计的研究内容及常规数学模型建立的方法,同时本文通过应用实例列举出了MATLAB 在工程上的应用。

关键词:机械优化设计;应用实例;MATLAB工具箱;优化目标优化设计是20世纪60年代随计算机技术发展起来的一门新学科, 是构成和推进现代设计方法产生与发展的重要内容。

机械优化设计是综合性和实用性都很强的理论和技术, 为机械设计提供了一种可靠、高效的科学设计方法, 使设计者由被动地分析、校核进入主动设计, 能节约原材料, 降低成本, 缩短设计周期, 提高设计效率和水平, 提升企业竞争力、经济效益与社会效益。

国内外相关学者和科研人员对优化设计理论方法及其应用研究十分重视, 并开展了大量工作, 其基本理论和求解手段已逐渐成熟。

国内优化设计起步较晚, 但在众多学者和科研人员的不懈努力下, 机械优化设计发展迅猛, 在理论上和工程应用中都取得了很大进步和丰硕成果, 但与国外先进优化技术相比还存在一定差距, 在实际工程中发挥效益的优化设计方案或设计结果所占比例不大。

计算机等辅助设备性能的提高、科技与市场的双重驱动, 使得优化技术在机械设计和制造中的应用得到了长足发展, 遗传算法、神经网络、粒子群法等智能优化方法也在优化设计中得到了成功应用。

目前, 优化设计已成为航空航天、汽车制造等很多行业生产过程的一个必须且至关重要的环节。

一、机械优化设计研究内容概述机械优化设计是一种现代、科学的设计方法, 集思考、绘图、计算、实验于一体, 其结果不仅“可行”, 而且“最优”。

该“最优”是相对的, 随着科技的发展以及设计条件的改变, 最优标准也将发生变化。

优化设计反映了人们对客观世界认识的深化, 要求人们根据事物的客观规律, 在一定的物质基和技术条件下充分发挥人的主观能动性, 得出最优的设计方案。

机械优化设计 matlab插值计算

机械优化设计 matlab插值计算

2)对超定方程组 Rnmam1 yn1 (m n) ,用 a R \ y
可得最小二乘意义下的解。 3)多项式在x处的值y可用以下命令计算: y=polyval(a,x)
23/29
3、 拟合法的Matlab实现
例 对下面一组数据作二次多项式拟合
xi 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 yi -0.447 1.978 3.28 6.15 6.16 7.34 7.66 9.58 9.48 9.30 11.2
方程组(2)也为超定方程组(m<n),故只有最小二乘解
22/29
3、 拟合法的Matlab实现
1)作多项式f(x)=a1xm+ …+amx+am+1拟合,可利用已有程序: a=polyfit(x,y,m)
输出拟合多项式系数 a=[a1, …am , am+1] (数组))
输入同长度 的x,y
多项式次数
插值法:前述内容 曲线拟合法:要构造的函数φ (x):
不要求φ (x)过所有的点消除测量误差的影响 尽可能地反映数据的变化趋势,尽量靠近这些点对 则称φ (x)为拟合公式(函数)、经验公式
如何构造φ (x)? 如何度量φ (x)对各个测量点(基点)的逼近程度
17/29
1、线性拟合
线性拟合:观测测量所得的数据,发现数据点的分布大致呈一 条直线,故可用一条直线来逼近(拟合)测量数据对(x,y)之 间的关系。
缺省时 : 线性插值。
注意:所有的插值方法都要求x是单调的,并且xi不能
够超过x的范围。
3/29
一维插值函数: 例1:
4/29
一维插值函数: 例1:

利用matlab求解机械设计优化问题-螺栓【整理版】

利用matlab求解机械设计优化问题-螺栓【整理版】

利用matlab求解机械设计优化问题-螺栓【整理版】3.机械优化设计应用实例机械优化设计把数学规划理论与数值方法应用于设计中,用计算机从大量可行方案中找出最优化设计方案,从而大大提高设计质量和设计效率。

MATLAB 具有解决线性规划和非线性规划、约束优化和无约束优化问题的内部函数,因而可以完成这一功能。

现举一例:螺栓组联结的优化设计 如图4所示的压力容器螺栓组联接中,已知D 1= 400mm,D 2 =250mm ,缸内工作压力为p=1.5 MPa ,螺栓材料为35号钢,σs =320Mpa,安全系数S=3,取残余预紧力Q ’p =1.6F,采用铜皮石棉密封垫片。

现从安全、可靠、经济的角度来选择螺栓的个数n 和螺栓的直径d 。

3.1 设计问题分析若从经济性考虑,螺栓数量尽量少些、尺寸小些,但这会使降低联结的强度和密封性,不能保证安全可靠的工作;若从安全、可靠度考虑,螺栓数量应多一些、尺寸大一些为好,显然经济性差,甚至造成安装扳手空间过小,操作困难。

为此,该问题的设计思想是:在追求螺栓组联结经济成本最小化的同时,还要保证联结工作安全、可靠。

3 .2 设计变量 目标函数 约束条件3.2 .1 设计变量 选取螺栓的个数n 和直径d(mm)为设计变量:T 21T ]x [x ]d [n X ==3.2 .2 目标函数 追求螺栓组联结经济成本C n 最小为目标。

而当螺栓的长度、材料和加工条件一定时,螺栓的总成本与nd 值成正比,所以本问题优化设计的目标函数为min F(X) = C n = n d = x 1x 2① 强度约束条件 为了保证安全可靠地工作,螺栓组联结必须满足强度条件][32.521σπσ≤=d Qca ; 其中Mpa S s 106.3320][===σσ; n n p n D F F F F Q Q p πππ6093742505.16.246.26.26.1222'=⨯=⨯==+=+=N ; 对于粗牙普通螺纹:由文献[3]推荐,小径 d 1=0.85d 所以,强度约束条件为:0106146192106146192106105624)(2212211≤-=-=-=x x nd nd X g ② 密封约束条件 为了保证密封安全,螺栓间距应小于10d ,所以,密封约束条件为:01040010)(2112≤-=-=x x d n D X g ππ③ 安装扳手空间约束条件 为了保证足够的扳手空间,螺栓间距应大于5d ,所以,安装约束条件为:040055)(1213≤-=-=x x n D d X g ππ ④ 边界约束条件 0)(14≤-=x X g ;0)(25≤-=x X g3.3 .3 建立数学模型综上所述,本问题的数学模型可表达为:设计变量:T 21]x [x X =目标函数:min F(X) = x 1x 2约束条件: s.t. 0)(≤X g i ( i = 1, 2, 3, 4, 5,)现运用MATLAB 的优化函数进行求解 :先编写M 文件function [c,ceq]=mynas(x)c(1)=146192/(x(1)*x(2)^2)-106; % 非线性不等式约束c(2)=400*pi/x(1)-10*x(2);c(3)=-400*pi/x(1)+5*x(2);ceq=[]; % 非线性等式约束在MATLAB 命令窗口输入:fun='x(1)*x(2)'; % 目标函数x0=[4,6]; % 设计变量初始值A=[-1,0;0,-1]; % 线性不等式约束矩阵b=[0;0];Aeq=[]; % 线性等式约束矩阵beq=[];lb=[]; % 边界约束矩阵ub=[];[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,@mynlsub) % 调用有约束优化函数运行结果如下:x = 11.4499 10.9751fval = 125.6637所以,该问题优化结果为:n =11.4499 ,d = 10.9751,目标函数最小值:F(X)= 125.6637。

基于matlab的机械结构仿真程序

基于matlab的机械结构仿真程序

基于matlab的机械结构仿真程序基于Matlab的机械结构仿真程序是一种用于模拟和分析机械系统动态行为的工具。

通过使用Matlab编程语言和Simulink仿真环境,我们可以构建出具有各种结构和运动特性的机械系统,并对其进行仿真和优化。

以下是一个基于Matlab的机械结构仿真程序的探讨:1. 简介在介绍这个仿真程序之前,我们首先明确一下机械结构仿真的定义和意义。

机械结构仿真是指通过建立数学模型和运用仿真技术,对机械系统进行虚拟化,以便通过模拟和分析机械系统的行为,获得系统的性能指标和设计优化。

2. Matlab的仿真环境Matlab是一种强大的科学计算软件,具有丰富的工具箱和编程语言。

Simulink是Matlab的一个附属工具,用于建立、模拟和分析动态系统。

Simulink提供了一个直观的图形化界面,使得机械结构仿真程序的搭建更加便捷。

3. 机械结构建模在进行机械结构仿真前,我们需要首先建立机械系统的数学模型。

这包括建立机械结构的几何模型、物理模型和动力学模型。

通过使用Matlab的数学工具箱,可以方便地表示机械结构的运动学和动力学方程,从而实现仿真程序的搭建。

4. 动力学仿真一旦机械结构的数学模型建立完毕,我们可以使用Matlab的仿真工具对机械系统的动态行为进行仿真。

仿真可以模拟机械结构在不同工况下的运动和响应,例如负载变化、初始条件变化等。

通过对仿真数据的分析,我们可以获得机械系统的性能指标,如速度、加速度、力矩等。

5. 仿真结果分析仿真结果的分析是机械结构仿真程序中非常重要的一环。

通过使用Matlab的数据处理和可视化工具,我们可以对仿真结果进行综合分析。

通过绘制机械系统的运动轨迹图、动力学响应曲线和频谱图,我们可以更直观地理解系统的行为特性,并进一步对机械结构进行优化。

6. 优化设计基于仿真结果的分析,我们可以对机械结构的设计进行优化。

通过改变机械结构的几何参数、材料选择和工艺参数等,可以改善系统的性能和可靠性。

matlab在机械原理中的应用实例

matlab在机械原理中的应用实例

matlab在机械原理中的应用实例在机械原理中,MATLAB是一种常用的计算工具,可以应用于诸多领域,包括机械设计、力学分析、动力学仿真等。

下面将介绍几个MATLAB在机械原理中的应用实例。

1.机构设计与分析MATLAB可以用于机构的设计和分析,例如平面机构、空间机构、曲柄机构等。

它提供了多种机构建模方法,如刚体模型、柔性模型等。

利用MATLAB的强大计算能力和绘图功能,可以进行机构分析和优化。

例如,可以计算机构的运动学性能、动力学性能和静力学性能,并进行动态仿真。

2.动力学仿真MATLAB可以进行各种机械系统的动力学仿真,包括振动系统、运动系统和控制系统。

通过对机械系统建立微分方程或差分方程,利用MATLAB进行数值解求解,并绘制相应的图形,可以得到机械系统的响应。

例如,可以模拟机械系统的自由振动、强迫振动和阻尼振动等。

3.控制系统设计与分析MATLAB在机械原理中的应用还包括控制系统的设计与分析。

通过MATLAB中的控制系统工具箱,可以进行控制系统的模型建立、系统分析和控制器设计。

例如,可以利用MATLAB对机械系统进行稳定性分析、频域分析和时域分析,并设计相应的控制器,实现机械系统的控制。

4.声学分析MATLAB也可以用于机械系统的声学分析。

通过建立机械系统的声学模型,利用MATLAB进行声场分布和声压级分析。

可以计算机械系统的声辐射特性,例如机械振动引起的噪声。

同时,还可以进行声学优化设计,减少机械系统的噪声。

5.优化设计MATLAB在机械原理中广泛应用于优化设计。

通过建立数学模型和定义目标函数,利用MATLAB进行优化计算。

例如,可以利用MATLAB进行机械系统的拓扑优化、形状优化和尺寸优化,实现机械系统的性能优化。

同时,还可以利用MATLAB的优化算法进行参数优化和控制器设计。

综上所述,MATLAB在机械原理中具有广泛的应用,可以应用于机构设计与分析、动力学仿真、控制系统设计与分析、声学分析和优化设计等方面。

机械优化设计MATLAB程序

机械优化设计MATLAB程序

机械优化设计MATLAB程序1.引言本文档旨在提供机械优化设计的MATLAB程序的详细说明。

机械优化设计是通过数学建模和优化算法,对机械结构进行优化设计,以达到设计要求和最佳性能。

MATLAB是一种强大的数学建模和仿真软件,可用于机械优化设计。

2.前期准备2.1 问题定义在机械优化设计中,首先需要明确问题的定义,包括设计要求、约束条件等。

对于每个具体的机械结构,需要明确其目标函数和设计变量。

2.2 建立数学模型在机械优化设计中,需要建立数学模型来描述机械结构的性能和约束条件。

数学模型可以是线性或非线性的,根据具体问题选择适当的模型。

3.优化算法选择根据机械优化设计的特点,选择适合的优化算法进行优化。

常用的优化算法有遗传算法、粒子群优化算法、模拟退火算法等。

4.MATLAB程序设计4.1 数据处理在进行机械优化设计时,需要对输入数据进行处理,包括导入数据、数据清洗和预处理等。

4.2 模型建立根据前期准备中建立的数学模型,使用MATLAB进行模型建立,其中包括目标函数和约束条件的定义。

4.3 优化算法应用根据选择的优化算法,使用MATLAB进行优化算法的应用。

需要注意的是,在应用优化算法之前,需要初始化优化算法的参数。

4.4 结果分析对优化结果进行分析和评估,包括目标函数的值、约束条件的满足程度等。

5.结果展示将优化结果用图表的形式展示出来,直观地描述机械结构的性能和优化效果。

6.结论根据优化结果和分析,对机械优化设计的效果进行总结和评价。

7.附件本文档涉及的附件包括:MATLAB程序代码、数据文件、结果输出文件等。

这些附件可以提供详细的参考和复现。

8.法律名词及注释在本文档中涉及的法律名词及其注释如下:1)版权:指对作品享有的权益,包括复制、发行、展示等权利。

2)专利:指对某种发明或技术的独占权,由国家授予。

3)商标:指用于标识某个商品或服务来源的标识,可以是名称、图形等。

4)知识产权:指人们在创造新的发明、设计、文学艺术作品等过程中所创造的财产权益。

matlab机械优化设计应用实例

matlab机械优化设计应用实例

调用方式一: 在命令窗口中输入: [x,fval]=fminsearch('demfun1',[0,0])
调用方式二: 在命令窗口中输入: [x,fval]=fminsearch(@demfun1,[0,0])
得到的结果 X= 1.0016 0.8335
Fval= -3.3241
约束优化问题 1.线性规划
一维优化问题
一维优化问题的数学模型为:
min f (x) x1 x x2
在matlab中,一维优化问题,也就是一维搜索问题的实现是由函数fminbnd 来实现的。
具体的调用格式如下:
调用格式1:
X= fminbnd(FUN,x1,x2)
这种格式的功能是:返回在区间(x1,x2)中函数FUN最小值对应的X值。
f=[-7;-5]; A=[3,2;4,6;0,7]; b=[90;200;210]; lb=zeros(2,1);
调用linprog函数
[x,fval]=linprog(f,A,b,[],[],lb)
2 一般的约束非线性最优化问题
约束非线性最优化是指目标函数和约束函数都是定义在n维欧 几里得空间上的实值连续函数,并且至少有一个是非线性的。
X=fmincon(fun,x0,A,B,Aeq,Beq,LB,UB,NONLCON)
这个函数格式同上,同时,约束中增加由函数NONLCON定义的非线性约束条件, 在函数NONLCON的返回值中包含非线性等式约束Ceq(X)=0和非线性不等式 C(X)<=0。其中,C(X)和Ceq(X)均为向量。
这种格式的功能是:给定起始点X0,求函数FUN的局 部极小点X。其中,X0可以是一个标量、向量或者矩 阵。
调用格式2: [X,FVAL]=fminsearch (FUN,X0)

机械优化设计MATLAB程序

机械优化设计MATLAB程序

机械优化设计MATLAB程序机械优化设计MATLAB程序引言机械优化设计是现代工程领域中的重要课题,通过采用数值方法和优化算法,可以实现对机械产品设计的自动化和优化。

MATLAB 作为一种功能强大的科学计算软件,为机械优化设计提供了丰富的工具和函数。

本文将介绍如何使用MATLAB编写机械优化设计程序,并讨论如何应用MATLAB进行机械优化设计。

MATLAB的优势与其他科学计算软件相比,MATLAB具有许多优势:1. 丰富的工具箱:MATLAB包含了各种各样的工具箱,涵盖了数值计算、优化、曲线拟合、数据可视化等领域,这些工具箱为机械优化设计提供了强大的支持。

2. 简单易用的编程语言:MATLAB使用的编程语言是一种高级语言,语法简单易懂,对于初学者而言非常友好。

即使没有编程经验,用户也能够快速上手。

3. 丰富的函数库:MATLAB拥有丰富的函数库,用户可以直接调用这些函数来完成各种任务,无需从零开始编写代码。

4. 广泛的应用领域:MATLAB在工程、科学、金融等领域得到了广泛的应用,拥有一个庞大的用户社区。

用户可以通过查看官方文档、参与用户社区等途径获取帮助和支持。

机械优化设计的步骤机械优化设计一般包括以下几个步骤:1. 建立数学模型:首先需要建立机械系统的数学模型,该模型可以基于物理原理或实验数据。

通过建立数学模型,可以将机械系统的性能指标与设计变量进行数学描述。

2. 确定优化目标:根据机械系统的需求和限制条件,确定优化目标。

优化目标可以是多个,如最小化能量损失、最小化材料使用量等。

3. 选择优化算法:基于问题的性质选择合适的优化算法。

常用的优化算法包括遗传算法、粒子群算法、梯度下降算法等。

4. 编写MATLAB代码:根据以上步骤,编写MATLAB代码实现机械优化设计。

MATLAB提供了丰富的工具箱和函数来辅助编写优化算法的代码。

编写机械优化设计MATLAB程序的步骤以下是编写机械优化设计MATLAB程序的一般步骤:1. 导入必要的工具箱和函数库:% 导入优化工具箱import optim.% 导入其他必要的函数库import matlab.2. 建立数学模型:根据机械系统的特点和要求,建立相应的数学模型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

机械优化设计作业1.用二次插值法求函数()()()22ϕ极小值,精度e=0.01。

tt=t1-+在MA TLAB的M文件编辑器中编写的M文件,如下:f=inline('(t+1)*(t-2)^2','t')a=0;b=3;epsilon=0.01;t1=a;f1=f(t1);t3=b;f3=f(t3);t2=0.5*(t1+t3);f2=f(t2);c1=(f3-f1)/(t3-t1);c2=((f2-f1)/(t2-t1)-c1)/(t2-t3);t4=0.5*(t1+t3-c1/c2);f4=f(t4);k=0;while(abs(t4-t2)>=epsilon)if t2<t4if f2>f4f1=f2;t1=t2;t2=t4;f2=f4;elsef3=f4;t3=t4;endelseif f2>f4f3=f2;t3=t2;t2=t4;f2=f4;elsef1=f4;t2=t4;endendc1=(f3-f1)/(t3-t1);c2=((f2-f1)/(t2-t1)-c1)/(t2-t3);t4=0.5*(t1+t3-c1/c2);f4=f(t4);k=k+1;end%输出最优解if f2>f4t=t4;f=f(t4);elset=t2;f=f(t2);endfprintf(1,'迭代计算k=%3.0f\n',k)fprintf(1,'极小点坐标t=%3.0f\n',t)fprintf(1,'函数值f=%3.4f\n',f)运行结果如下:迭代计算k= 7极小点坐标t= 2函数值f=0.00012.用黄金分割法求函数()32321+-=t t t ϕ的极小值,精度e=0.01。

在MA TLAB 的M 文件编辑器中编写的M 文件,如下:f=inline('t^(2/3)-(t^2+1)^(1/3)','t');a=0;b=3;epsilon=0.01;t1=b-0.618*(b-a);f1=f(t1);t2=a+0.618*(b-a);f2=f(t2);k=1;while abs(b-a)>=epsilonif f1<f2b=t2;t2=t1;f2=f1;t1=b-0.618*(b-a);f1=f(t1);elsea=t1;t1=t2;f1=f2;t2=a+0.618*(b-a);f2=f(t2);endt=0.5*(b+a);k=k+1;f0=f(t);endfprintf(1,'迭代次数k=% 3.0f\n',k)fprintf(1,'迭代区间—左端a=%3.4f\n',a)fprintf(1,'试点1坐标值t1=%3.4f\n',t1)fprintf(1,'函数值f1=%3.4f\n',f(t1))fprintf(1,'迭代区间—右端b=%3.4f\n',b)fprintf(1,'试点2坐标值t2=%3.4f\n',t2)fprintf(1,'函数值f2=%3.4f\n',f(t2))fprintf(1,'区间中点t=%3.4f\n',t)fprintf(1,'函数值f0=%3.4f\n',f(t))运行结果如下:迭代次数k= 13迭代区间—左端a=0.0000试点1坐标值t1=0.0036函数值f1=-0.9767迭代区间—右端b=0.0093试点2坐标值t2=0.0058函数值f2=-0.9679区间中点t=0.0047函数值f0=-0.9721由黄金分割法在初始区间[0,3]求得的极小值点为t=0.0047,极小值为-0.9721。

3.用牛顿法、阻尼牛顿法及变尺度法求函数()()()221412122,x x x x x f -+-=的极小点。

(1)在用牛顿法在MATLAB 的M 文件编辑器中编写的M 文件,如下:function [x,fx,k]=niudunfa(x0)syms x1 x2f=(x1-2)^4+(x1-2*x2)^2;fx=0;v=[x1,x2];df=jacobian(f,v);df=df.';G=jacobian(df,v);epson=1e-12;g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=0;p=-G1\g1;x0=x0+p;while(norm(g1)>epson)p=-G1\g1;x0=x0+p;g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=k+1;endx=x0;fx=subs(f,{x1,x2},{x(1,1),x(2,1)});运行结果如下:>> [x,fx,k]=niudunfa([1;1])x =1.99995544760595233814899913778970.99997772380297616907449956889483fx =0.0000000000000000039398907941382470301534502947647k =23(2)用阻尼牛顿法在MA TLAB 的M 文件编辑器中编写的M 文件,如下:function [x,fx,k]=zuniniudunfa(x0)%阻尼牛顿法syms x1 x2f=(x1-2)^4+(x1-2*x2)^2;fx=0;v=[x1,x2];df=jacobian(f,v);df=df.';G=jacobian(df,v);epson=1e-12;%停机原则g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=0;%迭代次数p=-G1\g1;a0=-p'*g1/(p'*G1*p);x0=x0+a0*p;while(norm(a0*p)>epson)p=-G1\g1;a0=-p'*g1/(p'*G1*p);x0=x0+a0*p;g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=k+1;endx=x0;fx=subs(f,{x1,x2},{x0(1,1),x0(2,1)});运行结果如下:>>[x,fx,k]=zuniniudunfa([1;1])x=1.99995544760595233814899913778970.99997772380297616907449956889483fx=0.0000000000000000039398907941382470301534502947647k=23(3)用变尺度法在MATLAB 的M 文件编辑器中编写的M 文件,如下:4.用共轭梯度法求函数()12122212122123,x x x x x x x f --+=的极小点 (1)用共轭梯度法在MA TLAB 的M 文件编辑器中编写的M 文件,如下:function [y,x,k]=CG(A,b,c,x0)%共轭梯度法解minf (x )=0.5*X'*A*X+b'x+ceps=1e-6;%迭代停机原则%fx=0.5*x0'.*A.*x0+b'.*x0+c;r0=A*x0+b;if norm(r0)<=epsx=x0;y=0.5*x'*A*x+b'*x+c;k=0;endp0=-r0;a=-r0'*p0/(p0'*A*p0);x1=x0+a*p0;r1=A*x1+b;k=0;while norm(r1)>epsbeta=(r1'*r1)/(r0'*r0);p1=-r1+beta*p0;alpha=-(r1'*p1)/(p1'*A*p1);x1=x1+alpha*p1;r2=A*x1+b;p0=p1;r0=r1;r1=r2;k=k+1;endx=x1;y=0.5*x'*A*x+b'*x+c;运行结果如下:[y,x,k]=CG([3 -1;-1 1],[-2;0],0,[2;1])y = -1x = 1.00001.0000k = 1(2)用变尺度法在MATLAB的M文件编辑器中编写的M文件,如下:function [x,fx,k]=bianchidufa(A,b,c,x0)%用变尺度法求fx=0.5*x'*A*x+b'*x+c;epson=1e-12;g0=A*x0+b;G0=A;H0=eye(2);k=0;d0=-H0*g0;a0=-d0'*g0/(d0'*G0*d0);s0=a0*d0; %x(k+1)-x(k);y0=A*a0*d0; %g(k+1)-g(k);x1=x0+a0*d0;while (norm(s0)>=epson)switch kcase{10}x0=x1;g0=A*x0+b;H0=eye(2);k=0;d0=-H0*g0;a0=-d0'*g0/(d0'*G0*d0);s0=a0*d0;x1=x0+a0*d0;breakotherwisey0=A*a0*d0;s0=a0*d0;% H1=H0+s0*s0'/(s0'*y0)-H0*y0*y0'*H0/(y0'*H0*y0);H1=H0+((1+y0'*H0*y0/(s0'*y0))*s0*s0'-H0*y0*s0'-s0*y0'*H0)/(s0'*y0); k=k+1;d1=-H1*g1;a1=-d1'*g1/(d1'*G0*d1);a0=a1;d0=d1;H0=H1;s0=a0*d0;x1=x1+a0*d0;breakendendx=x1;fx=0.5*x1'*A*x1+b'*x1+c;运行结果如下:》 [x,fx,k]=bianchidufa([3 -1;-1 1],[-2;0],0,[2;1])H1 =0.4031 0.25780.2578 0.8945fx = -1x =1.00001.0000fx = -1k = 1故函数极小点是点(1,1)5.用鲍威尔法求函数()211222121242,x x x x x x x f --+=的极小点。

相关文档
最新文档