In my script, I call a function value to input values and put the input in another function integrnfn:
[A,x1,x2]=value;
y=integrfn(A,x1,x2);
fprintf('The value of the integral is %.3f', integrfn(A,x1,x2))
function [A,x1,x2]=value
A=input('Please enter a positive value: ');
x1=input('Please enter another positive value: ');
x2=input('Please enter a positive value that is greater than the previous one: ');
end
function y=integrfn(A,x1,x2)
y=int(A*exp(-x^2)*cos(2*x)/(1+x^2),x,x1,x2);
end
However, when I run it, it says:
Undefined function or variable 'x'.
Error in script >integrfn (line 15)
y=int(A*exp(-x^2)*cos(2*x)/(1+x^2),x,x1,x2);
Error in the script (line 5)
y=integrfn(A,x1,x2);
Can someone tell me the problem?
Thank you!!

 Accepted Answer

The int function is part of the Symbolic Math Toolbox. The most appropriate function is integral, with the integrand as an anonymous function:
y = integral(@(x) A*exp(-x.^2).*cos(2*x)./(1+x.^2),x1,x2);

6 Comments

But it turns out that regardless of the input the output value is always o. Why?
That is not the result I get:
A = 5;
x1 = 1;
x2 = 10;
y=integral(@(x) A*exp(-x.^2).*cos(2*x)./(1+x.^2),x1,x2)
y =
-188.9829e-003
I do not see any errors in your code that would lead that a result always being 0.
The result is right only if I type the number and equation directly, yet if I run the whole script the result is always 0.
This code works for me:
function [A,x1,x2]=value
A=input('Please enter a positive value: ')
x1=input('Please enter another positive value: ')
x2=input('Please enter a positive value that is greater than the previous one: ')
end
function y=integrfn(A,x1,x2)
y = integral(@(x) A*exp(-x.^2).*cos(2*x)./(1+x.^2),x1,x2);
end
[A,x1,x2]=value
y=integrfn(A,x1,x2)
fprintf('The value of the integral is %.3f', integrfn(A,x1,x2))
When I run it:
Please enter a positive value: 10
A =
10.0000e+000
Please enter another positive value: 1
x1 =
1.0000e+000
Please enter a positive value that is greater than the previous one: 5
x2 =
5.0000e+000
A =
10.0000e+000
x1 =
1.0000e+000
x2 =
5.0000e+000
y =
-377.9658e-003
The value of the integral is -0.378
I figure out why now. Thank you!
My pleasure!

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!