【问题标题】:Matlab minimize norm to find coefficients using fminsearchMatlab 最小化范数以使用 fminsearch 查找系数
【发布时间】:2014-10-30 15:44:09
【问题描述】:

我正在尝试使用最小化来计算多项式p(x) = 1 + c(1)x + c(2)x^2 的系数以近似e^x。我需要在[1,n] 上对自然数i 使用点xi = 1 + i/n,首先是n=5,然后是n=10,等等。方法是最小化12inf norm(p(x) - e^x)使用 fminsearch。所以输出应该是 3 个p(x) 的 2 个系数。任何建议表示赞赏。

【问题讨论】:

  • 您自己尝试过吗?发生了什么?
  • @David 是的,我终于想通了。

标签: matlab minimization norm fminsearch


【解决方案1】:

好吧,如果有人想知道,我确实终于解决了这个问题。

for l = [1 2 inf]
    fprintf('For norm %d\n', l)
    fprintf('Coefficients   c1        c2\n')
    for n = [5 10 100]
        i = 1:n ;
        x = 1 + i/n ;
        c = [1 1] ;

        %Difference function that we want to minimize
        g = @(c) x.*c(1) + x.^2.*c(2) + 1 - exp(x);
        f_norm = @(c) norm(g(c), l) ;
        C = fminsearch(f_norm, c);
        fprintf('n = %d      ', n)
        fprintf('%f    %f\n', C(1), C(2))
        % Compare plot of e^x and p(x).
        p = @(x) C(1)*x + C(2)*x.^2 + 1;
        xx = linspace(1,2,1e5);
        figure;
        plot(xx, p(xx), '--r', xx, exp(xx));
        str = sprintf('Plot with n = %d, for norm %d', n,l);
        title(str,'FontSize',24)
        xlabel('x','FontSize',20)
        ylabel('y','FontSize',20)
        legend('p2 approximation','exponential');
    end
end

这最终回答了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2013-12-20
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多