我不明白为什么我的 for 循环没有被 MATLAB 接受

I can not figure out why my for loop is not being taken in MATLAB

在 MATLAB 中,我正在尝试编写一个程序,它将在图形 (x,y) 上获取 3 个坐标,使用这些值来求解方程组,该方程组将找到多项式方程的系数 y = ax^2 + bx + c,然后我可以用它来绘制抛物线。

为了测试我的代码,我想我可以从一个多项式开始,绘制它,找到抛物线的最小位置,将它的直接邻居用于我的其他 2 个位置,然后 运行 这 3 个位置通过我的代码应该吐出我的原始多项式的系数。但由于某种原因,我得到的抛物线右移并且我的 b 和 c 值不正确。

有人知道我的问题出在哪里吗?我没主意了

clear all; close all;

x = -10:10;

%Original Polynomial
y = 6.*x.^2 + 11.*x -35;

% Find 3 Locations
[max_n, max_i] = min(y)
max_il = max_i - 1                 % left neighbor of max_ni
max_nl = y(max_il)                 % value at max_il
max_ir = max_i + 1                 % left neighbor of max_ni
max_nr = y(max_ir)                 % value at max_ir

% Solve for coefficients
syms a b c
equ = (a)*(max_i)^2 + (b)*(max_i) + (c) == (max_n);
equ_l = (a)*(max_il)^2 + (b)*(max_il) + (c) == (max_nl);
equ_r = (a)*(max_ir)^2 + (b)*(max_ir) + (c) == (max_nr);

sol = solve([equ, equ_l, equ_r],[a, b, c]);

Sola = sol.a
Solb = sol.b
Solc = sol.c

% New Polynomial
p = (sol.a).*(x).^2 + (sol.b).*(x) +(sol.c);


%Plot
plot(x,y); grid on; hold on;
plot(x, p); 
axis([-10 10 -41 40])
[max_np, max_ip] = min(p)
legend('OG', 'New')

您混淆了数组 y 中的索引和相应的 x 坐标。

x = -10:10;
y = 6.*x.^2 + 11.*x -35;

[max_n, max_i] = min(y)

这里。 max_iy 数组的索引,对应的 x 坐标为 x(max_i).

我建议您找到三个数据点来拟合您的曲线,如下所示:

[~, max_i] = min(y);
pts_x = x(max_i + (-1:1));
pts_y = y(max_i + (-1:1));

然后使用 pts_x(i)pts_y(i) 作为您的 x 和 y 值:

syms a b c
equ = a * pts_x.^2 + b * pts_x + c == pts_y;
sol = solve(equ, [a, b, c]);