If and summation: why do I have the index of the summation in the final result?
Consider the following code:
Sum[If[b != 0, a[m], 0], {m, 1, 4}]
(* 4 If[b != 0, a[m], 0] *)
Why does it return me a[m]
? m is the index of the summation, it shouldn't appear in the result.
Here I expect to have:
If[b != 0, a[1], 0]+If[b != 0, a[2], 0]+If[b != 0, a[3], 0]+If[b != 0, a[4], 0]
I don't understand this behavior
(my example here is to understand this behavior, my specific problem is more complicated but the problem is the same as this one showed here).
summation
add a comment |
Consider the following code:
Sum[If[b != 0, a[m], 0], {m, 1, 4}]
(* 4 If[b != 0, a[m], 0] *)
Why does it return me a[m]
? m is the index of the summation, it shouldn't appear in the result.
Here I expect to have:
If[b != 0, a[1], 0]+If[b != 0, a[2], 0]+If[b != 0, a[3], 0]+If[b != 0, a[4], 0]
I don't understand this behavior
(my example here is to understand this behavior, my specific problem is more complicated but the problem is the same as this one showed here).
summation
add a comment |
Consider the following code:
Sum[If[b != 0, a[m], 0], {m, 1, 4}]
(* 4 If[b != 0, a[m], 0] *)
Why does it return me a[m]
? m is the index of the summation, it shouldn't appear in the result.
Here I expect to have:
If[b != 0, a[1], 0]+If[b != 0, a[2], 0]+If[b != 0, a[3], 0]+If[b != 0, a[4], 0]
I don't understand this behavior
(my example here is to understand this behavior, my specific problem is more complicated but the problem is the same as this one showed here).
summation
Consider the following code:
Sum[If[b != 0, a[m], 0], {m, 1, 4}]
(* 4 If[b != 0, a[m], 0] *)
Why does it return me a[m]
? m is the index of the summation, it shouldn't appear in the result.
Here I expect to have:
If[b != 0, a[1], 0]+If[b != 0, a[2], 0]+If[b != 0, a[3], 0]+If[b != 0, a[4], 0]
I don't understand this behavior
(my example here is to understand this behavior, my specific problem is more complicated but the problem is the same as this one showed here).
summation
summation
edited 2 days ago
Glorfindel
1851211
1851211
asked Dec 31 '18 at 1:44
StarBucK
740213
740213
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
This works:
Sum[If[b != 0, a[m] // Evaluate, 0], {m, 1, 4}]
From the documentation:
If evaluates only the argument determined by the value of the
condition.
$ $
You can use Evaluate to override HoldFirst etc. attributes of built-in
functions.
add a comment |
The other answer by Andrew technically answers your question, but,
maybe what you really wanted was
Sum[If[b =!= 0, a[m], 0], {m, 1, 4}]
which returns
a[1] + a[2] + a[3] + a[4]
The difference between the !=
and =!=
operators is very important here. Because the truth value of b != 0
could not be determined, therefore the
If
expressions were returned unevaluated.
I suggest moving the If
expression out of the summation. That is use
If[b =!= 0, Sum[a[m], {m, 1, 4}], 0]
instead. This simplifies the code and makes it easier to understand.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f188627%2fif-and-summation-why-do-i-have-the-index-of-the-summation-in-the-final-result%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
This works:
Sum[If[b != 0, a[m] // Evaluate, 0], {m, 1, 4}]
From the documentation:
If evaluates only the argument determined by the value of the
condition.
$ $
You can use Evaluate to override HoldFirst etc. attributes of built-in
functions.
add a comment |
This works:
Sum[If[b != 0, a[m] // Evaluate, 0], {m, 1, 4}]
From the documentation:
If evaluates only the argument determined by the value of the
condition.
$ $
You can use Evaluate to override HoldFirst etc. attributes of built-in
functions.
add a comment |
This works:
Sum[If[b != 0, a[m] // Evaluate, 0], {m, 1, 4}]
From the documentation:
If evaluates only the argument determined by the value of the
condition.
$ $
You can use Evaluate to override HoldFirst etc. attributes of built-in
functions.
This works:
Sum[If[b != 0, a[m] // Evaluate, 0], {m, 1, 4}]
From the documentation:
If evaluates only the argument determined by the value of the
condition.
$ $
You can use Evaluate to override HoldFirst etc. attributes of built-in
functions.
answered 2 days ago
Andrew
1,9011115
1,9011115
add a comment |
add a comment |
The other answer by Andrew technically answers your question, but,
maybe what you really wanted was
Sum[If[b =!= 0, a[m], 0], {m, 1, 4}]
which returns
a[1] + a[2] + a[3] + a[4]
The difference between the !=
and =!=
operators is very important here. Because the truth value of b != 0
could not be determined, therefore the
If
expressions were returned unevaluated.
I suggest moving the If
expression out of the summation. That is use
If[b =!= 0, Sum[a[m], {m, 1, 4}], 0]
instead. This simplifies the code and makes it easier to understand.
add a comment |
The other answer by Andrew technically answers your question, but,
maybe what you really wanted was
Sum[If[b =!= 0, a[m], 0], {m, 1, 4}]
which returns
a[1] + a[2] + a[3] + a[4]
The difference between the !=
and =!=
operators is very important here. Because the truth value of b != 0
could not be determined, therefore the
If
expressions were returned unevaluated.
I suggest moving the If
expression out of the summation. That is use
If[b =!= 0, Sum[a[m], {m, 1, 4}], 0]
instead. This simplifies the code and makes it easier to understand.
add a comment |
The other answer by Andrew technically answers your question, but,
maybe what you really wanted was
Sum[If[b =!= 0, a[m], 0], {m, 1, 4}]
which returns
a[1] + a[2] + a[3] + a[4]
The difference between the !=
and =!=
operators is very important here. Because the truth value of b != 0
could not be determined, therefore the
If
expressions were returned unevaluated.
I suggest moving the If
expression out of the summation. That is use
If[b =!= 0, Sum[a[m], {m, 1, 4}], 0]
instead. This simplifies the code and makes it easier to understand.
The other answer by Andrew technically answers your question, but,
maybe what you really wanted was
Sum[If[b =!= 0, a[m], 0], {m, 1, 4}]
which returns
a[1] + a[2] + a[3] + a[4]
The difference between the !=
and =!=
operators is very important here. Because the truth value of b != 0
could not be determined, therefore the
If
expressions were returned unevaluated.
I suggest moving the If
expression out of the summation. That is use
If[b =!= 0, Sum[a[m], {m, 1, 4}], 0]
instead. This simplifies the code and makes it easier to understand.
edited 13 hours ago
answered 2 days ago
Somos
2107
2107
add a comment |
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f188627%2fif-and-summation-why-do-i-have-the-index-of-the-summation-in-the-final-result%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown