How do i calculate a sum using a function?
Afficher commentaires plus anciens
Problem description:
Using previous examples make a function with one parameter n, number of integers to sum, and one output, the sum of first n integers: 1+2+3+...+n.
How do i use a function to calculate the sum?
2 commentaires
KL
le 14 Oct 2017
Did you read the documentation? Show us what have you tried, we'd be happy help you
Jonas Fuglsang Hansen
le 14 Oct 2017
Réponse acceptée
Plus de réponses (2)
jean claude
le 14 Oct 2017
Modifié(e) : jean claude
le 14 Oct 2017
as i understand you want to sum 1+2+...n so you can use
function S = Ma_somme(n)
S = 0 ;
for i = 1 : n
S = S + i ;
end
end
3 commentaires
John D'Errico
le 14 Oct 2017
Please don't give explicit code like this for obvious homework. That does not help the student. They need to learn, which means they need to make some effort.
Jonas Fuglsang Hansen
le 14 Oct 2017
Modifié(e) : Jonas Fuglsang Hansen
le 14 Oct 2017
Jan
le 14 Oct 2017
To run a function, you cannot just hit the "Run" button, but you save it to a file and call it from Matlab's command window with providing an input:
Result = Ma_somme(19)
@jean claude: Please consider John's advice in the future. It is an advantage for the student and for the forum. Thanks.
Image Analyst
le 14 Oct 2017
Hints
function theSum = ComputeSum(n)
theSum = .......
and check this out, and learn from what you see:
vec = 1 : 10;
Also, are you allowed to use the built-in sum() function? And never use "sum" for the name of your variable or you'll destroy the built-in function.
6 commentaires
Jonas Fuglsang Hansen
le 14 Oct 2017
KL
le 14 Oct 2017
So this link shows you how to create and save the function as an m-file. As Image Analyst shows, this function should accept an "input" (n).
vec = 1:10
creates a series of numbers from 1 to 10, that is just an example. You use this like
vec = 1:n
inside your function m-file.
Jonas Fuglsang Hansen
le 14 Oct 2017
because you're passing 'n' to the function so MATLAB knows what 'n' means. If you do the same thing outside, where you haven't defined 'n' yet, then it's not possible for your program to know what 'n' means.
On your command ĺine, try the following,
vec = 1:n
now you'll get an error since the workspace doesn't have a variable called 'n'. Now try
n = 10;
vec = 1:n;
No error, because you just defined 'n' in the previous line. Get it?
Jonas Fuglsang Hansen
le 14 Oct 2017
Image Analyst
le 14 Oct 2017
Modifié(e) : Image Analyst
le 14 Oct 2017
Yes, that should do it.
Since you already got one working version, I'll give my version:
function theSum = ComputeSum(n)
theSum = sum(1:n);
That's it! It uses the built-in sum() function but you didn't specifically disallow it so I used it.
Hint: to fix up your indenting, in the MATLAB editor, type control-a (to select all the code) and then control-i (to fix/standardize the indenting of the lines).
Here's another snippet that might come in handy for you:
% Ask user for one integer number.
defaultValue = 45;
titleBar = 'Enter an integer value';
userPrompt = 'Enter the integer';
caUserInput = inputdlg(userPrompt, titleBar, 1, {num2str(defaultValue)});
if isempty(caUserInput),return,end; % Bail out if they clicked Cancel.
% Round to nearest integer in case they entered a floating point number.
integerValue = round(str2double(cell2mat(caUserInput)));
% Check for a valid integer.
if isnan(integerValue)
% They didn't enter a number.
% They clicked Cancel, or entered a character, symbols, or something else not allowed.
integerValue = defaultValue;
message = sprintf('I said it had to be an integer.\nTry replacing the user.\nI will use %d and continue.', integerValue);
uiwait(warndlg(message));
end
If we're done, then you can click "Accept this answer" on the one best answer (it only works on one).
Catégories
En savoir plus sur Data Type Identification dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!