Matlab 求方程的估计解
我有一个截断函数,定义为:Matlab 求方程的估计解,matlab,Matlab,我有一个截断函数,定义为: function f = phi_b(x, b) if b == 0 f = sign(x); else f = -1 * (x<-b) + 1*(x>b) + (1/b) * x .* ((x>=-b & x<=b)); end; 我最终需要的功能是: r = @(b) (1/100) * sum((phi_b(y,b)).^2); 问题在于找到方程r(b)==0.1的解。像下面这样的常规程序将不起作用: solve(r
function f = phi_b(x, b)
if b == 0
f = sign(x);
else
f = -1 * (x<-b) + 1*(x>b) + (1/b) * x .* ((x>=-b & x<=b));
end;
我最终需要的功能是:
r = @(b) (1/100) * sum((phi_b(y,b)).^2);
问题在于找到方程r(b)==0.1
的解。像下面这样的常规程序将不起作用:
solve(r(b)==0.1, b)
有没有办法解决这类方程?如果r(b)
的结果是一个向量,您可以调用min
函数,查看该向量中最接近0.1
的位置。您可以执行以下操作:
result = r(b);
[val,index] = min(abs(result - 0.1));
val
将包含向量中与此标准匹配的最佳元素的“关闭”程度0.1
,并且index
将告诉您此元素在结果
向量中的位置。例如,如果val=0.00001
和index=7
,这意味着result
中的最佳值是0.00001
远离0.1
。另外,result
中的索引7
是最佳元素所在的位置。要查看实际值,请执行r(7)
或r(索引)
有趣的是,您可以使用val
作为测量数据分辨率的一种方法。换句话说,如果val
非常大,这可能意味着您需要以较小的步长在向量中引入更多的值。如果val
非常小,这可能意味着您最初指定为b
向量的内容就足够了。我不熟悉该函数,因此我没有考虑您提供给r
函数的数据是否有否解决方案
result = r(b);
[val,index] = min(abs(result - 0.1));