Matlab 向量值函数的零点
MATLAB中有没有函数可以找到向量值函数的零点?常用的函数Matlab 向量值函数的零点,matlab,function,vector,zero,minimize,Matlab,Function,Vector,Zero,Minimize,MATLAB中有没有函数可以找到向量值函数的零点?常用的函数fzero仅用于标量函数,也找不到任何标量函数的零,例如f(x)=x^2可能我误解了您问题中的某些内容,但您可以尝试以下解决方案: y = @(x) x^2; fminbnd(y, -100, 100) ans = -3.5527e-15 也许你可以试试解决: syms x y y = @(x) x^2; solve( y==0, x); 现在无法检查,稍后我将编辑此解决方案。Matlab的优化工具箱具有以下功能: 解决由F
fzero
仅用于标量函数,也找不到任何标量函数的零,例如f(x)=x^2
可能我误解了您问题中的某些内容,但您可以尝试以下解决方案:
y = @(x) x^2;
fminbnd(y, -100, 100)
ans = -3.5527e-15
也许你可以试试解决:
syms x y
y = @(x) x^2;
solve( y==0, x);
现在无法检查,稍后我将编辑此解决方案。Matlab的优化工具箱具有以下功能:
解决由F(x)=0
为x
指定的问题,其中F(x)
是一个返回向量值的函数。x是向量或矩阵
否则,可以通过尝试最小化向量输出的范数来查找一般向量值函数的零点。假设函数F(x)
输出一个Nx1
向量。您可以通过执行以下操作来尝试查找零:
y = fminunc(@(x) sum(F(x).^2));
或
然后,您必须检查返回的y
是否“足够接近”零
最后一条注释是,fzero
函数的算法通过检查符号变化来确定根的存在。[文件]明确表示
x=fzero(fun,x0)
试图找到一个点x
,其中fun(x)=0
。此解决方案是fun(x)
更改符号的地方fzero
找不到函数的根,例如x^2
事实上,在旧版本的matlab(R2012b)中,fzero
的文档中有一个带有限制的部分,上面说
fzero命令查找函数更改符号的点。如果函数是连续的,这也是函数值接近零的点。如果函数不是连续的,fzero可能返回不连续点的值,而不是零。例如,fzero(@tan,1)返回1.5708,即tan中的不连续点
此外,fzero命令将零定义为函数与x轴相交的点。函数与x轴接触但不交叉的点不是有效的零。例如,y=x。^2是一条在0处与x轴接触的抛物线。但是,由于函数从未穿过x轴,因此未找到零。对于没有有效零的函数,fzero将一直执行,直到检测到Inf、NaN或复数值
澄清一下,这是一组您希望一起求解的独立方程(通常使用fzero
和for
循环求解)还是一个多变量方程(这些方程通常没有明确定义的根,必须用优化技术求解,例如fsolve
)?这是一组多变量方程;这些方程是独立的。请尝试fsolve
。没有一个具体的例子就说不出更多。我有一组方程,而不仅仅是一个方程。谢谢你的回答。还有一个问题。如果非线性方程组允许多个解;我们怎样才能找到所有这些。典型的方法是在初始猜测网格上运行fsolve(f,x0)
。但是有没有更好(更有效)的方法找到它们呢?@SaraWinslet,除了你所说的找到不止一个解决方案之外,我不知道还有其他更有效的方法。即使使用一个初始猜测的网格也不能保证你能找到所有的解决方案。
y = fminsearch(@(x) sum(F(x).^2));