RE: Combine Export and Local variables?
Does anyone has an idea why the program crasher mid way with error
Invalid input INPUT({ff7,gg7},"Input test", {"Prekobrojnost","Sredina"});
Code:
//PROGRAM START
LOCAL Nn1,Uu1,Qq1,Dd1,Vv1,Vv2,Kk1,Kk2;
LOCAL Kk3,Ff1,Ss0,Xx1,Cc1,Cc2,Cc3,Qq3;
LOCAL Qq2,Qq4,Pm1,Sx1;
EXPORT function1 ()
BEGIN
LOCAL ff7,gg7;
INPUT({ff7,gg7},"Input test", {"Prekobrojnost","Sredina"});
Nn1:=TRN(M1)*M2*M1;
Uu1:=TRN(M1)*M2*M3;
Qq1:=inv(Nn1);
Dd1:=-(Qq1*Uu1);
Vv1:=(M1*Dd1)+M3;
Vv2:=TRN(Vv1)*M2*Vv1;
//K1 - kontrola 1.) popravaka treba biti =0
Kk1:=TRN(M1)*M2*Vv1;
//K2 - Kontrola 2.) izjedacenja treba biti = lambdi
Kk2:=TRN(M3)*M2*Vv1;
Ff1:=Vv2/(ff7);
Ss0:=SQRT(Ff1(1,1));
Xx1:=gg7+Dd1(1,1);
// Popravljena mjerenja su pojedinacna l1,l2,l3...+ matrica V1;
Kk3:=M1*Xx1;
Pm1:=M4+Vv1;
///Stohasticki dio
Cc1:=Ff1(1,1)*Qq1;
Sx1:=SQRT(Cc1(1,1));
// Deviacija mjerenja tako sto uzmemo korjen od Cx
Cc2:=Ff1(1,1)*inv(M2);
//C2 - tacnost mjerenja
// srednje greske izvucem iz cl matrice korjen(dijagonalnih)
Qq2:=M1*Qq1*TRN(M1);
Cc3:=Qq2*Ff1(1,1);
///Srednje greške popravljenih korjen dijagonale clanova C3
Qq3:=inv(M2)-Qq2;
Qq4:=Ff1(1,1)*Qq3;
/// ISPISI MATRICA
EDITMAT(Nn1,"Matrica Normalnih jednacina");
EDITMAT(Uu1,"u=trn(A)*P*w");
EDITMAT(Qq1,"Kofaktorna matrica");
EDITMAT(Dd1,"vektor popravaka nepoznatih");
EDITMAT(Vv1,"vektor popravaka mjerenja");
EDITMAT(Vv2,"omega=VT*P*V" );
EDITMAT(Ff1,"s0^2=omega/prekobrojnost");
EDITMAT(Ss0,"s0");
EDITMAT(Xx1,"xdef poravljene nepoznate (x0+delta");
EDITMAT(Pm1,"Popravljena mjerenja ldef");
EDITMAT(Kk1,"1.Kontrola treba=~0");
EDITMAT(Kk2,"2.Kontrola treba= omega");
EDITMAT(Kk3,"3.Kontrola treba= popravljenim mjerenjima");
EDITMAT(Cc1,"Cx");
EDITMAT(Sx1,"Sx -srednja greska izracunata");
EDITMAT(Cc2,"Cl - tacnost mjerenja");
EDITMAT(Qq2,"Ql_kapa ");
EDITMAT(Qq3,"Qv");
EDITMAT(Cc3,"Cv-Srednje greske popravak sqrt diag");
PRINT("Kontrola K1 =0"+Kk1);
IF (K2=V2) THEN PRINT ("Kontrola 2 OK!");
PRINT("Kontrola K2"+Kk2);
PRINT("------------------------------");
PRINT("Kontrola K3"+Kk3);
END;
END;
Program crashes at Ss0, when viewing matrix via EDITMAT
ff77=5
gg77=8.6667
EDIT- Some values wern't matrices
Code:
//PROGRAM START
LOCAL Nn1,Uu1,Qq1,Dd1,Vv1,Vv2,Kk1,Kk2;
LOCAL Kk3,Ff1,Ss0,Xx1,Cc1,Cc2,Cc3,Qq3;
LOCAL Qq2,Qq4,Pm1,Sx1;
EXPORT function1 ()
BEGIN
LOCAL ff7,gg7;
INPUT({ff7,gg7},"Input test", {"Prekobrojnost","Sredina"});
Nn1:=TRN(M1)*M2*M1;
Uu1:=TRN(M1)*M2*M3;
Qq1:=inv(Nn1);
Dd1:=-(Qq1*Uu1);
Vv1:=(M1*Dd1)+M3;
Vv2:=TRN(Vv1)*M2*Vv1;
//K1 - kontrola 1.) popravaka treba biti =0
Kk1:=TRN(M1)*M2*Vv1;
//K2 - Kontrola 2.) izjedacenja treba biti = lambdi
Kk2:=TRN(M3)*M2*Vv1;
Ff1:=Vv2/(ff7);
Ss0:=SQRT(Ff1(1,1));
Xx1:=gg7+Dd1;
// Popravljena mjerenja su pojedinacna l1,l2,l3...+ matrica V1;
Kk3:=M1*Xx1;
Pm1:=M4+Vv1;
///Stohasticki dio
Cc1:=Ff1(1,1)*Qq1;
Sx1:=SQRT(Cc1(1,1));
// Deviacija mjerenja tako sto uzmemo korjen od Cx
Cc2:=Ff1(1,1)*inv(M2);
//C2 - tacnost mjerenja
// srednje greske izvucem iz cl matrice korjen(dijagonalnih)
Qq2:=M1*Qq1*TRN(M1);
Cc3:=Qq2*Ff1(1,1);
///Srednje greške popravljenih korjen dijagonale clanova C3
Qq3:=inv(M2)-Qq2;
Qq4:=Ff1(1,1)*Qq3;
/// ISPISI MATRICA
EDITMAT(Nn1,"Matrica Normalnih jednacina");
EDITMAT(Uu1,"u=trn(A)*P*w");
EDITMAT(Qq1,"Kofaktorna matrica");
EDITMAT(Dd1,"vektor popravaka nepoznatih");
EDITMAT(Vv1,"vektor popravaka mjerenja");
EDITMAT(Vv2,"omega=VT*P*V" );
EDITMAT(Ff1,"s0^2=omega/prekobrojnost");
//EDITMAT(Ss0,"s0");
//EDITMAT(Xx1,"xdef poravljene nepoznate (x0+delta");
EDITMAT(Pm1,"Popravljena mjerenja ldef");
EDITMAT(Kk1,"1.Kontrola treba=~0");
EDITMAT(Kk2,"2.Kontrola treba= omega");
EDITMAT(Kk3,"3.Kontrola treba= popravljenim mjerenjima");
EDITMAT(Cc1,"Cx");
///EDITMAT(Sx1,"Sx -srednja greska izracunata");
EDITMAT(Cc2,"Cl - tacnost mjerenja");
EDITMAT(Qq2,"Ql_kapa ");
EDITMAT(Qq3,"Qv");
EDITMAT(Cc3,"Cv-Srednje greske popravak sqrt diag");
PRINT("Kontrola K2"+Kk2);
PRINT("------------------------------");
PRINT("Kontrola K3"+Kk3);
PRINT("S0="+Ss0);
PRINT("Xdef. popravljene nepoznate (x0+delta)"+Xx1);
PRINT("Sx-srednja greska izracunata"+Sx1);
PRINT("Kontrola K1 =0"+Kk1);
IF (K2=V2) THEN PRINT ("Kontrola 2 OK!");
END;
END;
Now it works
|