*** Write a function called triangle_wave that computes the sum (−1) sin(2 +1) (2 +1) for each of 1001 values of t uniformly spaced from 0 to 4π inclusive. The input argument is a scalar non-negative integer n, and the output argument is a row v

조회 수: 2 (최근 30일)
this is my code and I need your help I couldn't figure out where I'm making mistake.
function theSum = triangle_wave(n)
t = linspace(0, 4*pi, 1001);
for tIndex = 1 : length(t)
this_t = t(tIndex);
k = 1 : n;
numerator = ((-1)^k).*sin(this_t * (2*k+1));
denominator = (2 * k + 1)^2;
theSum(tIndex) = sum(numerator ./ denominator);
end
  댓글 수: 5
Wasi von Deutschland
Wasi von Deutschland 2017년 5월 21일

@ stephen I'm really sorry. Next I will keep this in mind.

Jan
Jan 2017년 5월 21일
@Waseem Iqbal: It is okay. This happens frequently and we all remind newcomers to improve the format. Now let's come back to the question for clarification:
You forgot to mention, why you assume that there is a mistake. Please explain this.

댓글을 달려면 로그인하십시오.

채택된 답변

Jan
Jan 2017년 5월 21일
편집: Jan 2017년 5월 21일
denominator = (2 * k + 1) .^ 2;
Use the elemtnwise .^ instead of the matrix operation ^ . The same for "(-1)^k" .
The corresponding error message is clear:
Error using ^
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER (.^) instead.
[EDITED] The formula contains: "Sum from k=0 to n", you code contains:
k = 1:n;
Replace this by k = 0:n. It will be more efficient to move the definition before the loop and pre-allocate the output:
function S = triangle_wave(n)
t = linspace(0, 4*pi, 1001);
S = zeros(size(t)); % Pre-allocation
k = 0:n; % Not 1:n
for tIndex = 1 : length(t)
numerator = ((-1) .^ k) .* sin(t(tIndex) .* (2 * k + 1));
denominator = (2 .* k + 1) .^ 2;
S(tIndex) = sum(numerator ./ denominator);
end
  댓글 수: 6
Jan
Jan 2017년 5월 21일
@Waseem: Look at the formula: Look at the limits of the sum, it goes from k = 0 to n. Do you see it under and above the Sigma? With the zeros() command I've pre-allocated the output. Search in this forum for "pre-allocation".
rishabh gupta
rishabh gupta 2018년 2월 10일
can you please tell how is the value of k changing when it is placed outside the loop??

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Walter Roberson
Walter Roberson 2017년 5월 21일
(-1)^k needs to be (-1).^k
(2 * k + 1)^2 needs to be (2 * k + 1).^2

Vikrant dhall
Vikrant dhall 2018년 4월 29일
function v = triangle_wave(n) t = linspace(0,4 * pi, 1001); v = zeros(size(t)); p = 1; for tt = 0:length(t) suma = 0; for k = 0:n suma = suma + (((-1 .^ k) .* sin((2.*k+1).*tt)) / ((2.* k+1).^2)); %suma end %suma v(1,p) = suma; p = p + 1; end end
What is the error in this can anyone please help
  댓글 수: 1
Vikrant dhall
Vikrant dhall 2018년 4월 29일
function v = triangle_wave(n)
if true
% code
end
t = linspace(0,4 * pi, 1001);
v = zeros(size(t));
p = 1;
for tt = 0:length(t)
suma = 0;
for k = 0:n
x = ((-1 .^ k) .* sin((2.*k+1).*tt)) / ((2.* k+1).^2);
suma = suma + x;
%suma
end
%suma
v(1,p) = suma;
p = p + 1;
end
end

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by