当函数的参数b的变化范围为[-1,1]时,fx=x.^4+x.^3-b*x.^2-b.^2*,x+1;最小值点的最小值是多少?function fx=mymin(x,b) fx=x.^4+x.^3-b*x.^2-b.^2*,x+1; end b1=-1; b2=1; [x1,f1]=fminbnd(@(b) mymin(x,b),-1,1); for b=b1+0.01:0.01:b2 x = roots([4, 3, -2*b, -b^2]); [x,fval]=fminbnd(@(x) mymin(x,b),-1,1); if fval<f1 x1=x; f1=fval; end end disp(['f的最小值点的最小值是',num2str(f1)])对于这道题目,这段代码哪里出错了呢
时间: 2023-12-16 22:04:53 浏览: 35
这段代码中有两处错误:
1. 在 mymin 函数中,有一个语法错误,应该把 * 改为 .,即 fx=x.^4+x.^3-b*x.^2-b.^2.*x+1;
2. 在 for 循环中,应该先计算出 b 对应的最小值点,再将其与当前的最小值点进行比较,即应该把 if 语句放到计算最小值点的内部,而不是放到外部。
修改后的代码如下:
```
function fx=mymin(x,b)
fx=x.^4+x.^3-b*x.^2-b.^2.*x+1;
end
b1=-1;
b2=1;
[x1,f1]=fminbnd(@(b) mymin(x1,b),b1,b2);
for b=b1+0.01:0.01:b2
x = roots([4, 3, -2*b, -b^2]);
[x,fval]=fminbnd(@(x) mymin(x,b),-1,1);
if fval<f1
x1=x;
f1=fval;
end
end
disp(['f的最小值点的最小值是',num2str(f1)])
```
注意:由于该函数存在多个局部最小值点,因此无法保证找到的是全局最小值点。
相关问题
根据y=2.211x.^3+5x+1怎么用matlab画图
可以按照以下步骤使用MATLAB画图:
1. 定义x的范围和间隔,生成x的取值序列:
```matlab
x = -5:0.1:5;
```
这里设定x的范围为-5到5,每隔0.1取一个值,生成一个包含101个数的向量。
2. 计算y的取值:
```matlab
y = 2.211*x.^3 + 5*x + 1;
```
这里使用逐元素运算符"."计算x的3次方,并按照公式计算y的取值。
3. 绘制图像:
```matlab
plot(x,y);
```
使用plot函数绘制图像,x为横坐标,y为纵坐标。
完整代码如下:
```matlab
x = -5:0.1:5;
y = 2.211*x.^3 + 5*x + 1;
plot(x,y);
```
运行代码后,会弹出一个图像窗口,显示出函数图像。
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 这段代码哪里出错了?
这段代码的问题在于,在 `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
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)