Deinen Latex Code habe ich wie folgt verstanden:
Du multiplizierst jedes Element in der Matrix ul mit dem Wert vl und addierst es auf und dann ziehst du die summe ab von a. Stimmt das?
Ich habe ein Beispiel gemacht:
ul = [1, 2, 3; 4, 5, 6; 7, 8, 9];
vl = 2;
l = size(ul);
i=1:l(1)*l(2);
x = sum(ul(i)*vl);
Jep, so etwa, wobei u_l, v_l zwei Vektoren sind. Der "l" bei u_l heißt "l"-te Spalte, bei v_l andersrum, "l"-te Zeile.
Also jede Multiplikation u(i)*v heißt eigentlich: u_l(i) die l-te Spalte von u an der Spaltenstelle i(also ein Zahl, da hast du völlig recht) mal v_l also der l-te Zeile. Der Indexzahl i wird bei der while-environment bestimmt und spielt hier keine große Rolle. Eigentlich ist das Problem, dass bei jeder while-Iteration(äußerste Schleife) werden neue u_k, v_k ausgerechnet, und hierfür gespeichert werden. Deshalb denke ich, obwohl auf Paper u,v überhaupt nicht zu speichern brauchen, die sollen durch solche for-schleife automatisch ausgerechnet sein, speicher ich die Vektoren in Matrixform u(:,l) und v(l,:). Spalte u_5 kommt zb. in der 5. Spalte in der Matrix u rein rein, Zeile v_3 in der 3. Zeile der Matrix v rein. Nun ist aber das Problem wie speicher ich solche Matrizen? Lade hier mein bisherigen Code hoch und hoffe ihr könnt mir dabei hlefen.
function [ A3 ] = A3(M,erf)
tic;
n=length(M(:,1));
P=[];
k=1;
i=1;
u=0*M(:,i);
v=0*M(i,:);
while norm(M(i,:))<10^(-13)
i=i+1
end
while k <= n
a=M(i,:);
add=0;
temp=k;
while temp >= 1
add=add + u(i,temp)*v(temp,:);
temp=temp-1 ;
end
a=a-add;
P=union(P,i);
if norm(a)>10^(-13) [c,j]=max(abs(a));
v(k,:)=1/c*a;
u(:,k)=M( ...
↧