lyx_812 发表于 2007-12-2 16:10

求中心差商形式的化简

function g=dett(x,r_al,pena,N,N_inequ)
dx=0.0000001;
for i=1:N;
    d_x1=x;
    d_x2=x;
    d_x1(i)=d_x1(i)+dx;
    d_x2(i)=d_x2(i)-dx;
    g(i)=(AL_obj(d_x1,r_al,pena,N_inequ)-AL_obj(d_x2,r_al,pena,N_inequ))/(2*dx);
end
我用中心差商方法对离散函数AL_obj(d_x1,r_al,pena,N_inequ)求梯度,但是AL_obj(d_x1,r_al,pena,N_inequ)函数很大,计算时间比较长,而且上面的程序要多次循环求AL_obj因此很浪费时间,导致后面程序出问题.请院长看一下有没有方法化简程序.尽量避免循环出现.(我看了您关于矢量编程的帖子后仍然没有思路)

eight 发表于 2007-12-2 16:58

原帖由 lyx_812 于 2007-12-2 16:10 发表 http://www.chinavib.com/forum/images/common/back.gif
function g=dett(x,r_al,pena,N,N_inequ)
dx=0.0000001;
for i=1:N;
    d_x1=x;
    d_x2=x;
    d_x1(i)=d_x1(i)+dx;
    d_x2(i)=d_x2(i)-dx;
    g(i)=(AL_obj(d_x1,r_al,pena,N_inequ)-AL_obj(d_x ...

你的程序没有输入参数的说明,根本不知道你的变量是一个标量、一个向量还是一个数组

建议自己找个简单例子练习一下吧
页: [1]
查看完整版本: 求中心差商形式的化简