请教matlab高手

来源:百度知道 编辑:UC知道 时间:2024/06/15 08:55:53
x=[20,18,16,14,12,10,8,6,4,2,0,-2,-4,-6,-8,-10,-12,-14,-16,-18,-20];
y=[-0.98106,-0.88756,-0.79372,-0.68870,-0.60286,-0.50582,-0.40675,-0.30274,-0.20746,-0.1072,-0.0034,0.10462,0.1979,0.3017,0.40362,0.50412,0.60321,0.70614,0.80749,0.91196,1.0157];
1,拟合出这条曲线方程,给出编程程序及方法,
2,求出这条曲线的反函数,给出程序及方法
3,根据这条曲线及它的反函数用最小二乘法拟合出一条直线,给出直线的斜率,给出程序及方法

会其中之一也可以,每个问题30分,三个一起答对给100
wacs5 感谢你的回答
1中的曲线我想X的次方为4以内含4,为y=x(1-4次方各阶和)
其反函数也是一样
问题3中要的是1,2中的函数用最小二乘拟合出来,1,2的函数没有,可得出3得直线方程吗?我用matlab拟合了一下你给的程序,感觉不是一条直线,而只是将各个坐标相连而已

我加了,出现这个问题:
Using Toolbox Path Cache. Type "help toolbox_path_cache" for more info.

To get started, select "MATLAB Help" from the Help menu.

The element type "name" must be terminated by the matching end-tag "</name>".
Could not parse D:\安装后文件\matlab\toolbox\rtw\targets\osek\osek\info.xml
error_msg : map

1、2问题觉得你可能没有问好。已经n个点的坐标。你想要曲线方程,至少得说明一下曲线方程的形式如何

3问:
x=[20,18,16,14,12,10,8,6,4,2,0,-2,-4,-6,-8,-10,-12,-14,-16,-18,-20];
y=[-0.98106,-0.88756,-0.79372,-0.68870,-0.60286,-0.50582,-0.40675,-0.30274,-0.20746,-0.1072,-0.0034,0.10462,0.1979,0.3017,0.40362,0.50412,0.60321,0.70614,0.80749,0.91196,1.0157];
A=[x;ones(size(x))]';
c=A\y';
a=c(2);
k=c(1);
yy=a+k*x;
plot(x,y,'r*',x,yy)

k为斜率,上述做的图,红点为你的数据点,线为拟合的直线。

1问:
p=polyfit(x,y,4);
y1=polyval(p,x);
vpa(poly2sym(p),10)
plot(x,y,'r*',x,y1)

2问:
pp=polyfit(y,x,4);
x1=polyval(pp,y);
subs(vpa(poly2sym(pp),10),'x','y')
plot(x,y,'r*',x1,y)

3.那个是拟合的结果。不信的话,你把里面的一个y改成相差很大试一下。
你的数据实际上应当就是直线。

在1.2问的前面要加上。
x=[20,18,16,14,12,10,8,6,4,2,0,-2,-4,-6,-8,-10,-12,-14,-16,-18,-20];
y=[-0.98106,-0.88756,-0.79372,-0.68870,-0.60286,-0.50582,-0.4067