Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 向量值函数的零点_Matlab_Function_Vector_Zero_Minimize - Fatal编程技术网

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

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(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));