求函数表达式,实际问题,请高手帮忙.
X=0.55 Y=0.99
X=0.6 Y=0.98
X=0,65 Y=0.95
X=0.7 Y=0.91
X=0.75 Y=0.86
X=0.8 Y=0.8
X=0.85 Y=0.71
X=0.9 Y=0.6
X=0.925 Y=0.52
X=0.95 Y=0.31
X=0.975 Y=0.1
X=1 Y=0
需要求一个近似的Y关于X的函数,求出Y值误差在5%以内就可以.
请高手帮帮忙.
我试了一下,抛物线肯定是不行的. 展开
matlab代码如下
xy=[0.5 1
0.55 0.99
0.6 0.98
0.65 0.95
0.7 0.91
0.75 0.86
0.8 0.8
0.85 0.71
0.9 0.6
0.925 0.52
0.95 0.31
0.975 0.1
1 0];
x=xy(:,1)
y=xy(:,2)
dx=[0.5:0.01:1];
%figure(1);
subplot(1,2,1);
plot(x,y,'ok','MarkerSize',2);
hold on;
a0=[-0.95 -0.9 0.35];
func1=inline('a(1)*sign(x+a(2)).*(abs(x+a(2))).^(1/3)+a(3)','a','x');
a=nlinfit(x,y,func1,a0);
sprintf('y=%.3f*(x%+.3f)^(1/3)%+.3f\n',a(1),a(2),a(3))
plot(dx,func1(a,dx),'r');
b0=[-1 1 0 0 ];
func2=inline('b(1)*atan(b(2)*x+b(3))+b(4)','b','x');
b=nlinfit(x,y,func2,b0);
sprintf('y=%.3f*atan(%.3f*x%+.3f)%+.3f\n',b(1),b(2),b(3),b(4))
plot(dx,func2(b,dx),'g');
c0=[-1 1 -0.3 0.9 ];
func3=inline('c(1)*tanh(c(2)*x+c(3))+c(4)','c','x');
c=nlinfit(x,y,func3,c0);
sprintf('y=%.3f*tanh(%.3f*x%+.3f)%+.3f\n',c(1),c(2),c(3),c(4))
plot(dx,func3(c,dx),'b');
d0=[0.460 -3.050 1.320];
func4=inline('d(1)./(exp(x)+d(2))+d(3)','d','x');
d=nlinfit(x,y,func4,d0);
sprintf('y=%.3f/(exp(x)%+.3f)%+.3f\n',d(1),d(2),d(3))
plot(dx,func4(d,dx),'c');
grid on;
h1=legend('(x,y)','a1*thirdRoot(x+a2)+a3','b1*atan(b2*x+b3)+b4',...
'c1*tanh(c2*x+c3)+c4','d1/(exp(x)+d2)+d3','Location','SouthWest');
set(h1);
%figure(2);
subplot(1,2,2);
plot(x,y-func1(a,x),'-ro','MarkerSize',4);hold on;
plot(x,y-func2(b,x),'-go','MarkerSize',4);
plot(x,y-func3(c,x),'-bo','MarkerSize',4);
plot(x,y-func4(d,x),'-co','MarkerSize',4);
grid on;
h2=legend('a1*thirdRoot(a2*x+a3)+a4','b1*atan(b2*x+b3)+b4',...
'c1*tanh(c2*x+c3)+c4','d1/(exp(x)+d2)+d3','Location','SouthWest');
set(h2);
运行结果:
y=-0.894*(x-0.950)^(1/3)+0.323
y=-0.613*atan(11.596*x-11.320)+0.140
y=-33.382*tanh(4.354*x-6.431)-32.380
y=0.467/(exp(x)-3.050)+1.357
你做的抛物线是不是这样的啊
好像有7组数据 超过5%了哇
Y²=4X-4X²
根据你的PDF看不出实际数据
我猜测是椭圆 演算 最后2组数据还是有问题