- 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 ビュー (過去 30 日間)
古いコメントを表示
I don't know what is wrong with that code. Here is the screenshot of the issue and the code:
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 件のコメント
採用された回答
per isakson
2021 年 10 月 19 日
編集済み: per isakson
2021 年 10 月 19 日
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
その他の回答 (1 件)
Walter Roberson
2021 年 10 月 19 日
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 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!