Is there a way to integrate the log of a function, f(x) in Matlab without defining eg l = log(f(x)?
I have the following code:
x = 0:0.001:2.5;
gamma_l = @(x) 2*x;
And I want to integrate the following:
integral( log(gamma_l), 0 , 0.6 )
But it gives me the error:
Undefined function 'log' for input arguments of type
'function_handle'.
I know that I could just define:
gamma_l_l = @(x) log(2*x);
integral( gamma_l_l, 0 , 0.6 )
Because it works in this way. However, I would like to know why the first case does not work. And if there is a way to integrate the function without defining a new function.
matlab integration
add a comment |
I have the following code:
x = 0:0.001:2.5;
gamma_l = @(x) 2*x;
And I want to integrate the following:
integral( log(gamma_l), 0 , 0.6 )
But it gives me the error:
Undefined function 'log' for input arguments of type
'function_handle'.
I know that I could just define:
gamma_l_l = @(x) log(2*x);
integral( gamma_l_l, 0 , 0.6 )
Because it works in this way. However, I would like to know why the first case does not work. And if there is a way to integrate the function without defining a new function.
matlab integration
1
The first case does not work becauselog()
requires numbers as inputs, and you are not giving it a number, you are giving it a function handle. The logarithm of a function handle is not defined.
– Ander Biguri
Nov 13 '18 at 16:07
Thanks, @Ander! So do you think that the most efficient (only) way is to define another function? Isn't there a way to define composite function inside the integral?
– Tecon
Nov 13 '18 at 16:11
1
Gnovice's answer is how you should handle this ;)
– Ander Biguri
Nov 13 '18 at 16:32
add a comment |
I have the following code:
x = 0:0.001:2.5;
gamma_l = @(x) 2*x;
And I want to integrate the following:
integral( log(gamma_l), 0 , 0.6 )
But it gives me the error:
Undefined function 'log' for input arguments of type
'function_handle'.
I know that I could just define:
gamma_l_l = @(x) log(2*x);
integral( gamma_l_l, 0 , 0.6 )
Because it works in this way. However, I would like to know why the first case does not work. And if there is a way to integrate the function without defining a new function.
matlab integration
I have the following code:
x = 0:0.001:2.5;
gamma_l = @(x) 2*x;
And I want to integrate the following:
integral( log(gamma_l), 0 , 0.6 )
But it gives me the error:
Undefined function 'log' for input arguments of type
'function_handle'.
I know that I could just define:
gamma_l_l = @(x) log(2*x);
integral( gamma_l_l, 0 , 0.6 )
Because it works in this way. However, I would like to know why the first case does not work. And if there is a way to integrate the function without defining a new function.
matlab integration
matlab integration
asked Nov 13 '18 at 16:05
TeconTecon
183
183
1
The first case does not work becauselog()
requires numbers as inputs, and you are not giving it a number, you are giving it a function handle. The logarithm of a function handle is not defined.
– Ander Biguri
Nov 13 '18 at 16:07
Thanks, @Ander! So do you think that the most efficient (only) way is to define another function? Isn't there a way to define composite function inside the integral?
– Tecon
Nov 13 '18 at 16:11
1
Gnovice's answer is how you should handle this ;)
– Ander Biguri
Nov 13 '18 at 16:32
add a comment |
1
The first case does not work becauselog()
requires numbers as inputs, and you are not giving it a number, you are giving it a function handle. The logarithm of a function handle is not defined.
– Ander Biguri
Nov 13 '18 at 16:07
Thanks, @Ander! So do you think that the most efficient (only) way is to define another function? Isn't there a way to define composite function inside the integral?
– Tecon
Nov 13 '18 at 16:11
1
Gnovice's answer is how you should handle this ;)
– Ander Biguri
Nov 13 '18 at 16:32
1
1
The first case does not work because
log()
requires numbers as inputs, and you are not giving it a number, you are giving it a function handle. The logarithm of a function handle is not defined.– Ander Biguri
Nov 13 '18 at 16:07
The first case does not work because
log()
requires numbers as inputs, and you are not giving it a number, you are giving it a function handle. The logarithm of a function handle is not defined.– Ander Biguri
Nov 13 '18 at 16:07
Thanks, @Ander! So do you think that the most efficient (only) way is to define another function? Isn't there a way to define composite function inside the integral?
– Tecon
Nov 13 '18 at 16:11
Thanks, @Ander! So do you think that the most efficient (only) way is to define another function? Isn't there a way to define composite function inside the integral?
– Tecon
Nov 13 '18 at 16:11
1
1
Gnovice's answer is how you should handle this ;)
– Ander Biguri
Nov 13 '18 at 16:32
Gnovice's answer is how you should handle this ;)
– Ander Biguri
Nov 13 '18 at 16:32
add a comment |
1 Answer
1
active
oldest
votes
Your variable gamma_l
is an anonymous function, and the log
function is not designed to accept function handles as an input. Instead, you need to define a second anonymous function that evaluates gamma_l
for a given value, then passes the numeric result to log
, like so:
result = integral(@(x) log(gamma_l(x)), 0, 0.6);
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
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: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
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%2fstackoverflow.com%2fquestions%2f53284969%2fis-there-a-way-to-integrate-the-log-of-a-function-fx-in-matlab-without-defini%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Your variable gamma_l
is an anonymous function, and the log
function is not designed to accept function handles as an input. Instead, you need to define a second anonymous function that evaluates gamma_l
for a given value, then passes the numeric result to log
, like so:
result = integral(@(x) log(gamma_l(x)), 0, 0.6);
add a comment |
Your variable gamma_l
is an anonymous function, and the log
function is not designed to accept function handles as an input. Instead, you need to define a second anonymous function that evaluates gamma_l
for a given value, then passes the numeric result to log
, like so:
result = integral(@(x) log(gamma_l(x)), 0, 0.6);
add a comment |
Your variable gamma_l
is an anonymous function, and the log
function is not designed to accept function handles as an input. Instead, you need to define a second anonymous function that evaluates gamma_l
for a given value, then passes the numeric result to log
, like so:
result = integral(@(x) log(gamma_l(x)), 0, 0.6);
Your variable gamma_l
is an anonymous function, and the log
function is not designed to accept function handles as an input. Instead, you need to define a second anonymous function that evaluates gamma_l
for a given value, then passes the numeric result to log
, like so:
result = integral(@(x) log(gamma_l(x)), 0, 0.6);
edited Nov 13 '18 at 16:14
answered Nov 13 '18 at 16:08
gnovicegnovice
116k13231335
116k13231335
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- 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%2fstackoverflow.com%2fquestions%2f53284969%2fis-there-a-way-to-integrate-the-log-of-a-function-fx-in-matlab-without-defini%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
1
The first case does not work because
log()
requires numbers as inputs, and you are not giving it a number, you are giving it a function handle. The logarithm of a function handle is not defined.– Ander Biguri
Nov 13 '18 at 16:07
Thanks, @Ander! So do you think that the most efficient (only) way is to define another function? Isn't there a way to define composite function inside the integral?
– Tecon
Nov 13 '18 at 16:11
1
Gnovice's answer is how you should handle this ;)
– Ander Biguri
Nov 13 '18 at 16:32