function fx=mymin(x,b) fx=x.^4+x.^3-b.*x.^2-b.^2.*x+1; end b1=1; b2=-1; x = roots([4, 3, -2*b, -b^2]); [b3,f1]=fminbnd(@(b) mymin(x,b),-1,1); for b=b2+0.01:0.01:b1 [b,fval]=fminbnd(@(b) mymin(x,b),-1,1); if fval<f1 b3=b; f1=fval; end end 这段代码哪里出错了?
时间: 2023-12-16 16:02:43 浏览: 70
懂python的大佬请问一下这题怎么错的,谢谢
这段代码的问题在于,在 `fminbnd` 中使用了 `x` 变量,但是 `x` 是一个解方程得到的根向量,不应该作为参数传递给 `mymin` 函数。应该在 `mymin` 函数内部重新计算 `x` 的值。另外,在 `for` 循环中,对 `b` 的迭代步长应该为 `0.01` 而不是 `0.1`。修正后的代码如下:
```
function fx=mymin(x,b)
x = roots([4, 3, -2*b, -b^2]);
fx=x.^4+x.^3-b.*x.^2-b.^2.*x+1;
end
b1=1;
b2=-1;
x = roots([4, 3, 2*b2, b2^2]);
[b3,f1]=fminbnd(@(b) mymin(x,b),-1,1);
for b=b2+0.01:0.01:b1
[b,fval]=fminbnd(@(b) mymin(x,b),-1,1);
if fval<f1
b3=b;
f1=fval;
end
end
```
阅读全文