数据

x、y两组数据,三次拟合得到拟合系数p

p = polyfit(x,y,3);

已知x值求y

y=polyval(p,x);

已知y值求x

1 solve

>> syms x;
>> y=-0.0019*x^2+2.7413*x-109.8133;%我把p的值直接掏出来了
>> x=solve(y==0);
>> x=vpa(x,4)
 
x =
 
  41.24
 1402.0
>> syms x;
>> f=x^2-4-12;
>> solve(f)
 
ans =
 
 -4
  4
 
>> solve(f==0)
 
ans =
 
 -4
  4
 
>> solve(f==1)
 
ans =
 
  17^(1/2)
 -17^(1/2)
 

2 min

方法有点蠢,但勉强能用。先把x生成线性间距列,再从这些列对应的y值里找最接近已知y值的值,比方说已知y=0,求x
如果嫌这个不够精确可以多插值一点x值

x=linspace(1,800,800);
y=polyval(p,x);
>> min(abs(y-0))

ans =

    0.7526

>> [~,ind]=min(abs(y-0))

ind =

    41

>> y=polyval(p,41)

y =

   -0.7526

3 find

>> x=-pi/2:pi/50:pi;
>> y=sin(x); 
>> id=find(y==1);
>> x(id)

ans =

    1.5708

>> y(id)

ans =

     1
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐