Bonjour,
Quelqu’un sur ce forum a t-il une connaissance des classes matrices qui constituent le Matrix plugin de Robert M. Delaney ?
les diffrentes fonctions, createMatrix, Transpose, Inverse, dterminant, … fonctionnent trs bien, sauf que je n’arrive pas les faire intgrer
dans une boucle For-next.
Un petit bout de code pourrait aider…
Oui Eric, je voulais savoir si quelqu’un a dj eu connaissance et utilis le Matrix plugin.
Donc, la fonction Kaplan retourne la Matrice YMat().
[code]
Call Astropos.Kaplan(T(),t0,DEC(),GHA(),Ho(),phi0,lambda0,Spd,Crs,dh(),YVMat(),Hc(),Phi(),Lambda())
//xnr=8
//xnc=4
dim x(99),y(99),z(99),u(99)v(99)w(99) as Matrix
//mise en string de la matrice pour la construire avec: CreateMatrix(nrl,nrc,inpuStrx())
for i=1 to 8
inputStrx(i) =str(str(YVMat(i).element(0,0)) +","+ str(YVMat(i).element(0,1)) +","+ str(YVMat(i).element(0,2)) +","+str(YVMat(i).element(0,3)))
next
for i=1 to 8
x(i)=createMatrix(i,4,inputStrx(i))
//V(i) etant la transpose de x(i)
v(i)=Transpose(x(i))
//Calcul de la pseudo-inverse
//z=Inverse(w)
if xnr > xnc then
w(i)= v(i)* x(i)
y(i)=Inverse(w(i))
z(i) =y(i) * v(i)
elseIf xnr < xnc then
w(i) = x(i) * v(i)
y(i)= Inverse(w(i))
z(i)=v(i)*y(i)
else
z(i)= Inverse(x(i))
end if
//Affiche la matrice z tant la pinv (x(i))
system.debuglog str(z(i).element(0,0)) + " "+str(z(i).element(1,0)) + " "+ str(z(i).element(2,0)) + " "+ str(z(i).element(3,0))
next[/code] voil le code :
OK. Quel est le problme ?
en suivant pas a pas, la matrice X(i) 8lignes 4Colonnes est construite, ensuite v(i) le transpose de x(i) ne marche pas,
ainsi que le reste.
x() :
-1.000365 0.005593 0.019545 0.001069
-0.131149 0.681051 0.035242 0.000380
-0.157199 -0.671266 -0.038110 -0.000144
-0.605121 0.547327 0.038907 0.000280
-0.915347 0.284959 0.022824 0.000078
0.916041 0.256431 0.018853 -0.000023
0.326323 -0.639233 -0.051054 0.000005
-0.469115 -0.583770 -0.048302 -0.000001
v(): Transpose(x)
-1.000365 -0.131149 -0.157199 -0.605121 -0.915347 0.916041 0.326323 -0.469115
0.005593 0.681051 -0.671266 0.547327 0.284959 0.256431 -0.639233 -0.583770
0.019545 0.035242 -0.038110 0.038907 0.022824 0.018853 -0.051054 -0.048302
0.001069 0.000380 -0.000144 0.000280 0.000078 -0.000023 0.000005 -0.000001
A la fin je dois avoir ce rsultat, c'est a dire la pseudo inverse de x()
z():
0.066166 0.030828 -0.080985 -0.190480 -0.414833 0.434123 0.162367 -0.238459
-0.992942 2.047177 -1.205418 0.357420 -0.046039 -0.477661 0.843079 1.231527
11.990569 -27.370418 13.802430 -1.594819 3.563828 8.713523 -18.536279 -23.318423
762.417109 544.039587 -238.421106 -60.957723 -462.859851 263.200374 531.088852 167.137515
J’ai pos le problme a Mr Bob Delaney qui a bien voulu me rpondre en me proposant de mettre: x(i)=New Matrix(i,4,inputStrx(i))
a la place de x(i)=createMatrix(i,4,inputStrx(i)) qui d’aprs lui rglerai le problme, en vain.