- sqrt (3) (with a space) works at the command line but not in a function (R2018b)
Please help me to look at the code. Thx
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Tianlan Yang
am 19 Okt. 2021
Kommentiert: Tianlan Yang
am 19 Okt. 2021
I don't know what is wrong with that code. Here is the screenshot of the issue and the code:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/771538/image.png)
function intGL=gausslegendre (a,b,f,M,varargin)
y = [-1/ sqrt (3),1/ sqrt (3)];
H2 = (b-a)/(2*M);
z = [a:2*H2:b];
zM = (z(1:end -1)+z(2:end ))*0.5;
x = [zM+H2*y(1), zM+H2*y(2)];
f = f(x,varargin {:});
intGL = H2*sum(f);
return
0 Kommentare
Akzeptierte Antwort
per isakson
am 19 Okt. 2021
Bearbeitet: per isakson
am 19 Okt. 2021
This returns a numerical result, but it's not an integer.
fun = @(x) exp(-x.^2./2);
int = gausslegendre( 0, 2, fun, 1 )
function intGL=gausslegendre (a,b,f,M,varargin)
y = [-1/sqrt(3),1/sqrt(3)];
H2 = (b-a)/(2*M);
z = [a:2*H2:b];
zM = (z(1:end -1)+z(2:end ))*0.5;
x = [zM+H2*y(1), zM+H2*y(2)];
f = f(x,varargin{:});
intGL = H2*sum(f);
end
Comments
Weitere Antworten (1)
Walter Roberson
am 19 Okt. 2021
inf(3)
[-1./inf (3)]
If inf(3) returns a 3 x 3 array of inf, then why doesn't [-1./inf (3)] take -1 divided by a 3 x 3 array of inf?
The answer is that there is a space between the inf and the (3), and within [], space is the concatenation operator unless there is an operator before the space
[1 2]
[1-2]
[1 -2] %space before operator but no space between operator and number --> unary operator
[1 - 2] %space before and after operator --> subtraction
So your line
[-1/ sqrt (3),1/ sqrt (3)];
is being treated as
[-1/ sqrt() (3),1/ sqrt() (3)];
which in turn is
[(-1/ sqrt()), (3), (1/ sqrt()), (3)];
and that fails because sqrt() cannot be invoked with no parameters. My example with inf did not complain because inf can be invoked with no parameters (and usually is.)
0 Kommentare
Siehe auch
Kategorien
Mehr zu Calculus finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!