2015-12-01 32 views
0

我有一个三次方程:Matlab的:用于Y的范围曲线三次函数值

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范围和适合看起来错误。

回答

3

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') 

这给出了以下情节:

enter image description here