Please help me to look at the code. Thx

1 回表示 (過去 30 日間)
Tianlan Yang
Tianlan Yang 2021 年 10 月 19 日
コメント済み: Tianlan Yang 2021 年 10 月 19 日
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

採用された回答

per isakson
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
  • sqrt (3) (with a space) works at the command line but not in a function (R2018b)
  1 件のコメント
Tianlan Yang
Tianlan Yang 2021 年 10 月 19 日
That really helps. Thank you !!

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2021 年 10 月 19 日
inf(3)
ans = 3×3
Inf Inf Inf Inf Inf Inf Inf Inf Inf
[-1./inf (3)]
ans = 1×2
0 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]
ans = 1×2
1 2
[1-2]
ans = -1
[1 -2] %space before operator but no space between operator and number --> unary operator
ans = 1×2
1 -2
[1 - 2] %space before and after operator --> subtraction
ans = -1
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.)

カテゴリ

Help Center および File ExchangeCalculus についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by