質問: @(eta) (eta.^10).*((1-eta).^(10))./(prod(p.*eta+(1-p).*(1-eta))); k=quadl(func1,0,1); を計算したいのですが、 エラー ==> times 行列の次元は同じである必要があります となってしまいます。 多分prodがいけないと思うのですが、pの要素が多いため(p(i)*eta+(1-p(i))*(1-eta))のように全部書き下すことができません。 どう直せばよいのでしょうか
回答: matlab2011b だったら, quadl では横ベクトルを関数に渡すので, func1 に横ベクトルが入力されたときに同じサイズの横ベクトルが返るように組む. p を縦ベクトルにして,prod 内の p.*eta+(1-p).*(1-eta) の .* を * に変える. ただし, func1 をベクトル値(eta) が入力された時に 同じ長さのベクトルを計算できるように関数としてファイルに書くのが正解です.