阻尼牛顿法
更新时间:2023-11-23 06:44:01 阅读量: 教育文库 文档下载
阻尼牛顿法求解二维函数极小值的程序说明
一 题目
22利用阻尼牛顿法求函数f(x1,x2)?的极小值点(迭代两次,一(x1?2)?(x1?2x2)维搜索任选一种方法)。
二 阻尼牛顿法基本思想:
1) 给定初始点x0,收敛精度?,置k?0。
2) 计算?f(xk)、 ?2f(xk)、(?2f(xk))?1和dk??(?2f(xk))?1?f(xk) 3) 求xk?1?xk??kdk,其中?k为沿d进行一维搜索的最佳步长。
k?1k4) 检查收敛精度。若xn?x??,则x*?xk?1,停机;否则置k?k?1,返回步骤2,
k继续进行进行搜索。
改进后的阻尼牛顿法程序框图如下:
开始给定x0,?k?02kkd???f(x)?1?f(xk)xk?1?xk??kdkk?k?1?k:minf(xk??dk)?是k?1xn?xk???否x*?xk?1结束
三 用阻尼牛顿法求函数
程序如下:
// 阻尼牛顿法 .cpp : Defines the entry point for the console application. //
#include
double fun1(double q1,double q2) {
return(pow((q1-2),4)+pow((q1-2*q2),2)); //修改函数f(x1,x2)=(x1-2)*(x1-2)*(x1-2)*(x1-2)+(x1-2*x2)*(x1-2*x2) }
double fun2(double g,double x,double y,double r1,double r2) {
return (pow((x+g*y-2),4)+pow((x+g*y-2*(r1+g*r2)),2));//关于阻尼因子的函数 }
void main() {
double A[2][1],B[2][2],C[2][1],D[2][1],X[2][1];
double E[2][1]={4,3};//迭代的初始点x0 int t=0,i=0,j=0;
double E0,x1,x2,x3,h(0.1); double y1,y2,y3,m;
double a,b,k=0.618,a1,a2,f1,f2;
printf(\输入收敛精度:\输入标准收敛精度 std::cin>>E0; do {
D[0][0]=E[0][0]; D[1][0]=E[1][0];
A[0][0]=4*(D[0][0]-2)*(D[0][0]-2)*(D[0][0]-2)+2*D[0][0]-4*D[1][0];
A[1][0]=-4*(D[0][0]-2*D[1][0]);//A[0][0],A[1][0]为原函数梯度的各项 B[0][0]=1.0/(12.0*(D[0][0]-2)*(D[0][0]-2)); B[0][1]=1.0/(24.0*(D[0][0]-2)*(D[0][0]-2)); B[1][0]=1.0/(24.0*(D[0][0]-2)*(D[0][0]-2));
B[1][1]=(6.0*(D[0][0]-2)*(D[0][0]-2)+1)/(48.0*(D[0][0]-2)*(D[0][0]-2));//B[0][0],B[0][1],B[1][0],B[1][1]分别代表原函数的海赛矩阵的逆阵的各项 C[0][0]=-(B[0][0]*A[0][0]+B[0][1]*A[1][0]);
C[1][0]=-(B[1][0]*A[0][0]+B[1][1]*A[1][0]);//C[0][0],C[1][0]为搜索方向dk的各项 //下面利用外推法寻找函数2的区间,找单谷区间 x1=0; x2=x1+h;
y1=fun2(x1,D[0][0],C[0][0],D[1][0],C[1][0]); y2=fun2(x2,D[0][0],C[0][0],D[1][0],C[1][0]); if(y2>y1) {
h=-h;
x3=x1,y3=y1; x1=x2,y1=y2; x2=x3,y2=y3; }
x3=x2+h;
y3=fun2(x3,D[0][0],C[0][0],D[1][0],C[1][0]); while(y3 h=2*h; x1=x2,y1=y2; x2=x3,y2=y3; x3=x2+h; y3=fun2(x3,D[0][0],C[0][0],D[1][0],C[1][0]); i++; } //下面利用黄金分割法寻找函数2极值 a=x1; b=x3; a1=b-k*(b-a); a2=a+k*(b-a); f1=fun2(a1,D[0][0],C[0][0],D[1][0],C[1][0]); f2=fun2(a2,D[0][0],C[0][0],D[1][0],C[1][0]); do { if(f1>=f2) { a=a1; a1=a2; f1=f2; a2=a+k*(b-a); f2=fun2(a2,D[0][0],C[0][0],D[1][0],C[1][0]); } else { b=a2; a2=a1; f2=f1; a1=b-k*(b-a); f1=fun2(a1,D[0][0],C[0][0],D[1][0],C[1][0]); } j++; }while(fabs((b-a)/b)>=E0&&fabs((f2-f1)/f2)>=E0); m=0.5*(a+b);//m为阻尼因子 E[0][0]=D[0][0]+m*C[0][0]; E[1][0]=D[1][0]+m*C[1][0]; printf(\ t++; }while(fabs(E[0][0]-D[0][0])>=E0&&fabs(E[1][0]-D[1][0])>=E0); X[0][0]=E[0][0]; X[1][0]=E[1][0]; printf(\迭代了%d次\\n\ printf(\极小点(x1,x2)=(?0,?0)\\n\ printf(\极小值f(x1,x2)=?0\\n\} 程序运行结果: 四 结论 由该程序的运行结果可知,要求迭代两次后函数的极小值点在(2.52939210,1.46320410)处,经验证,运算结果完全正确。验证了该程序的可行性。
正在阅读:
阻尼牛顿法11-23
怀孕早期白带有哪些变化?05-10
18年开放大学英语第一次作业参考答案11-18
对非物质文化遗产传承人生存环境的思考04-17
《西方管理理论研究》复习资料(参考3)05-09
小学英语论文:对小组合作学习在小学英语教学中所出现问题的反思06-20
网络媒体环境下的高校公寓文化建设策略03-03
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 阻尼
- 牛顿法
- 甘肃省高校科技进步奖获奖成果名单
- Excel VBA实例教程#032:删除工作表的重复行
- 6年级小升初必背单词 -
- 曼昆《经济学原理(宏观经济学分册)》(第6版)课后习题详解(第32章 开放经济的宏观经济理论)
- 2018党支部制度汇编(精编32页)
- 13、辅机2008题库第十三章
- 中国华电集团公司电力设备可靠性管理办法
- 粤语字读音
- 软件工程实用教程2版课后答案
- 历史趣谈:盘点酷吏的下场:历朝历代的酷吏都难以善终
- 英国文学期末复习 -
- 实验参考答案
- 住院部奖金二次分配方案
- 2016.4财务管理真题及答案
- 中共郴州市委办公室、郴州市人民政府办公室关于印发郴州市党政
- 梁的刚度计算
- 最新卫生资格肿瘤放射治疗技术考试题无忧 - 资料全整下载
- 浙江省第一、二、三批特色小镇名单及两次考核结果
- 医疗器械洁净室(区)检查要点指南(2013版)
- 2016年浙江省高职单招单考《农艺类》试卷