> restart:

> with(linalg):

> with(stats):

> with(plots):

Warning, the protected names norm and trace have been redefined and unprotected

Warning, the name changecoords has been redefined

> with(geom3d):

Warning, the names inverse, polar and transform have been redefined

>

> `plane fit`:=proc(`data matrix`::array,`colum to fit`::integer)

> local `Range data`::array,`STD data`::array,`Coefficients fitted plane`::list,`Deviation fitted plane`::array,Amatrix::array,Bvector::array,ones::array,i::integer,counter_1::integer,counter_2::array,`Output data`::set;

> description "Procedure to fit plane through data set. The INPUT for the procedure is a matrix containing all data, and a integer declaring which colum contains the data against which the plane should be fitted. The OUTPUT is the range and standard deviation of the deviation between the fit and the measured data. The deviation between the fitted plane and the measured values and the coefficients of the fitted plane. Procedure written at 20/1/2003 by Jarl";

>

> ones:=array(1..rowdim(`data matrix`)):for i from 1 to rowdim(`data matrix`) do ones[i]:=1 od:

> Amatrix:=concat(delcols(`data matrix`,`colum to fit`..`colum to fit`),ones):

> Bvector:=col(`data matrix`,`colum to fit`):

> `Coefficients fitted plane`:=leastsqrs(Amatrix,Bvector):

> `Deviation fitted plane`:=array(1..rowdim(`data matrix`)):

>

> counter_2:=array(1..2);

> counter_1:=1:

> for i from 1 to 3 do

> if i <> `colum to fit` then

> counter_2[counter_1]:=i:

> counter_1:=counter_1+1:

> fi:

> od:

>

> for i from 1 to rowdim(`data matrix`) do

> `Deviation fitted plane`[i]:=`data matrix`[i,`colum to fit`]-(`Coefficients fitted plane`[1]*`data matrix`[i,counter_2[1]]+`Coefficients fitted plane`[2]*`data matrix`[i,counter_2[2]]+`Coefficients fitted plane`[3]):

> od:

>

> `Range data`:=describe[range](convert(`Deviation fitted plane`,list)):

> `STD data`:=describe[standarddeviation](convert(`Deviation fitted plane`,list)):

>

> `Output data`:=[`Deviation fitted plane`,`Coefficients fitted plane`,`Range data`,`STD data`]:

> end:

>

>

> `element.data`:=convert(readdata(`element.data.maple.txt`,float,25),array):

> `point.data`:=convert(readdata(`point.data.maple.txt`,float,5),array):

>

> # panel 1 side measurements are elements 89 & 90

> # panel 2 side measurements are elements 95 & 96

> # panel 3 side measurements are elements 102 & 103

> # panel 4 side measurements are elements 109 & 110

>

> # panel 3 measurement Al top side is element 104

>

>

> counter_400_panel_1_1:=1:

> counter_400_panel_2_1:=1:

> counter_400_panel_1_2:=1:

> counter_400_panel_2_2:=1:

> counter_400_panel_1_3:=1:

> counter_400_panel_2_3:=1:

> counter_400_panel_1_4:=1:

> counter_400_panel_2_4:=1:

>

> counter_4000:=1:

>

> `Side 1 panel 1`:=array(1..400,1..4):

> `Side 2 panel 1`:=array(1..400,1..4):

> `Side 1 panel 2`:=array(1..400,1..4):

> `Side 2 panel 2`:=array(1..400,1..4):

> `Side 1 panel 3`:=array(1..400,1..4):

> `Side 2 panel 3`:=array(1..400,1..4):

> `Side 1 panel 4`:=array(1..400,1..4):

> `Side 2 panel 4`:=array(1..400,1..4):

>

> `Al side panel 3`:=array(1..4000,1..3):

>

> for i from 1 to rowdim(`point.data`) do

> if `point.data`[i,1] = 89 then

> for j from 1 to 3 do

> `Side 1 panel 1`[counter_400_panel_1_1,j]:=`point.data`[i,j+2]:

> od:

> `Side 1 panel 1`[counter_400_panel_1_1,4]:=`point.data`[i,2]:

> counter_400_panel_1_1:=counter_400_panel_1_1+1:

> fi:

>

> if `point.data`[i,1] = 90 then

> for j from 1 to 3 do

> `Side 2 panel 1`[counter_400_panel_2_1,j]:=`point.data`[i,j+2]:

> od:

> `Side 2 panel 1`[counter_400_panel_2_1,4]:=`point.data`[i,2]:

> counter_400_panel_2_1:=counter_400_panel_2_1+1:

> fi:

>

> if `point.data`[i,1] = 95 then

> for j from 1 to 3 do

> `Side 1 panel 2`[counter_400_panel_1_2,j]:=`point.data`[i,j+2]:

> od:

> `Side 1 panel 2`[counter_400_panel_1_2,4]:=`point.data`[i,2]:

> counter_400_panel_1_2:=counter_400_panel_1_2+1:

> fi:

>

> if `point.data`[i,1] = 96 then

> for j from 1 to 3 do

> `Side 2 panel 2`[counter_400_panel_2_2,j]:=`point.data`[i,j+2]:

> od:

> `Side 2 panel 2`[counter_400_panel_2_2,4]:=`point.data`[i,2]:

> counter_400_panel_2_2:=counter_400_panel_2_2+1:

> fi:

>

> if `point.data`[i,1] = 102 then

> for j from 1 to 3 do

> `Side 1 panel 3`[counter_400_panel_1_3,j]:=`point.data`[i,j+2]:

> od:

> `Side 1 panel 3`[counter_400_panel_1_3,4]:=`point.data`[i,2]:

> counter_400_panel_1_3:=counter_400_panel_1_3+1:

> fi:

>

> if `point.data`[i,1] = 103 then

> for j from 1 to 3 do

> `Side 2 panel 3`[counter_400_panel_2_3,j]:=`point.data`[i,j+2]:

> od:

>

> `Side 2 panel 3`[counter_400_panel_2_3,4]:=`point.data`[i,2]:

> counter_400_panel_2_3:=counter_400_panel_2_3+1:

> fi:

>

> if `point.data`[i,1] = 109 then

> for j from 1 to 3 do

> `Side 1 panel 4`[counter_400_panel_1_4,j]:=`point.data`[i,j+2]:

> od:

> `Side 1 panel 4`[counter_400_panel_1_4,4]:=`point.data`[i,2]:

> counter_400_panel_1_4:=counter_400_panel_1_4+1:

> fi:

>

> if `point.data`[i,1] = 110 then

> for j from 1 to 3 do

> `Side 2 panel 4`[counter_400_panel_2_4,j]:=`point.data`[i,j+2]:

> od:

> `Side 2 panel 4`[counter_400_panel_2_4,4]:=`point.data`[i,2]:

> counter_400_panel_2_4:=counter_400_panel_2_4+1:

> fi:

>

> if `point.data`[i,1] = 104 then

> for j from 1 to 3 do

> `Al side panel 3`[counter_4000,j]:=`point.data`[i,j+2]:

> od:

> counter_4000:=counter_4000+1:

> fi:

>

> od:

>

> `side 1 panel 1`:=array(1..400,1..3):

> `side 2 panel 1`:=array(1..400,1..3):

> `side 1 panel 2`:=array(1..400,1..3):

> `side 2 panel 2`:=array(1..400,1..3):

> `side 1 panel 3`:=array(1..400,1..3):

> `side 2 panel 3`:=array(1..400,1..3):

> `side 1 panel 4`:=array(1..400,1..3):

> `side 2 panel 4`:=array(1..400,1..3):

>

> for i from 1 to 400 do

> for j from 1 to 400 do

> if `Side 1 panel 1`[j,4] = i then

> for k from 1 to 3 do

> `side 1 panel 1`[i,k]:=`Side 1 panel 1`[j,k]:

> od:

> fi:

>

> if `Side 2 panel 1`[j,4] = i then

> for k from 1 to 3 do

> `side 2 panel 1`[i,k]:=`Side 2 panel 1`[j,k]:

> od:

> fi:

>

> if `Side 1 panel 2`[j,4] = i then

> for k from 1 to 3 do

> `side 1 panel 2`[i,k]:=`Side 1 panel 2`[j,k]:

> od:

> fi:

>

> if `Side 2 panel 2`[j,4] = i then

> for k from 1 to 3 do

> `side 2 panel 2`[i,k]:=`Side 2 panel 2`[j,k]:

> od:

> fi:

>

> if `Side 1 panel 3`[j,4] = i then

> for k from 1 to 3 do

> `side 1 panel 3`[i,k]:=`Side 1 panel 3`[j,k]:

> od:

> fi:

>

> if `Side 2 panel 3`[j,4] = i then

> for k from 1 to 3 do

> `side 2 panel 3`[i,k]:=`Side 2 panel 3`[j,k]:

> od:

> fi:

>

> if `Side 1 panel 4`[j,4] = i then

> for k from 1 to 3 do

> `side 1 panel 4`[i,k]:=`Side 1 panel 4`[j,k]:

> od:

> fi:

>

> if `Side 2 panel 4`[j,4] = i then

> for k from 1 to 3 do

> `side 2 panel 4`[i,k]:=`Side 2 panel 4`[j,k]:

> od:

> fi:

>

> od:

> od:

>

>