2014-10-30 5 views
0

e^x에 근사하는 다항식 p(x) = 1 + c(1)x + c(2)x^2의 계수를 계산하기 위해 최소화를 사용하려고합니다. 나는 접근 방식은 1, 2inf norm(p(x) - e^x)fminsearch 사용 최소화하는 등, 다음 n=5, n=10에 대한 최초의 자연수 [1,n]i에 대한 포인트 xi = 1 + i/n를 사용해야합니다. 따라서 출력은 3 p(x)의 2 계수 여야합니다. 모든 제안을 부탁드립니다.Matlab은 fminsearch를 사용하여 계수를 찾기 위해 norm을 최소화합니다.

+0

직접 해봤습니까? 어떻게 된 거예요? – David

+0

@David 네, 마침내 알아 냈습니다. – LuckyPenny

답변

0

글쎄, 누군가 궁금해하는 경우, 나는 결국 질문을 알아 냈어.

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 

이 질문의 답을 찾기 위해 마지막으로 작업했습니다.