精华内容
下载资源
问答
  • 共轭梯度法MATLAB程序%conjugate gradient methods%method:FR,PRP,HS,DY,CD,WYL,LS%精确线搜索,梯度终止准则function [ m,k,d,a,X,g1,fv] conjgradme G,b,c,X,e,methodif nargin 6 error '输入参数必须为6' ;...

    共轭梯度法MATLAB程序

    %conjugate gradient methods

    %method:FR,PRP,HS,DY,CD,WYL,LS

    %精确线搜索,梯度终止准则

    function [ m,k,d,a,X,g1,fv] conjgradme G,b,c,X,e,method

    if nargin 6 error '输入参数必须为6' ;

    end

    n length G ;

    if n 2

    format long e %rat

    syms x1 x2

    f 1/2*[x1,x2]*G*[x1;x2]+b'*[x1;x2]+c;

    g [diff f,x1 ;diff f,x2 ];

    g1 subs subs g,x1,X 1,1 ,x2,X 2,1 ;

    d -g1;

    a - d'*g1 / d'*G*d ;% a - X :,1 '*G*d+b'*d / d'*G*d ; a g1 :,1 '*g1 :,1 / d :,1 '*G*d :,1 ;

    X :,2 X :,1 +a*d;

    g1 [g1 subs subs g,x1,X 1,2 ,x2,X 2,2 ];

    m1 norm g1 :,1 ;

    m norm g1 :,2 ;

    i 2;

    k zeros 1 ;

    switch method case 'FR' while m e k i-1 m/m1 ^2; d :,i -g1 :,i +k i-1 *d :,i-1 ; a i - d :,i '*g1 :,i / d :,i '*G*d :,i ; %a1 i - X :,i '*G*d :,i +b'*d :,i / d :,i '*G*d :,i ;a i g1 :,i '*g1 :,i / d :,i '*G*d :,i ; X :,i+1 X :,i +a i *d :,i ; g1 [g1 subs subs g,x1,X 1,i+1 ,x2,X 2,i+1 ]; m1 m; m norm g1 :,i+1 ; i i+1; end case 'PRP' while m e k i-1 g1 :,i '* g1 :,i -g1 :,i-1 / norm g1 :,i-1 ^2; d :,i -g1 :,i +k i-1 *d :,i-1 ; a i - d :,i '*g1 :,i / d :,i '*G*d :,i ; X :,i+1 X :,i +a i *d :,i ; g1 [g1 subs subs g,x1,X 1,i+1 ,x2,X 2,i+1 ]; m norm g1 :,i+1 ; i i+1; end case 'HS' while m e k i-1 g1 :,i '* g1 :,i -g1 :,i-1 / d :,i-1 '* g1 :,i -g1 :,i-1 ; d :,i -g1 :,i +k i-1 *d :,i-1 ; a i - d :,i '*g1 :,i / d :,i '*G*d :,i ; X :,i+1 X :,i +a i *d :,i ; g1 [g1 subs subs g,x1,X 1,i+1 ,x2,X 2,i+1 ]; m norm g1 :,i+1 ; i i+1; end case 'DY' while m e k i-1 g1 :,i '*g1 :,i / d :,i-1 '* g1 :,i -g1 :,i-1 ; d :,i -g1 :,i +k i-1 *d :,i-1 ; a i - d :,i '*g1 :,i / d :,i '*G*d :,i ; X :,i+1 X :,i +a i *d :,i ; g1 [g1 subs subs g,x1,X 1,i+1 ,x2,X 2,i+1 ]; m norm g1 :,i+1 ; i i+1; end case 'LS' while m e k i-1 g1 :,i '* g1 :,i -g1 :,i-1 / d :,i-1 '* -g1 :,i-1 ; d :,i -g1 :,i +k i-1 *d :,i-1 ; a i - d :,i '*g1 :,i / d :,i '*G*d :,i ; %a i - X :,i '*G*d :,i +b'*d :,i / d :,i '*G*d :,i ; X :,i+1 X :,i +a i *d :,i ; g1 [g1 subs subs g,x1,X 1,i+1 ,x2,X 2,i+1 ]; m norm g1 :,i+1 ; i i+1; end

    展开全文
  • 使用MATLAB编程实现共轭梯度法
  • 共轭梯度法相关matlab程序,内含6个小程序
  • 用精确线搜索的共轭梯度法,求问题的极小点
  • 优化方法种BFGS法以及共轭梯度法MATLAB实现,代码均为本人实现,如有需要请自行下载,下载后请运行run.m文件,欢迎讨论。
  • matlab编程实现最优化方法中的共轭梯度法。共享给有用的人。
  • 共轭梯度法matlab程序

    热门讨论 2008-11-27 10:01:34
    采用matlab语言编写,用于求解无约束最优化问题
  • 共轭梯度法matlab程序

    2009-04-14 00:43:10
    共轭梯度法matlab程序 function x = cg(A,b) tol=1e-10; r = b + A*b; w = -r; z = A*w; s = w'*z; t = (r'*w)/s; x = -b + t*w; for k = 1:numel(b); r = r - t*z; if( norm(r) ) return; end B = (r'*z)/s; ...
  • 共轭梯度法中CD(Dixon)法的 MATLAB代码
  • 机械优化设计(哈尔滨工业大学出版)的鲍威尔法,共轭梯度法,惩罚法的matlab程序
  • matlab共轭梯度法

    2020-12-24 20:19:39
    适合初学用matlab编写共轭梯度法
  • 共轭梯度法源代码共轭梯度法程序源代码#include#include#define N 10#define eps pow(10,-6)double f(double x[],double p[],double t){double s;s=pow(x[0]+t*p[0],2)+25*pow(x[1]+t*p[1],2);return s;}/*以下是...

    共轭梯度法源代码

    共轭梯度法程序源代码

    #include

    #include

    #define N 10

    #define eps pow(10,-6)

    double f(double x[],double p[],double t)

    {

    double s;

    s=pow(x[0]+t*p[0],2)+25*pow(x[1]+t*p[1],2);

    return s;

    }

    /*以下是进退法搜索区间源程序*/

    void sb(double *a,double *b,double x[],double p[])

    {

    double t0,t1,t,h,alpha,f0,f1;

    int k=0;

    t0=2.5; /*初始值*/

    h=1; /*初始步长*/

    alpha=2; /*加步系数*/

    f0=f(x,p,t0);

    t1=t0+h;

    f1=f(x,p,t1);

    while(1)

    {

    if(f1

    {

    h=alpha*h; t=t0;

    t0=t1; f0=f1;

    k++;

    }

    else

    {

    if(k==0)

    {h=-h;t=t1;}

    else

    {

    *a=t

    *b=t>t1?t:t1;

    break;

    }

    }

    t1=t0+h;

    f1=f(x,p,t1);

    }

    }

    /*以下是黄金分割法程序源代码*/

    double hjfg(double x[],double p[])

    {

    double beta,t1,t2,t;

    double f1,f2;

    double a=0,b=0;

    double *c,*d;

    c=&a,d=&b;

    sb(c,d,x,p);/*调用进退法搜索区间*/

    printf("\nx1=%lf,x2=%lf,p1=%lf,p2=%lf",x[0],x[1],p[0],p[1]);

    printf("\n[a,b]=[%lf,%lf]",a,b);

    beta=(sqrt(5)-1.0)/2;

    t2=a+beta*(b-a); f2=f(x,p,t2);

    t1=a+b-t2; f1=f(x,p,t1);

    while(1)

    {

    if(fabs(t1-t2)

    break;

    else

    {

    if(f1

    {

    t=(t1+t2)/2;

    b=t2; t2=t1;

    f2=f1; t1=a+b-t2;

    f1=f(x,p,t1);

    }

    else

    {

    a=t1; t1=t2;

    f1=f2;

    t2=a+beta*(b-a);

    f2=f(x,p,t2);

    }

    }

    }

    t=(t1+t2)/2;

    return t;

    }

    /*以下是共轭梯度法程序源代码*/

    void gtd()

    {

    double x[N],g[N],p[N],t=0,f0,mod1=0,mod2=0,nanda=0;

    int i,k,n;

    printf("请输入函数的元数值n=");

    scanf("%d",&n);

    printf("\n请输入初始值:\n");

    for(i=0;i

    scanf("%lf",&x[i]);

    f0=f(x,g,t);

    g[0]=2*x[0]; g[1]=50*x[1];

    mod1=sqrt(pow(g[0],2)+pow(g[1],2));/*求梯度的长度*/

    if(mod1>eps)

    {

    p[0]=-g[0]; p[1]=-g[1]; k=0;

    while(1)

    {

    t=hjfg(x,p);/*调用黄金分割法求t的值*/

    printf("\np1=%lf,p2=%lf,t=%lf",p[0],p[1],t);

    x[0]=x[0]+t*p[0]; x[1]=x[1]+t*p[1];

    g[0]=2*x[0]; g[1]=50*x[1];

    /*printf("\nx1=%lf,x2=%lf,g1=%lf,g2=%lf",x[0],x[1],g[0],g[1]);*/

    mod2=sqrt(pow(g[0],2)+pow(g[1],2)); /*求梯度的长度*/

    if(mod2<=eps) break;

    else

    {

    展开全文
  • matlab实现共轭梯度法求解实例.doc 用MATLAB 实现共轭梯度法求解实例 康福 201103710031 1.无约束优化方法 1.1 无约束优化方法的必要性 一般机械优化设计问题,都是在一定的限制条件下追求某一指标为最小,它 们...

    41528d3028836879cd698677c3999917.gif用matlab实现共轭梯度法求解实例.doc

    用MATLAB 实现共轭梯度法求解实例 康福 201103710031 1.无约束优化方法 1.1 无约束优化方法的必要性 一般机械优化设计问题,都是在一定的限制条件下追求某一指标为最小,它 们都属于约束优化问题。但是为什么要研究无约束优化问题?(1)有些实际问题,其数学模型本身就是一个无约束优化问题。(2)通过熟悉它的解法可以为研究约束优化问题打下良好的基础。(3)约束优化问题的求解可以通过一系列无约束优化方法来达到。所以无约束 优化问题的解法是优化设计方法的基本组成部分,也是优化方法的基础。 (4)对于多维无约束问题来说,古典极值理论中令一阶导数为零,但要求二阶 可微,且要判断海赛矩阵为正定才能求得极小点,这种方法有理论意义, 但无实用价值。和一维问题一样,若多元函数F(X)不可微,亦无法求解。 但古典极值理论是无约束优化方法发展的基础。 1.2共轭梯度法 目前已研究出很多种无约束优化方法,它们的主要不同点在于构造搜索方向 上的差别。 (1)间接法——要使用导数,如梯度法、 (阻尼)牛顿法、变尺度法、共轭梯度 法等。 (2)直接法——不使用导数信息,如坐标轮换法、鲍威尔法单纯形法等。 用直接法寻找极小点时,不必求函数的导数,只要计算目标函数值。这类方 法较适用于解决变量个数较少的(n ≤20)问题,一般情况下比间接法效率低。 间接法除要计算目标函数值外,还要计算目标函数的梯度,有的还要计算其海赛 矩阵。 搜索方向的构成问题乃是无约束优化方法的关键。 共轭梯度法是沿着共轭方向进行搜索,属于共轭方向法中的一种,该方法中 每一个共轭向量都是依赖于迭代点处的负梯度而构造出来。共轭梯度法作为一种 实用的迭代法,它主要有下面的优点: (1)算法中,系数矩阵A的作用仅仅是用来由已知向量P产生向量W=AP,这不仅 可充分利用A的稀疏性,而且对某些提供矩阵A较为困难而由已知向量P产 生向量W=AP又十分方便的应用问题是很有益的。 (2)不需要预先估计任何参数就可以计算,这一点不像SOR等; (3)每次迭代所需的计算,主要是向量之间的运算,便于并行化。 共轭梯度法原理的知识较多,请详见《机械优化设计》第四章的第四、五节。 图1为共轭梯度法的程度框图 1 ( 0,1,2, ) k k k k s k       x x图1为共轭梯度法的程度框图 2.设计题目及要求 2.1设计题目 用共轭梯度法求二次函数 2 2 1 2 1 2 1 1 2 ( , ) 2 4 2 f x x x x x x x    的极小点及极小值。 2.2设计要求 (1)使用matlab编写程序,熟练撑握matlab编程方法。(2)学习并撑握共轭梯度法的原理、方法及应用,并了解不同无约束优化方法的 区别、优缺点及特殊要求。 (3)编写程序,计算出二次函数的极小点及极小值,并适当选取不同的初始点及 迭代精度精度,分析比较结果。 三.计算步骤 3.1计算求解 解:已知初始点[1,1] T迭代精度 0.001   1)第一次沿负梯度方向搜寻 计算初始点处的梯度: 为一维搜索最佳步长,应满足 得:2)第二次迭代代入目标函数 由 得 从而有: 因 收敛。 0 1 2 0 2 1 2 2 4 4 ( ) 4 2 2 x x f x x                    x x 0 1 0 0 0 0 0 1 4 1 4 1 2 1 2                               x x d 1 0 0 2 ( ) min ( ) min(40 20 3) f f           x x d 0 0.25   1 2 0.5        x 1 1 ( ) 2 f           x 2 1 2 0 0 ( ) 5 0.25 20 ( ) f f       x x 1 1 0 0 2 ( ) 1.5 f             d x d 2 1 1 2 2 2 2 0.5 1.5 0.5 1.5                              x x d 2 2 ( ) (2 2 ) 2(0.5 1.5 ) 2(2 2 )(0.5 1.5 ) 4(2 2 ) ( ) f x                  ( ) 0     1   2 2 2 4 0 , ( ) 8, ( ) 2 0 f f                  x x x 2 ( ) 0 f     x3.2运行与程序 运行:打开matlab,确定conjugate_grad_2d.m文件夹为当前目录。在命令窗中输入:f=conjugate_grad_2d([1,1],0.001)选择不同的初始点坐标[0,0],[0,1],[1,0],和迭代精度0.01,0.0001,进 行运行时,需要多次调用conjugate_grad_2d函数。 程序及说明: function f=conjugate_grad_2d(x0,t) %用共轭梯度法求已知函数f(x1,x2)=x1^2+2*x2^2-4*x1-2*x1*x2的极值点 %已知初始点坐标:x0 %已知收敛精度:t %求得已知函数的极值:f x=x0; syms xi yi a; %定义自变量,步长为符号变量 f=xi^2+2*yi^2-4*xi-2*xi*yi; %创建符号表达式f fx=diff(f,xi); %求表达式f对xi的一阶求导 fy=diff(f,yi); %求表达式f对yi的一阶求导 fx=subs(fx,{xi,yi},x0); %代入初始点坐标计算对xi的一阶求导实值 fy=subs(fy,{xi,yi},x0); %代入初始点坐标计算对yi的一阶求导实值 fi=[fx,fy]; %初始点梯度向量 count=0; %搜索次数初始为0 while double(sqrt(fx^2+fy^2))>t %搜索精度不满足已知条件s=-fi; %第一次搜索的方向为负梯度方向if count<=0s=-fi;elses=s1;endx=x+a*s; %进行一次搜索后的点坐标f=subs(f,{xi,yi},x); %构造一元搜索的一元函数φ(a)f1=diff(f); %对函数φ(a)进行求导f1=solve(f1); %得到最佳步长aif f1~=0ai=double(f1); %强制转换数据类型为双精度数值elsebreak %若a=0,则直接跳出循环,此点即为极值点endx=subs(x,a,ai); %得到一次搜索后的点坐标值f=xi^2+2*yi^2-4*xi-2*xi*yi;fxi=diff(f,xi);fyi=diff(f,yi);fxi=subs(fxi,{xi,

    展开全文
  • matlab实现了牛顿差分改进后得到的共轭梯度算法,输入多元函数的系数矩阵,即可求出函数的极值
  • matlab实现共轭梯度法

    2011-06-12 14:09:45
    matlab编程实现最优控制理论中的共轭梯度法程序运行没有错误。
  • Matlab实现FR共轭梯度法

    万次阅读 多人点赞 2015-08-26 00:24:00
    前一段时间学习了无约束最优化方法,今天用Matlab实现了求解无约束最优化问题的FR共轭梯度法。关于共轭梯度法的理论介绍,请参考我的另一篇文章 无约束最优化方法学习笔记。文件testConjungateGradient.m用于测试...

    前一段时间学习了无约束最优化方法,今天用Matlab实现了求解无约束最优化问题的FR共轭梯度法。关于共轭梯度法的理论介绍,请参考我的另一篇文章 无约束最优化方法学习笔记

    文件testConjungateGradient.m用于测试共轭梯度法函数。测试文件需要定义函数 f 和自变量x,给定迭代初值 x0 和允许误差 ϵ 。函数设置了show_detail变量用于控制是否显示每一步的迭代信息。

    % test conjungate gradient method
    % by TomHeaven, hanlin_tan@nudt.edu.cn, 2015.08.25
    
    %% define function and variable
    syms x1 x2;
    %f = xs^2+2*ys^2-2*xs*ys + 2*ys + 2;
    f = (x1-1)^4 + (x1 - x2)^2;
    %f = (1-x1)^2 + 2*(x2 - x1^2)^2;
    x = {x1, x2};
    
    % initial value
    x0 = [0 0];
    % tolerance
    epsilon = 1e-1;
    
    %% call conjungate gradient method
    show_detail = true;
    [bestf, bestx, count] = conjungate_gradient(f, x, x0, epsilon, show_detail);
    % print result
    fprintf('bestx = %s, bestf = %f, count = %d\n', num2str(bestx), bestf, count);

    文件conjungate_gradient.m是共轭梯度法的实现函数。变量nf表示函数 f 的梯度f(梯度的希腊字母是nabla,故用nf)。

    function [fv, bestx, iter_num] = conjungate_gradient(f, x, x0, epsilon, show_detail)
    %% conjungate gradient method
    % by TomHeaven, hanlin_tan@nudt.edu.cn, 2015.08.25
    % Input: 
    %   f - syms function
    %   x - row cell arrow for input syms variables
    %   $x_0$ - init point
    %   epsilon - tolerance
    %   show_detail - a boolean value for wether to print details
    % Output:
    %   fv - minimum f value
    %   bestx - mimimum point
    %   iter_num - iteration count
    
    %% init
    syms lambdas  % suffix s indicates this is a symbol variable
    
    % n is the dimension
    n = length(x);
    
    % compute differential of function f stored in cell nf
    nf = cell(1, n); % using row cells, column cells will result in error
    for i = 1 : n
        nf{i} = diff(f, x{i});
    end
    
    % $\nabla f(x_0)$
    nfv = subs(nf, x, x0);
    % init $\nabla f(x_k)$
    nfv_pre = nfv;
    % init count, k and xv for x value.
    count = 0;
    k = 0;
    xv = x0;
    % initial search direction
    d = - nfv; 
    % show initial info
    if show_detail
        fprintf('Initial:\n');
        fprintf('f = %s, x0 = %s, epsilon = %f\n\n', char(f), num2str(x0), epsilon);
    end
    
    %% loop
    while (norm(nfv) > epsilon)
        %% one-dimensional search
        % define $x_{k+1} = x_{k} + \lambda d$
        xv = xv+lambdas*d;
        % define $\phi$ and do 1-dim search
        phi = subs(f, x, xv);
        nphi = diff(phi); % $\nabla \phi$
        lambda = solve(nphi);
        % get rid of complex and minus solution
        lambda = double(lambda);  
        if length(lambda) > 1
            lambda = lambda(abs(imag(lambda)) < 1e-5);
            lambda = lambda(lambda > 0);
            lambda = lambda(1);
        end
        % if $\lambda$ is too small, stop iteration
        if lambda < 1e-5
            break;
        end
    
        %% update
        % update $x_{k+1} = x_{k} + \lambda d$
        xv = subs(xv, lambdas, lambda); 
        % convert sym to double
        xv = double(xv);
        % compute the differential
        nfv = subs(nf, x, xv);   
        % update counters
        count = count + 1;
        k = k + 1; 
        % compute alpha based on FR formula
        alpha = sumsqr(nfv) / sumsqr(nfv_pre);
    
        % show iteration info
        if show_detail
            fprintf('Iteration: %d\n', count);
            fprintf('x(%d) = %s, lambda = %f\n', count, num2str(xv), lambda);
            fprintf('nf(x) = %s, norm(nf) = %f\n', num2str(double(nfv)), norm(double(nfv)));
            fprintf('d = %s, alpha = %f\n', num2str(double(d)), double(alpha));
            fprintf('\n');
        end
    
        % update conjungate direction
        d = -nfv + alpha * d;
        % save the previous $$\nabla f(x_k)$$
        nfv_pre = nfv;
        % reset the conjungate direction and k if k >= n
        if k >= n
            k = 0;
            d = - nfv;
        end
    end % while
    
    %% output
    fv = double(subs(f, x, xv));
    bestx = double(xv);
    iter_num = count;
    
    end

    运行testConjungateGradient后输出结果如下:

    >> testConjungateGradient
    Initial:
    f = (x1 - x2)^2 + (x1 - 1)^4, x0 = 0  0, epsilon = 0.100000
    
    Iteration: 1
    x(1) = 0.41025           0, lambda = 0.102561
    nf(x) = 1.08e-16    -0.82049, norm(nf) = 0.820491
    d = 4  0, alpha = 0.042075
    
    Iteration: 2
    x(2) = 0.52994     0.58355, lambda = 0.711218
    nf(x) = -0.52265     0.10721, norm(nf) = 0.533528
    d = 0.1683     0.82049, alpha = 0.422831
    
    Iteration: 3
    x(3) = 0.63914     0.56115, lambda = 0.208923
    nf(x) = -0.031994    -0.15597, norm(nf) = 0.159223
    d = 0.52265    -0.10721, alpha = 0.089062
    
    Iteration: 4
    x(4) = 0.76439     0.79465, lambda = 1.594673
    nf(x) = -0.11285    0.060533, norm(nf) = 0.128062
    d = 0.078542     0.14643, alpha = 0.646892
    
    Iteration: 5
    x(5) = 0.79174     0.77998, lambda = 0.242379
    nf(x) = -0.012614   -0.023517, norm(nf) = 0.026686
    d = 0.11285   -0.060533, alpha = 0.043425
    
    bestx = 0.79174     0.77998, bestf = 0.002019, count = 5

    修改允许误差为

    epsilon = 1e-8;

    则可以得到更加精确的结果:

    Iteration: 6
    x(6) = 0.9026      0.9122, lambda = 6.329707
    nf(x) = -0.022884    0.019188, norm(nf) = 0.029864
    d = 0.017515    0.020888, alpha = 1.252319
    
    Iteration: 7
    x(7) = 0.90828     0.90744, lambda = 0.247992
    nf(x) = -0.0014077  -0.0016788, norm(nf) = 0.002191
    d = 0.022884   -0.019188, alpha = 0.005382
    
    Iteration: 8
    x(8) = 0.97476     0.97586, lambda = 43.429293
    nf(x) = -0.0022668   0.0022025, norm(nf) = 0.003161
    d = 0.0015309   0.0015756, alpha = 2.080989
    
    Iteration: 9
    x(9) = 0.97533     0.97531, lambda = 0.249812
    nf(x) = -2.9597e-05 -3.0461e-05, norm(nf) = 0.000042
    d = 0.0022668  -0.0022025, alpha = 0.000181
    
    Iteration: 10
    x(10) = 0.99709     0.99712, lambda = 725.188481
    nf(x) = -5.2106e-05  5.2008e-05, norm(nf) = 0.000074
    d = 3.0006e-05  3.0063e-05, alpha = 3.004594
    
    Iteration: 11
    x(11) = 0.9971      0.9971, lambda = 0.249997
    nf(x) = -4.8571e-08 -4.8663e-08, norm(nf) = 0.000000
    d = 5.2106e-05 -5.2008e-05, alpha = 0.000001
    
    Iteration: 12
    x(12) = 0.99992     0.99992, lambda = 57856.826721
    nf(x) = -9.3751e-08  9.3748e-08, norm(nf) = 0.000000
    d = 4.8616e-08  4.8617e-08, alpha = 3.718503
    
    Iteration: 13
    x(13) = 0.99992     0.99992, lambda = 0.250000
    nf(x) = -1.1858e-12 -1.1855e-12, norm(nf) = 0.000000
    d = 9.3751e-08 -9.3748e-08, alpha = 0.000000
    
    bestx = 0.99992     0.99992, bestf = 0.000000, count = 13

    这与问题的最优解 (1,1)T 已经非常接近了。

    算法实现没有经过大量测试,实际使用可能会有BUG。这里只是用于说明基本实现原理,有兴趣的读者可以在此基础上改进。

    展开全文
  • 最优化——FR共轭梯度法matlab程序

    千次阅读 2012-12-31 15:57:42
    % cg.m function [x, output] = cg(fun, dfun, x0) % fun: character variable, the name of function computing objective function % dfun: character variable, the name of function computing the gradient
  • 解线性方程组的共轭梯度算法的MATLAB程序
  • matlab程序共轭梯度法,研究生计算方法课程专用
  • BF共轭梯度法优化无约束非线性问题,求函数极小值,理论和例子参考《最优化方法》(北京理工大学出版社)(程序为自编!!!请不要下架!!!)。压缩包内含matlab程序文件(直接运行BFCG.m),Word文档算例说明....
  • MATLAB - 共轭梯度法

    千次阅读 多人点赞 2019-10-07 10:25:29
    一、问题描述 求解系数矩阵A是对称正定矩阵的线性方程组或求解二次函数的极... 共轭梯度法,步骤如下: 1 任意给定初始点及精度 2 3 对于,作 1) 2) 3),或 4) 若或,则输出,,取作为的解,否则 ...
  • 共轭梯度法

    2012-05-14 17:14:18
    亲测的matlaB 程序,适合各苦求源码的筒子。共轭梯度法哦,可以适当修改,简洁易懂
  • 计算方法——共轭梯度法求解线性方程组计算方法上机报告计算方法上机报告1 共轭梯度法求解线性方程组1.1 算法原理及程序框图当线性方程组Ax = b 的系数矩阵A 是对称正定矩阵是,可以采用共轭梯度法对该方程组进行...
  • %-------共轭梯度法解线性方程组-----------%---Conjugate Gradient method-------%参考教材《数值分析》李乃成&梅立泉,科学出版社2011clear;clc;% A=[10,-1,-2;-1,10,-2;-1,-1,5];% b=[72,83,42]';A=[2 0 1;0 ...
  • 最速下降法,牛顿法和共轭梯度法,利用matlab程序解决实际问题
  • 法机械优化设计的三种方法: 鲍威尔法、共轭梯度法、阻尼牛顿法 的matlab程序
  • MATLAB实现共轭梯度法求解

    千次阅读 2019-01-11 06:43:31
    MATLAB实现共轭梯度法求解 一.无约束优化方法 1.1 无约束优化方法的必要性 一般机械优化设计问题,都是在一定的限制条件下追求某一指标为最小,它们都属于约束优化问题。但是为什么要研究无约束优化问题? (1)...
  • QR分解+三次样条插值+龙格库塔法+共轭梯度法程序+报告),matlab代码+运行结果+详解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 783
精华内容 313
关键字:

共轭梯度法程序matlab

matlab 订阅