【发布时间】:2015-07-10 19:32:01
【问题描述】:
【问题讨论】:
-
欢迎来到 StackOverflow。如您所见,此站点不支持 TeX/LaTeX。您可以通过用图像替换编码公式来改进您的问题。
标签: matlab integration equation numerical
【问题讨论】:
标签: matlab integration equation numerical
fzero 函数可以求解各种非线性方程。
首先,将不完全 beta 函数计算为 X 的函数(我减去了 c,因为我们想找到生成 Y=0 的 x):
Y=@(X) beta(a,b)*betainc(X,a,b)-c
或者,不使用内置的betainc 函数,而是使用符号代数:
syms t x
Y=matlabFunction(int(t^(a-1)*(1-t)^(b-1),t,0,x)-c);
现在使用fzero,因为x 必须介于0 和1 之间,我们将解限制在[0 1] 之内:
x=fzero(Y,[0 1])
如果fzero 不起作用,尝试最简单的数值方法是二等分搜索。这很简单,而且在这里效果很好,所以为什么不使用它。我确实假设Y(x) 在[0 1] 上单调增加,但我认为情况总是如此。
x=0.5;
xmin=0;
xMAX=1;
tol=1e-12;
numIts=0;
while abs(Y(x))>tol
if Y(x)>0
xMAX=x;
elseif Y(x)<0
xmin=x;
end
x=(xmin+xMAX)/2;
numIts=numIts+1;
if numIts>237 %// If it's not working, stop
disp('Solution has not converged, there is probably no solution in [0,1]')
break
end
end
x
Y(x)
【讨论】:
beta(a,b)*betainc(X,a,b),查看Matlab中betainc的定义。
>> matlabFunction(int(t^(v2/2-1)*(1-t)^(v1/2-1),t,0,x)-5); Error using symengine>makeFhandle (line 109) Error: Unbalanced or unexpected parenthesis or bracket.我希望你能帮助我。
matlabFunction 进行集成,它是否有效?
Error using fzero (line 242) Function values at interval endpoints must be finite and real. 我猜某些值会使集成更加困难。我能做些什么来避免这些错误?谢谢。