How to plot a function containing an integral?

조회 수: 6 (최근 30일)
Pawel Rochowski
Pawel Rochowski 2016년 3월 31일
답변: Star Strider 2016년 3월 31일
Hello all! I've got very simple code:
function y=sc()
a=2;
x=linspace(0,100);
fun1 =quadgk(@(m) m.*a .*x, 0, 2);
y = plot(x,fun1);
end
In the specific case above the value of the integral =2, and also a=2, so one could expect the linear plot as a result o function sc. Instead there is an error: error using .*, matrix dimensions must agree. The fun1 gives exact values, when user provides a and x values. Is there a simple way to create a plot(x,fun1) without making any loops?
  댓글 수: 2
Star Strider
Star Strider 2016년 3월 31일
What is ‘fun2’?
Pawel Rochowski
Pawel Rochowski 2016년 3월 31일
편집: Pawel Rochowski 2016년 3월 31일
Thats my mistake, should be fun1. I mind a code like this: function y=fun1(a,x) y =quadgk(@(m) m.*a .*x, 0, 2); end. Then in Matlab's Command window one may put values for a and x and get the value of fun1 .

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

채택된 답변

Star Strider
Star Strider 2016년 3월 31일
I had to delve back in the documentation, but I found the quadv function that will do what you want without a loop:
fun1 = quadv(@(m) m.*a .*x, 0, 2);
That works.
If you have R2012a or later, use the integral function with the 'ArrayValued' option:
a=2;
x=linspace(0,100);
fun1 = integral(@(m) m.*a .*x, 0, 2, 'ArrayValued',1);
y = plot(x,fun1);
It produces the same results as quadv for this problem. Otherwise, I doubt there is any way to do it with any of the numerical integration routines without using a loop.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by