Matlab:绘制 y 值范围的三次函数
Matlab: plot Cubic function for range of y values
我有一个三次方程:
roots([9E-10 -2E-06 0.0014 0.039])
我正在尝试为 0.0 到 0.5 的 y 值绘制方程(我知道给出的 x 值在 0 到 700 的范围内。(即方程已适合此数据)
r=0.0039-y; %where y ranges from 0.0 to 0.5
[eqnroots]=roots([9E-10 -2E-06 0.0014 r])
我找到真正的根使用
isreal(eqnroots(n));
然后绘制方程式,但它没有给出正确的 x/y 范围并且拟合看起来不对。
roots
函数仅产生多项式方程的根。要为给定的一组 x 值生成所有 y 值,您需要使用 polyval
.
试试这个:
% Polynomial coefficients
p = [9E-10 -2E-06 0.0014 0.039];
% Generate y-values for x-range we are interested in
x = -270:0.1:1350;
y = polyval(p,x);
% Find roots of the polynomial.
% Select any where the imaginary component is negligible, i.e. it is real.
% As it's a root, the corresponding y-value will be 0.
xroot = roots(p);
xroot = xroot(abs(imag(xroot)) < 1e-10);
yroot = zeros(size(xroot));
% Plot the polynomial and its real roots.
figure;
hold on
plot(x,y, 'b')
plot(xroot,yroot, 'rx')
这给出了以下情节:
我有一个三次方程:
roots([9E-10 -2E-06 0.0014 0.039])
我正在尝试为 0.0 到 0.5 的 y 值绘制方程(我知道给出的 x 值在 0 到 700 的范围内。(即方程已适合此数据)
r=0.0039-y; %where y ranges from 0.0 to 0.5
[eqnroots]=roots([9E-10 -2E-06 0.0014 r])
我找到真正的根使用
isreal(eqnroots(n));
然后绘制方程式,但它没有给出正确的 x/y 范围并且拟合看起来不对。
roots
函数仅产生多项式方程的根。要为给定的一组 x 值生成所有 y 值,您需要使用 polyval
.
试试这个:
% Polynomial coefficients
p = [9E-10 -2E-06 0.0014 0.039];
% Generate y-values for x-range we are interested in
x = -270:0.1:1350;
y = polyval(p,x);
% Find roots of the polynomial.
% Select any where the imaginary component is negligible, i.e. it is real.
% As it's a root, the corresponding y-value will be 0.
xroot = roots(p);
xroot = xroot(abs(imag(xroot)) < 1e-10);
yroot = zeros(size(xroot));
% Plot the polynomial and its real roots.
figure;
hold on
plot(x,y, 'b')
plot(xroot,yroot, 'rx')
这给出了以下情节: