求助 帮我看看这个程序
function y=ls(c1,c2,c3,c4,x0,y0)syms a1 a2
c1=0.2071;
c2=0.2056;
c3=0.4111;
c4=0.1035;
x0=0.2070;
y0=0.2060;
f1=a1;
f2=a2;
f3=a1+a2;
f4=a1*a2/(a1+a2);
af1=diff(f1,a1);%函数求偏导
bf1=diff(f1,a2);
af2=diff(f2,a1);
bf2=diff(f2,a2);
af3=diff(f3,a1);
bf3=diff(f3,a2);
af4=diff(f4,a1);
bf4=diff(f4,a2);
a1=c1;
a2=c2;
l1=c1-x0;
l2=c2-y0;
l3=c3-(x0+y0);
l4=c4-(x0*y0/(x0+y0));
aa=af1*af2+af1*af3+af2*af3+af1*af4+af2*af4+af3*af4;%构建正规方程
al=af1*l1+af2*l2+af3*l3+af4*l4;
ab=af1*bf1+af2*bf2+af3*bf3+af4*bf4;
bb=bf1*bf2+bf1*bf3+bf2*bf3+bf1*bf4+bf2*bf4+bf3*bf4;
bl=bf1*l1+bf2*l2+bf3*l3+bf4*l4;
A=;%由正规方程得到矩阵
B=;
C=;
D=det(A);%得到矩阵的行列式
D1=det(B);
D2=det(C);
x=D1/D;
y=D2/D;
C1=x0+x;%C1,C2为估计出的最可信赖值
C2=y0+y;
PC1=D/bb ;%下面计算方差
PC2=D/aa;
v1=c1-C1;
v2=c2-C2;
v3=c3-(C1+C2);
v4=c4-(C1*C2/(C1+C2));
v=v1^2+v2^2+v3^2+v4^2;
e=sqrt(v/(4-2));
ec1=e/sqrt(PC1);
ec2=e/sqrt(PC2);
C1%函数输出
C2
ec1
ec2
为什么给a1和a2赋值后偏导数的值仍然是表达式而不是常数,最后结果也是表达式,求助~~~~~
回复 楼主 247429745 的帖子
doc subs替换表达式的值 因为a1,a2已经指定为符号变量,所以无法改变!help eval
输出改为C1=eval(C1);C2=eval(C2);ec1=eval(ec1);ec2=eval(ec2);把程序第一行删掉后就会出结果了,不然会出错的!
建议看看教程!
[ 本帖最后由 wdecai 于 2009-1-21 11:34 编辑 ]
页:
[1]