1. ホーム
  2. matlab

[解決済み】"配列のインデックスは正の整数または論理値でなければならない"

2022-02-09 12:39:39

質問

問題の詳細と手がかり

%For this problem write a script file called NC.m that implements 
%the Newton-Cotes method of integration for an arbitrary function f(x). It
%should take as inputs the function and the limits of integration [a: b] and
%output the value of the definite integral. Specifically, you should use the
%Trapezoid rule as presented in Equation (11.73)
function [f]= NC(a,b,fun) %newton-cotes 
%a and b are limits of intergration 
%setting it up 
f(a)= fun(a); %y value for lower limit 
f(b)= fun(b); %y value for upper limit 
%the actual function 
f= (b-a)*(f(a)+f(b))/2; 
end 
 

何が間違っているのでしょうか?f]= NC(-3,0,fun) と入力して、fun= @(x)normpdf(x) を設定すると、 "Array indices must be positive integers or logical values" を返し続けています。誰かこの問題に光を当ててくれませんか?

どうすればいいですか?

に割り当てようとすることが問題です。 f(a) ここで a=0 というように、ベクトルのインデックスと値を混在させ、さらに f を2つの異なる目的、1つは関数NCの出力として、もう1つはfun(x)の値として、それは良いアイデアではありません。

その代わり、出力を別の変数に定義することができます。

fa=fun(a);
fb=fun(n); 
f=(b-a)*(fa+fb)/2;

とか書けばいい。 f=(b-a)*(fun(a)+fun(b))/2;