x=[0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95];
y=[5 8 11 14 17 20 23 26 29 32 35 38];
z=[51 104 177 267 378 503 645 809 991 1187 1400 1637];
怎样拟合成z关于x,y的函数,万分感谢!!
matlab 两个变量 拟合公式
答案:2 悬赏:0 手机版
解决时间 2021-01-29 08:42
- 提问者网友:姑娘长的好罪过
- 2021-01-28 16:27
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-01-28 17:23
%很奇怪,与x无关?!但是,图形表明有关。
clear
x=[0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95];
y=[5 8 11 14 17 20 23 26 29 32 35 38];
z=[51 104 177 267 378 503 645 809 991 1187 1400 1637];
plot3(x,y,z,'o-')
X=[ones(1,length(x));x;y;x.^2;y.^2;x.*y]';
%X1=sym('[1 x y x.^2 y.^2 x.*y]')
Z=z';
b=regress(Z,X)%b=A\Z
Z1=b(1)*1+b(2)*x+b(3)*y+b(4)*x.^2+b(5)*y.^2+b(6)*x.*y %[X*b]'
Z2=b(1)*1+b(3)*y+b(5)*y.^2
z
error1=Z1-z
error2=X*b-Z
结果:
b =
-1.3718
0
5.3231
0
0.99387
0
ans =
51 50.091 50.091 -0.90934 -0.90934
104 104.82 104.82 0.82093 0.82093
177 177.44 177.44 0.44081 0.44081
267 267.95 267.95 0.9503 0.9503
378 376.35 376.35 -1.6506 -1.6506
503 502.64 502.64 -0.36189 -0.36189
645 646.82 646.82 1.8164 1.8164
809 808.88 808.88 -0.11563 -0.11563
991 988.84 988.84 -2.1581 -2.1581
1187 1186.7 1186.7 -0.31094 -0.31094
1400 1402.4 1402.4 2.4258 2.4258
1637 1636.1 1636.1 -0.9478 -0.9478
即:
z=-1.3718 + 5.3231*y + 0.99387*y^2
怎么与x无关呢?是不是x与y相比,太小了?
clear
x=[0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95];
y=[5 8 11 14 17 20 23 26 29 32 35 38];
z=[51 104 177 267 378 503 645 809 991 1187 1400 1637];
plot3(x,y,z,'o-')
X=[ones(1,length(x));x;y;x.^2;y.^2;x.*y]';
%X1=sym('[1 x y x.^2 y.^2 x.*y]')
Z=z';
b=regress(Z,X)%b=A\Z
Z1=b(1)*1+b(2)*x+b(3)*y+b(4)*x.^2+b(5)*y.^2+b(6)*x.*y %[X*b]'
Z2=b(1)*1+b(3)*y+b(5)*y.^2
z
error1=Z1-z
error2=X*b-Z
结果:
b =
-1.3718
0
5.3231
0
0.99387
0
ans =
51 50.091 50.091 -0.90934 -0.90934
104 104.82 104.82 0.82093 0.82093
177 177.44 177.44 0.44081 0.44081
267 267.95 267.95 0.9503 0.9503
378 376.35 376.35 -1.6506 -1.6506
503 502.64 502.64 -0.36189 -0.36189
645 646.82 646.82 1.8164 1.8164
809 808.88 808.88 -0.11563 -0.11563
991 988.84 988.84 -2.1581 -2.1581
1187 1186.7 1186.7 -0.31094 -0.31094
1400 1402.4 1402.4 2.4258 2.4258
1637 1636.1 1636.1 -0.9478 -0.9478
即:
z=-1.3718 + 5.3231*y + 0.99387*y^2
怎么与x无关呢?是不是x与y相比,太小了?
全部回答
- 1楼网友:轻熟杀无赦
- 2021-01-28 17:29
x1=[10 15 18 21 22 27 30 10 15 18 21 22 27 30 10 15 18 21 22 27 30 10 15 18 21 22 27 30]';
x2=[4604 4604 4604 4604 4604 4604 4604 4000 4000 4000 4000 4000 4000 4000 3000 3000 3000 3000 3000 3000 3000 2000 2000 2000 2000 2000 2000 2000]';
y=[1.9 7.1 13.3 23.1 27.4 58.9 87.6 1.7 6.2 11.7 20.3 24 51.6 51.6 76.8 1.3 4.8 9 15.6 18.4 39.6 58.9 0.9 3.3 6.3 10.9 12.8 27.6]';
e=ones(28,1);
x=[e,x1,x2];
[b,bint,r,rint,stats]=regress(y,x,0.05);
rcoplot(r,rint);
运行后
b =
-18.0636
1.2827
0.0047
所以y = -18.0636 + 1.2827x1 + 0.0047x2;
y好像多了一个值,我把最后一个值41去掉了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯