资源简介
用matlab编程实现最优控制理论中的共轭梯度法。程序运行没有错误。
代码片段和文件信息
format long;
flag=1;
n=2;
X0=[2;2]%设定x初值为(22)
while flag==1
syms x1 x2 rr
%f=100*(x2-x1^2)^2+(1-x1)^2
f=x1^2+2*x2^2-4*x1-2*x1*x2
%f=(x1-1)^4+x2^2
%f=2*x1^2+x2^2-4*x1+2
df(11)=diff(fx1) %取函数的梯度(df(11)df(21))
df(21)=diff(fx2)
gg1=gradient(X0df) %将求得的梯度向量值存入gg1中
ex1=sqrt(gg1(11)^2+gg1(21)^2) %求得梯度下降模值存入变量ex1
ss1=-gg1
k=0 %迭代次数
while 1
syms x1 x2 rr
x1=X0(11)+rr*ss1(11) %将x1x2变为一维搜索极小点变量rr的函数
x2=X0(21)+rr*ss1(21)
flamda=eval(f) %求得rr的函数,便于进行一维搜索
rr=partition(flamda) %用黄金分割法求得精确以为搜索的rr值
X0(11)=eval(x1) %重新给变量x1x2赋值,以便进行下一次循环;
X0(21)=eval(x2)
x1=X0(11)
x2=X0(21)
eval(f)
f
gg2=gradient(X0df) %将求得的梯度向量值存入gg2中
ex2=sqrt(gg2(11)^2+gg2(21)^2) %求得梯度下降模值存入变量ex2
if ex2<1e-4
disp(‘x*=‘)
disp(X0)
disp(‘函数最优解为:f=‘)
disp(eval(f))
flag=0;
break;
end
if k u=ex2^2/(ex1^2)
ss2=-gg2+u*ss1
ss1=ss2
gg1=gg2
ex1=ex2
k=k+1
elseif k==n-1
break;
end
end
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1216 2010-12-27 23:03 共轭梯度法\conjugategradient.m
文件 118 2010-12-26 13:15 共轭梯度法\gradient.m
文件 914 2010-12-27 23:01 共轭梯度法\partition.m
文件 2338 2010-12-27 23:23 共轭梯度法\共轭梯度法.txt
目录 0 2011-06-12 13:45 共轭梯度法
----------- --------- ---------- ----- ----
4586 5
- 上一篇:短路支节匹配Matlab实现
- 下一篇:matlab实现梯度法
相关资源
- matlab实现梯度法
- 短路支节匹配Matlab实现
- MATLAB处理医学图像
- 自适应粒子群算法
- 模糊合成运算的matlab程序
- matlab 高斯牛顿迭代求最小二乘问题
- 直方图均衡化代码matlab
- 加权无标度网络边权演化bbv模型的m
- MATLAB禁忌搜索算法求解TSP问题
- 改进欧拉法matlab程序
- MATLAB图形与动画制作源程序集200经典
- Mackay构造LDPC码程序 matlab
- 基于dct的图像压缩解压缩
- 室内定位三种经典算法Fang、Taylor、
- EasyKrig 3.0.1 兼容Matlab2012a
- 非线性最小二乘优化问题matlab工具箱
- FDTD算法的Matlab源程序
- 图像PSNR及其计算matlab实现
- 模式识别的几个经典分类器,附matl
- matlab牛拉法潮流计算程序
- 单点定位MATLAB程序源码
- matlab数字增量式pid简单程序
- 机械臂轨迹规划
- 用于对比试验的局部放大图中图matl
- F5隐写算法matab源代码
- 太阳能光伏发电系统MATLAB建模
- MATLAB实现图像找茬程序
- 虹膜识别 Matlab
- 用matlab实现去除图像噪声
- 点目标距离多普勒算法仿真
评论
共有 条评论