Matlab最小化范数,利用fminsearch求系数

Matlab最小化范数,利用fminsearch求系数,matlab,minimization,norm,fminsearch,Matlab,Minimization,Norm,Fminsearch,我试图用极小化来计算多项式的系数p(x)=1+c(1)x+c(2)x^2来近似e^x。我需要在[1,n]上对自然数I使用点xi=1+I/n,首先是n=5,然后是n=10,等等。方法是使用fminsearch最小化1、2和inf-norm(p(x)-e^x)。因此,输出应该是3p(x)的2个系数。任何建议都将不胜感激。如果有人想知道,我最终解决了这个问题 for l = [1 2 inf] fprintf('For norm %d\n', l) fprintf('Coefficie

我试图用极小化来计算多项式的系数
p(x)=1+c(1)x+c(2)x^2
来近似
e^x
。我需要在
[1,n]
上对自然数
I
使用点
xi=1+I/n
,首先是
n=5
,然后是
n=10
,等等。方法是使用fminsearch最小化
1
2
inf-norm(p(x)-e^x)
。因此,输出应该是3
p(x)
的2个系数。任何建议都将不胜感激。

如果有人想知道,我最终解决了这个问题

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

这最终解决了这个问题

你自己试过什么吗?发生了什么事?@David是的,我终于明白了。