2014-10-02 2 views
0

Matlab에서 매우 새로 생겼습니다. 나는 시리즈 1 + x + x^2/2의 합을 구현하려고 시도합니다! + x^3/3! 그러나 나는 그것을 어떻게하는지 알 수 없었다. 지금까지 나는 단지 숫자의 합계를했습니다. 도와주세요.MATLAB 합계 시리즈 함수

for ii = 1:length(a) 
    sum_a = sum_a + a(ii) 
    sum_a 



end 

답변

1
n = 0 : 10; % elements of the series 
x = 2; % value of x 
s = sum(x .^ n ./ factorial(n)); % sum 
+0

@cherry을 제공합니다 : 그것은 반복 곱셈을 피할 수 있기 때문에 더 효율적입니다? function [output args] = my_function (a) 또한.을 넣는 이유.^및 ./ ??? 미안 내 질문이 너무 쉬운 경우 n = 길이 (a); x = 2; s = 합계 (x.^n ./ 계승 (n)); 어떤 비교와 의 끝 – user6548945

+0

user6548945 @'different'? 나는 네가 무엇인지 모르겠다. 내 코드는'x'의 한 값에 대해 11 개의 항을 가진 합을 계산합니다. 또는 'x'값 벡터에 대한 계산을 수행 하시겠습니까? – Cheery

+0

기본적으로 n = 0:10입니다. 하지만 사용자가 입력 할 숫자까지 0부터 시작하도록 사용자로부터 n을 얻는 방법에 대해 궁금합니다. 모든 것이 똑같지 만 n은 사용자로부터옵니다 ... – user6548945

0

답변의 두 번째 부분은 다음과 같습니다

n = 0:input('variable?') 
+0

예 ........이기 때문에 요소 별 작업 (요소 별) http://www.mathworks.com/help/matlab/ref/times.html입니다. ............ – user6548945

0

Cheery's approach이 시리즈의 용어의 수가 적을 때 완벽하게 유효합니다. 큰 값의 경우 더 빠른 방법은 다음과 같습니다. m = 1000; x = 1;

tic 
for k = 1:1e4 
    result = 1+sum(cumprod(x./[1:m])); 
end 
toc 

tic 
for k = 1:1e4 
    result = sum(x.^(0:m)./factorial(0:m)); 
end 
toc 

에 대한

m = 10; 
x = 2; 
result = 1+sum(cumprod(x./[1:m])); 

예 실행 시간이 나에게 다른 결과를 제공 이유를 말해 줄 수

Elapsed time is 1.572464 seconds. 
Elapsed time is 2.999566 seconds.