在Matlab中使用特定的初始猜测求解方程组

在Matlab中使用特定的初始猜测求解方程组,matlab,numerical-methods,Matlab,Numerical Methods,我有一个关于解方程组的问题,以及对解的初步猜测。我想解一个方程组,其中x,一个Tx1向量,是我的未知数,a,一个Tx1向量,B,一个TxT矩阵。“f”是我想求解的函数。我想解“x”,这样“f==0”: 我使用Matlab的solve(或vpasolve)函数来获取值。如果“B”的条目高于某个值,我应该观察到“a”值变化的跳跃(我会这样做)。然而,取决于解决方案的初始猜测,例如,初始猜测为1或0,跳跃位置出现在“a”的不同值处,出现滞后循环 我用T=1的fzero解出了方程。我指定了最初的猜测,并

我有一个关于解方程组的问题,以及对解的初步猜测。我想解一个方程组,其中x,一个Tx1向量,是我的未知数,a,一个Tx1向量,B,一个TxT矩阵。“f”是我想求解的函数。我想解“x”,这样“f==0”:

我使用Matlab的
solve
(或
vpasolve
)函数来获取值。如果“B”的条目高于某个值,我应该观察到“a”值变化的跳跃(我会这样做)。然而,取决于解决方案的初始猜测,例如,初始猜测为1或0,跳跃位置出现在“a”的不同值处,出现滞后循环

我用T=1的
fzero
解出了方程。我指定了最初的猜测,并且确实能够观察到滞后周期。对于T>1,
fzero
不再工作,我尝试了
solve
以及
vpasolve
solve
不允许初始猜测,对于
vpasolve
我甚至会从Matlab的帮助站点中得到一个错误,只要我包含的不仅仅是方程组和未知变量,即
vpasolve(eqn,var)
工作正常,但对于
vpasolve(eqn,var,init_guess)
我得到以下错误:

使用getEqnsVars(第50行)时出错,需要两个参数:向量 方程和变量向量

sym/vpasolve中的错误(第91行)[等式,变量]= getEqnsVars(varargin{1:end-1})

我做错了什么?我还可以尝试其他功能吗


编辑:我没有使用'fsolve'而是使用'fzero'来查找根

您可以使用稍有不同的函数定义
f
,然后尝试
fsolve
。在这里,您不必显式地将
x
定义为符号变量

f = @(x) -x+1-(1+erf((a - B*x)./sqrt(2)))/2; % -x+1-normcdf(a-B*x)
initial_guess = zeros(T,1);
Spp = fsolve(f,initial_guess);
f = @(x) -x+1-(1+erf((a - B*x)./sqrt(2)))/2; % -x+1-normcdf(a-B*x)
initial_guess = zeros(T,1);
Spp = fsolve(f,initial_guess);