I want to use integral&fzero to solve the equation but I could't debug by myself

조회 수: 1 (최근 30일)
Hello, I have written some code below but I could't debug by myself. Does anyone can give me some advice? Thanks!
n = 100; Cpk_hat = 1.5; r = 0.95; zzz = 1.00;
fun = @(t,C)chi2cdf(((n-1)*((3*C+abs(zzz)*sqrt(n))-t).^2/(9*n*Cpk_hat.^2)),n-1)*...
(normpdf(t+zzz*sqrt(n))+normpdf(t-zzz*sqrt(n)));
C_guess = 1;
fzero(@(C) integral(@(t) fun(t,C),0,((3*C+abs(zzz))*sqrt(n)))-(1-r),C_guess);
error message:
Error using fzero (line 306)
FZERO cannot continue because user-supplied function_handle ==>
@(C)integral(@(t)fun(t,C),0,((3*C+abs(strange_hat))*sqrt(n)))-(1-r) failed with the error
below.
Inner matrix dimensions must agree.
  댓글 수: 2
Adam
Adam 2017년 8월 25일
Simplest debugging option would be to move your complicated function into its own file, split into variables across multiple lines rather than all on one line, then just create a simple function handle to that to pass in. Then you will be able to debug it with the 'stop on errors' option from the breakpoints menu.
At a glance all your inputs are scalar so I can't see simply where your error would be.

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2017년 8월 25일
Define fun() with element-wise operators
fun=@(t,C)chi2cdf(((n-1).*((3.*C+abs(zzz).*sqrt(n))-t).^2./(9.*n.*Cpk_hat.^2)),n-1).*(normpdf(t+zzz.*sqrt(n))+normpdf(t-zzz.*sqrt(n)))
  댓글 수: 4
Louis Liu
Louis Liu 2017년 8월 26일
@Matt J Hello, I have found the mistake and get the right value 1.3147 now. Thank for your help!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 数值积分和微分에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!