% Aufgabe1 syms x f=pi*cos(pi*x);% kleine Aenderung der Funktion g=sqrt(1-x^2); [M_Romb_f,Kon_G_f] = Romb_ver(0,1/2,7,f,1); [M_Romb_g,Kon_G_g] = Romb_ver(0,1,7,g,pi/4); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [M_Romb,Kon_G] = Romb_ver(a,b,m,f,Int_f) %Eingabe: das Interval [a,b], N=2^m, die Funktion f %Ausgabe: die Matrix M_Romb syms x M_Romb = zeros(m+1,m+1); % Die erste Spalte des Romberg-Schemas (iterierte Trapezsumme) for j=1:m+1 h = (b-a)/2^(j-1); % Schrittweite knot = a+h:h:b-h; % Stuetzstelle M_Romb(j,1) = h*(0.5*subs(f,x,a)+sum(subs(f,x,knot)) + 0.5*subs(f,x,b)); end % Von der zweiten bis m+1-ten Spalte des Romberg-Schemas for k=2:m+1 M_Romb(1:end-k+1,k)=M_Romb(2:end-k+2,k-1) + (M_Romb(2:end-k+2,k-1)-M_Romb(1:end-k+1,k-1))./(4^(k-1)-1); end %Konvergenzgeschwindigkeit for j=1:5 for s=1:3 Kon_G{j}(:,s) = abs(M_Romb(2:end-j+1,j)-Int_f)./abs(M_Romb(1:end-j,j)-Int_f).^s; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [X]=my_newton_2d; % f ist symbolisch 2 Variable syms f g syms x y f = x*y-1; g = x^2 + y^2 -4; syms D inv_D D = [diff(f,x), diff(f,y); diff(g,x), diff(g,y)]; ID = inv(D); X=-2:0.25:2; Y=2:-0.25:-2; for j=1:length(X) for k=1:length(Y) clear V; % Startvektor V(:,1)=[X(j),Y(k)]'; temp(1)=norm([prod(V(:,1))-1, norm(V(:,1))^2-4]); for i=1:20; % Maximale Anzahl der Iteration if (rank(subs(D,{x,y},{V(1,i),V(2,i)}))~=2) % Pruefe ob D vollen Rang hat N(j,k)=inf % Wenn nein (der naechste Schritt ist unmoeglich) break; % Abbruch der "For-Schleife (von i)" else % Wenn ja % Ein Schritt von Newton-Verfahren V(:,i+1) = V(:,i) - subs(ID,{x,y},{V(1,i),V(2,i)})* [prod(V(:,i))-1, norm(V(:,i))^2-4]'; temp(i+1)=norm([prod(V(:,i+1))-1, norm(V(:,i+1))^2-4]);% Norm von Funtionswert if (temp(i+1) < 10^(-6)) % Wenn die Norm klein genug ist, N(j,k)=i; % wird die Iterationszahl gespeichert. break; % Abbruch der "For-Schleife (von i)" end end end end end