happypp 发表于 2009-12-24 17:05

请高手指点迷津:帮忙求解一个方程,急急急

各位高手你们好,想向大家请教一个数学问题,我不是学数学的,但是在求解问题中遇到这样的一个问题,还请高手能指点迷津,我要解这样的一个方程:y1=k1(x1+a1*x2-a2*x3); 其中y1,x1,x2,x3是随着a1,a2变化而变化的量,现在我已经测出y1,x1,x2,x3随着a1,a2变化的一组数据,现在我需要求出参数k1,但是我觉得k1并不是一个常数,我觉得k1应该是关于a1,a2的一个函数,但是我不知道用什么方法求出k1,还请各位高手指教,多谢了,其中y1,x1,x2,x3,a1,a2的数据如下:
y1x1x2x3a1a2129133.992827.99629.66660.20.4128133.992827.996210.00210.20.8131133.992836.99619.66660.40.4129133.992836.996110.00210.40.8133133.992842.32999.66660.60.4130133.992842.329910.00210.60.8132133.992845.99789.66660.80.4131133.992845.997810.00210.80.8135133.9928509.666610.4132133.99285010.002110.8152156.050427.99629.66660.20.4151156.050427.996210.00210.20.8153156.050436.99619.66660.40.4153156.050436.996110.00210.40.8154156.050442.32999.66660.60.4152156.050442.329910.00210.60.8154156.050445.99789.66660.80.4154156.050445.997810.00210.80.8155156.0504509.666610.4155156.05045010.002110.8

ChaChing 发表于 2009-12-26 00:45

???
y1=aaa(:,1); x1=aaa(:,2); x2=aaa(:,3); x3=aaa(:,4); a1=aaa(:,5); a2=aaa(:,6);
kk=y1./(x1+a1.*x2-a2.*x3); aa=; sol=aa\kk; kkk=aa*sol;
plot3(a1,a2,kk,'o',a1,a2,kkk,'rx')

VibrationMaster 发表于 2009-12-26 09:53

他只希望得到一个数,好往论文或报告上放,是否懂大概他不想知道

ChaChing 发表于 2009-12-26 11:29

回复 板凳 VibrationMaster 的帖子

唉, 不管那里, 这种现象好像愈来愈严重!?
希望大家能尽可能不要如此!

happypp 发表于 2009-12-29 16:13

不是的,冤枉我了

大家误解了,我不是想得到一个数,只是想要一个思路,因为再做下去我不知道如何下手了,我想大家能提醒一下用什么方法可以解决这个方法

happypp 发表于 2009-12-29 16:20

ChaChing你好,你写得我看不太懂,你能告诉我用什么方法解决吗?我可以搜一个关于这个方法的介绍,学习一下,我并不是想要一个答案然后放到论文里,我是想让大家给我一个思路,大家误解我了:'( :'(

ChaChing 发表于 2009-12-29 16:42

最小二乘方误差(least square)或曲线拟合(curve fit)!
名称或许不太相同

happypp 发表于 2009-12-29 20:56

嗯,好的,我查查相关资料,谢谢你啦

ChaChing 发表于 2009-12-29 21:16

回复 8楼 happypp 的帖子

早上忘了说, 其实LZ的数据怪怪的!?
方程k1=y/(x1+a1*x2-a2*x3)中, 相同a1/a2其k1并不相同?
也许k1不仅是关于a1,a2的一个函数!?

[ 本帖最后由 ChaChing 于 2009-12-29 21:18 编辑 ]

VibrationMaster 发表于 2009-12-30 08:22

XX=[
129 133.9928 27.9962 9.6666 0.2 0.4;...
128 133.9928 27.9962 10.0021 0.2 0.8;...
131 133.9928 36.9961 9.6666 0.4 0.4;...
129 133.9928 36.9961 10.0021 0.4 0.8;...
133 133.9928 42.3299 9.6666 0.6 0.4;...
130 133.9928 42.3299 10.0021 0.6 0.8;...
132 133.9928 45.9978 9.6666 0.8 0.4;...
131 133.9928 45.9978 10.0021 0.8 0.8;...
135 133.9928 50 9.6666 1 0.4;...
132 133.9928 50 10.0021 1 0.8;...
152 156.0504 27.9962 9.6666 0.2 0.4;...
151 156.0504 27.9962 10.0021 0.2 0.8;...
153 156.0504 36.9961 9.6666 0.4 0.4;...
153 156.0504 36.9961 10.0021 0.4 0.8;...
154 156.0504 42.3299 9.6666 0.6 0.4;...
152 156.0504 42.3299 10.0021 0.6 0.8;...
154 156.0504 45.9978 9.6666 0.8 0.4;...
154 156.0504 45.9978 10.0021 0.8 0.8;...
155 156.0504 50 9.6666 1 0.4;...
155 156.0504 50 10.0021 1 0.8 ]; %各列分别代表y1 x1 x2 x3 a1 a2

% 先计算出各批的k1
K1=(XX(:,2)+XX(:,5).*XX(:,3)-XX(:,6).*XX(:,4))./XX(:,1);% 计算k1=y1/(x1+a1*a2-a2*x3);

%非参数法考察k1与a1与a2的关系--通过画图观察
scater3(XX(:,5),XX(:,6),K1);
%用鼠标或转动上述图形,可以发现:1;图形聚集在两条线附近。这是因为你的a2只有两个变化值
%为了更有把握一些,画下面图图形

scatter(XX(:,5),K1);%这幅图验证k1随a1线性变化

scatter(XX(:,6),K1);%仅有两列看不出变化规律,应该补更多的数据
%但是作为最简单的假定,我们假定K1是随a2线性变化的。

%根据上面的非参数考察结果,我们的参数化模型建立为
% k1=c1*a1+c2*a2+c3
% 下面来计算c1,c2,c3
% 采用最小二乘法计算

AM=)]; %组集数据矩阵

%最小二乘
CV=(AM'*AM)^(-1)*(AM'*K1); %解出系数向量了

%c1=CV(1)=0.3511; 表明k1随a1变化显著
%c2=CV92)=-0.0450;表明k1几乎不随a2变化;特别是只有两个变化值。除非有特别理由,应该认为k1不随a2变化;若坚持认为,则应加数据
%c3=0.9814,静态偏移量

%再检查一下拟合效果
scatter3(XX(:,5),XX(:,6),K1);
%用于计算拟合结果的a1,a2值;
= meshgrid(min(XX(:,5))-0.2:0.1:max(XX(:,5))+0.2,min(XX(:,6))-0.2:0.1:max(XX(:,6))+0.2);
KVF=a1V*CV(1)+a2V*CV(2)+CV(3);%拟合结果
hold on
mesh(a1V,a2V,KVF); %旋转图形,看看数据在拟合面的聚集程度;结果蛮好的

%结束语
%1. k1随a1线性变化
%2. 现有的数据不足以支持k1随a2的变化关系。需要补充更多的数据
%3. 删除a2的关系,自己重新计算,比较一下
%4. 严格地应该用统计检验。自学一下吧,估计短期之内也不容易掌握
%5. 答辩时候不要忘记致谢我

happypp 发表于 2009-12-30 08:49

嗯,谢谢了,受益匪浅,我再做做试试,可能我建立的模型有问题,我再做做看,多谢你的指教:@)

ChaChing 发表于 2009-12-30 23:36

两个小笔误!
1.K1=XX(:,1)./(XX(:,2)+XX(:,5).*XX(:,3)-XX(:,6).*XX(:,4));% 计算k1=y1/(x1+a1*a2-a2*x3);
2.scatter3(XX(:,5),XX(:,6),K1);
所以算出的CV与我2F的sol不同! sol =[-0.2592;0.0347;0.9995]
页: [1]
查看完整版本: 请高手指点迷津:帮忙求解一个方程,急急急