数据
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