如何把所有的零点值都在图中画出呢
时间: 2024-04-09 13:32:36 浏览: 21
要将所有的零点值都在图中画出,可以使用循环遍历的方式。以下是修改后的代码:
```matlab
f = @(x) (cos(x)-1).^2 + x.*sin(x) - 1;
x_guess = linspace(0, 10, 100); % 在区间 [0, 10] 中生成多个初始猜测值
x_root = []; % 存储零点值的数组
for i = 1:length(x_guess)
root = fzero(f, x_guess(i)); % 求解每个初始猜测值对应的零点
x_root = [x_root, root]; % 将零点值添加到数组中
end
y_root = f(x_root);
x = linspace(0, 10, 1000);
y = f(x);
plot(x, y)
hold on
plot(x_root, y_root, 'ro')
xlabel('x')
ylabel('y')
title('Plot of y=(cos(x)-1).^2+x.*sin(x)-1')
legend('y', 'Roots')
grid on
```
在上述代码中,我们使用 linspace 函数在区间 [0, 10] 中生成了多个初始猜测值。然后,使用循环遍历这些初始猜测值,并利用 fzero 函数求解每个初始猜测值对应的零点。将每个零点值存储在数组 x_root 中,并计算相应的函数值存储在数组 y_root 中。最后,使用 plot 函数绘制函数图形和标记零点。
运行上述代码,即可得到 y 在区间 (0, 10) 上的图形,并在图中标记出所有的零点值。