what is wrong when using fzero
이전 댓글 표시
hi!
i would like to compute this:
function z=theta(m)
digits 250;
s=sym('s');
p=0;
q=0;
for i=0:m
p=p+(factorial(2*m-i)*factorial(m)*s^i)/factorial(2*m)*factorial(m-
i)*factorial(i);
q=q+(factorial(2*m-i)*factorial(m)*(-s)^i)/factorial(2*m)*factorial(m-
i)*factorial(i);
end;
r=p/q;
s=taylor(exp(-s)*r-1, s, 150); %taylor expansion
coeff=vpa(sym2poly(sym(s)),250); % c_i
x=sym('x');
sum1=0;
l=1;
for j=(2*m+1):(150+2*m)
sum1=sum1+abs(coeff(l))*x^j;
l=l+1;
end;
bound=vpa((-log(1-sum1))/x,250);
n=fzero(bound,3);
just the last part is important. i think there is something wrong with my use of fzero.. when i want to calculate this, i get this error:
>> theta(2)
??? Error using ==> fzero at 181
If FUN is a MATLAB object, it must have an feval method.
Error in ==> theta at 27
n=fzero(bound,3);
답변 (2개)
Walter Roberson
2013년 2월 27일
You cannot use fzero() on symbolic objects.
If you are going to use symbolic objects, use solve(), or use
feval(symengine, 'numeric::solve', bound, 3)
댓글 수: 5
Vicky
2013년 2월 28일
Walter Roberson
2013년 2월 28일
If you want to use fzero then you are going to have substantial difficulty in obtaining 250 digits of output.
Vicky
2013년 2월 28일
Vicky
2013년 2월 28일
Walter Roberson
2013년 2월 28일
Try
feval(symengine, 'numeric::solve', bound, x)
Carlos
2013년 2월 28일
0 개 추천
You can use solve instead of fzero
카테고리
도움말 센터 및 File Exchange에서 Conversion에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!