一道matlab题目

2025-03-22 22:26:01
推荐回答(2个)
回答(1):

首先说一下,做曲线拟合最重要的是数据,拟合的第一步是描出点看看大概像什么函数然后第二步才是来计算函数的系数,所以你的数据我就不用了,附上我的一个拟合的程序给你吧。
x=[3900 466167 928435 1390702 1852970];
y=[1.6416 1.5229 1.4445 1.2333 1.2553];
figure(1);
plot(x,y,'r*'),
legend('实验数据(xi,yi)')
xlabel('x'), ylabel('y'),
title('压强与45钢与铸铁接触热阻');
%描出点后觉得很像二次曲线,故拟合曲线为&(x)=c0+c1x+c2x*x
%C=[c0;c1;c2]为系数
AT=[1 1 1 1 1;
3900 466167 928435 1390702 1852970;
15210000 217311671889 861991549225 1934052052804 3433497820900];
%E=A';
q=y';
%AT*A*C=AT*y;
B=AT*q;
D=AT*AT';
C=inv(D)*B;
%求出系数为C0 =1.65444365651371;
%C1=-3.22013431505201e-007;C2=4.9671263887356e-014
t=1:1852970;%数据的变化范围,步长默认为1
p=1.65444365651371+-3.22013431505201e-007*t+4.9671263887356e-014*t.*t;
figure(2);
plot(t,p,'b'), legend('拟合曲线'),title('压强与45钢与铸铁接触热阻');
具体方法可以参看数值分析的第三章

回答(2):

p=polyfit(x,y,3)
yi=polyval(p,x)
plot(x,yi,'o')