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!!

 Respuesta aceptada

Star Strider
Star Strider el 10 de Nov. de 2017

0 votos

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 comentarios

Zhuoying Lin
Zhuoying Lin el 12 de Nov. de 2017
But it turns out that regardless of the input the output value is always o. Why?
Star Strider
Star Strider el 12 de Nov. de 2017
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.
Zhuoying Lin
Zhuoying Lin el 12 de Nov. de 2017
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.
Star Strider
Star Strider el 12 de Nov. de 2017
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
Zhuoying Lin
Zhuoying Lin el 12 de Nov. de 2017
I figure out why now. Thank you!
Star Strider
Star Strider el 12 de Nov. de 2017
My pleasure!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 10 de Nov. de 2017

Comentada:

el 12 de Nov. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by