Matlab程序——修正鲍威尔Powell法
%函数文件
function y=fun(x1,x2)
y=2*x1^2+x2^2-x1*x2;
%Powell主程序
clear;clc;
x0=[2 2];
xk=x0;
ideal_error=10^(-4);
actural_error=1;
d1=[1 0];
d2=[0 1];
k=1;
MaxLoopNum=20;
while(actural_error>ideal_error&&MaxLoopNum>k)%沿d1方向进行一维搜索syms a1 x1 x2;xk1=xk+a1*d1;x1=xk1(1);x2=xk1(2);fun1=fun(x1,x2);fxa=diff(fun1,'a1')==0;a1=solve(fxa,'a1');%计算中间点xk1=xk+a1*d1;%沿d2方向进行一维搜索syms a2 x1 x2;xk2=xk1+a2*d2;x1=xk2(1);x2=xk2(2);fun1=fun(x1,x2);fxa=diff(fun1,'a2')==0;a2=solve(fxa,'a2');%计算终点xk2=xk1+a2*d2;%计算映射点x3=2*xk2-xk;%计算实际收敛精度xkerror=eval(x3-xk);actural_error=norm(xkerror);%输出迭代数据fprintf('第%d次迭代结果如下:\n',k)fprintf('起始点:x%d0=[%f %f]\n',k,xk(1),xk(2))fprintf('中间点:x%d1=[%f %f]\n',k,xk1(1),xk1(2))fprintf('终点:x%d2=[%f %f]\n',k,xk2(1),xk2(2))fprintf('映射点:x%d3=[%f %f]\n',k,x3(1),x3(2))fprintf('第一个步长:a%d1=%f\n',k,a1)fprintf('第二个步长:a%d2=%f\n',k,a2)fprintf('第一个方向:d%d1=[%f %f]\n',k,d1(1),d1(2))fprintf('第二个方向:d%d2=[%f %f]\n',k,d2(1),d2(2))fprintf('实际收敛精度:%f\n',actural_error)%求出起始点,中间点,终点,映射点处的函数值syms x1 x2;fun1=fun(x1,x2);fun1=inline(fun1);f0=feval(fun1,xk(1),xk(2));f1=feval(fun1,xk1(1),xk1(2));f2=feval(fun1,xk2(1),xk2(2));f3=feval(fun1,x3(1),x3(2));%确定函数值下降最多的方向Inc(1)=f0-f1;Inc(2)=f1-f2;[Incm,column]=max(Inc);%判断是否更换搜索方向F1=f0;F2=f2;F3=f3;temp1=(F1-2*F2+F3)*(F1-F2-Incm)^2;temp2=0.5*Incm*(F1-F3)^2;if(Inc(1)>Inc(2)&&F3<F1&&temp1<temp2) d1=d2;d2=xk2-xk;xk=x3;elseif(Inc(1)<Inc(2)&&F3<F1&&temp1<temp2)d2=xk2-xk;xk=x3;elsexk=xk2;endk=k+1;
end
Matlab程序——修正鲍威尔Powell法相关推荐
- 鲍威尔方法c语言程序,鲍威尔法编程-powell法编程-c语言编程-c++6.0.doc
鲍威尔法编程-powell法编程-c语言编程-c++6.0.doc include stdio.hdefine N 2float gsfloat zNfloat f;f10*z0z1-5*z0z1-5 ...
- 鲍威尔c 语言程序,鲍威尔法编程-powell法编程 c语言编程 c++6.0
fafu js 优化 #include #define N 2 float gs(float z[N]) { float f; //f=10*(z[0]+z[1]-5)*(z[0]+z[1]-5)+( ...
- anp的matlab程序实现,ANP 网络分析法(ANP)作为一种决策过程 联合开发网 - pudn.com
ANP 所属分类:matlab例程 开发工具:matlab 文件大小:5KB 下载次数:30 上传日期:2018-10-18 16:51:49 上 传 者:xiji 说明: 网络分析法(ANP)作为 ...
- 牛顿-拉普森法求解线性方程组原理及matlab程序
牛顿-拉普森法求解线性方程组原理及matlab程序 牛顿-拉普森法原理 Nowton-Raphson方法matlab程序? 牛顿-拉普森法原理 在多变量微积分和矩阵理论的交叉点是求解非线性代数方程 ...
- matlabff2函数_罚函数法MATLAB程序.doc
罚函数法MATLAB程序 一.进退法.0.618法.Powell法.罚函数法的Matlab程序设计罚函数法(通用)function y ff x,k y -17.86*0.42*x 1 / 0.8+0 ...
- 用POWELL法求极小值:Rosenbrock函数
函数: 一.题目分析: 在数学最优化中,Rosenbrock 函数是一个用来测试最优化算法性能的非凸函数,由 Howard Harry Rosenbrock 在 1960 年提出 .也称为 Rosen ...
- matlab欧拉法程序,欧拉法matlab程序.doc
欧拉法matlab程序.doc 1.Euler法function[x,y]=naeuler(dyfun,xspan,y0,h)x=xspan(1):h:xspan(2);y(1)=y0;forn=1: ...
- 用matlab计算潮流牛拉法,matlab潮流计算
<matlab潮流计算>由会员分享,可在线阅读,更多相关<matlab潮流计算(14页珍藏版)>请在人人文库网上搜索. 1.附录 1使用牛顿拉夫逊法进行潮流计算的Matlab ...
- 鲍威尔法源程序码matlab,鲍威尔算法matlab程序f.doc
鲍威尔算法matlab程序f.doc functionf=fun(x)f=10*(x(1)+x(2)-5)^2+(x(1)-x(2))^2;functionf=fx(x0,alpha,s)x1=x0+ ...
- matlab dfp法,DFP算法及Matlab程序(最新整理)
<DFP算法及Matlab程序(最新整理)>由会员分享,可在线阅读,更多相关<DFP算法及Matlab程序(最新整理)(7页珍藏版)>请在人人文库网上搜索. 1.作 业 二用 ...
最新文章
- Java 内部类及其原理
- python zen_Python的宗旨(Zen of Python)
- Android如何把 内容复制到剪贴板
- api可以主动采集用户数据吗_现在的前端框架全是通过API获得数据,如何记录用户登录状态?...
- Spring Boot(一)—— Spring Boot 入门
- CodeForces - 1538G Gift Set(二分)
- 讲讲 group by 的plus版
- getContentResolver().query()方法selection参数使用详解(转)
- C# 9 Lambda 小幅升级
- 20160828_第4周周报
- 运算符优先级与结合性
- 备战520|Python花式表白的几种姿势
- ComboBox信息读取
- Linux基于升序链表的定时器
- 指数分布的极大似然估计
- QT入门学习(一):什么是QT
- python里创建数据库表Column常用参数总结
- 三阶魔方CFOP还原方法图解
- 正大国际期货:什么是黄金保证金交易?黄金保证金交易包含哪些要点?
- SemanticKITTI 数据集(ICCV 2019)
热门文章
- Office 2010 新特性 (二) Word 2010
- 图像处理中调用matlab自带均值滤波、高斯滤波和中值滤波函数的案例以及自编均值滤波的案例。
- 海外服务器IP为什么被封以及解决方案
- 关于人工智能不会使大脑变懒惰的议论文_模拟人类大脑 :人工智能的救赎之路 ?...
- c语言源程序最多可能由组成,一个c语言源程序是由什么组成_后端开发
- JAVA开发的人力资源管理系统
- (附源码)计算机毕业设计SSM旅游网站设计
- Java移位运算符原来这么简单
- Android 键盘映射
- 修改jar包中的配置文件