//////// Aufgabe 3, Teil 1 // Gitter erzeugen t=[0:100]/100*2*3.14159; // Vektoren f1vec und f2vec erzeugen. f1vec=(2+cos(t)).*sin(2*t); f2vec=(2+cos(t)).*cos(2*t); // (die Funktionen sin, cos wirken auch einzeln auf jedes Vektorelement, // ebenso wie das elementweise Multiplizieren mit ".*" statt der // normalen Matrixmultiplikation "*" ) //// dies geht alternativ auch mit einer Schleife: for i=1:length(t) f1vec(i)=(2+cos(t(i)))*sin(2*t(i)); f2vec(i)=(2+cos(t(i)))*cos(2*t(i)); end // plotten wie angegeben plot(f1vec,f2vec) //////// Aufgabe 3, Teil 2 //// Es geht einfach weiter mit f1vec und f2vec // Erzeugen der Differenzen zwischen aufeinanderfolgenden Elementen: ende=length(f1vec) f1dvec=f1vec(2:ende)-f1vec(1:ende-1); f2dvec=f2vec(2:ende)-f2vec(1:ende-1); //// dies geht alternativ auch mit einer Schleife: for i=1:length(f1vec)-1 f1dvec(i)=f1vec(i+1)-f1vec(i); f2dvec(i)=f2vec(i+1)-f2vec(i); end // Berechnen der Norm der Differenzen (sqrt wirkt auch elementweise) modvec=sqrt(f1dvec.*f1dvec+f2dvec.*f2dvec); //// dies geht alternativ auch mit einer Schleife: for i=1:length(f1dvec) modvec(i)=sqrt(f1dvec(i)*f1dvec(i)+f2dvec(i)*f2dvec(i)); end // aufsummieren der Normen der Differenzen gibt die Loesung! a=sum(modvec) //// dies geht alternativ auch mit einer Schleife: a=0; for i=1:length(modvec) a=a+modvec(i); end a ////// Und jetzt noch der Test mit Hilfe des Einheitskreises f1vec=sin(t); f2vec=cos(t); // (sin und cos wirken wieder elementweise) //plotten, ist immer gut als kleiner Zwischentest, ob alles geklappt hat plot(f1vec,f2vec) //Erzeugen der Differenzen zwischen aufeinanderfolgenden Elementen etc., //genauso wie vorher (einfach Zeilen von vorher kopieren) ende=length(f1vec) f1dvec=f1vec(2:ende)-f1vec(1:ende-1); f2dvec=f2vec(2:ende)-f2vec(1:ende-1); modvec=sqrt(f1dvec.*f1dvec+f2dvec.*f2dvec); b=sum(modvec)