polyadd.m function[pout]=polyadd(p1,p2) %p1, p2= Polynome verschiedener Laenge p1=[zeros(1,length(p2)-length(p1)),p1]; p2=[zeros(1,length(p1)-length(p2)),p2]; pout=p1+p2; polytang.m function [pout]=polytang(p,x0) %p: Koeffizientenvektor; %x0: Stelle an der Tangente berechnet werden soll; pout= [polyval(polyder(p),x0),polyval(p,x0)-(polyval(polyder(p),x0)).*x0]; polyintersec.m function [x,y] = polyintersec(p1,p2) p = polyadd(p1,-p2); pzeros=roots(p); I=imag(pzeros)==0; x=pzeros(I); disp(x) y=polyval(p1,x); polyextreme.m function [xmax,ymax,xmin,ymin,xinfl,yinfl] = polyextreme(p) p_d = polyder(p); x_extrem = roots(p_d); p_dd = polyder(p_d); y_dd = polyval(p_dd,x_extrem); xmax = x_extrem(y_dd < 0); xmin = x_extrem(y_dd > 0); ymax = polyval(p,xmax); ymin = polyval(p,xmin); xinfl = roots(p_dd); yinfl = polyval(p,xinfl); polyarea.m function [A] = polyarea(x1,x2,p1,p2) if nargin < 4 || isempty(p2),p2=0;end p = polyadd(p1,-p2); p_int=polyint(p); p1= polyval(p_int,x1); p2= polyval(p_int,x2); A = polyadd(-p1,p2); A = abs(A); polylength.m function [s] = polylength(x1,x2,p) p1= inline ('sqrt(1+polyval(polyder(p),x).^2)','x','p'); s=quadl(p1,x1,x2,[],[],p); spolyarea.m %f=@(x)0.1.*x.^3-0.5.*x.^2+0.2.*x+0.55; %x1=fzero(f,1.5); %x2=fzero(f,4); x = linspace(-1,6,100); p1=[0.1,-0.7,1.4,-0.8]; p2=[-0.2,1.2,-1.35]; [x_inter,y_inter] = polyintersec(p1,p2); e =sort(x_inter); e_1=ceil(length(e)/2); inter_mitte =e(e_1); inter_letzte=e(end); [A] = polyarea(inter_mitte,inter_letzte,p1,p2); [s1] = polylength(inter_mitte,inter_letzte,p1); [s2] = polylength(inter_mitte,inter_letzte,p2); C=s1+s2; x_1=linspace(inter_mitte,inter_letzte,100); x_2=linspace(inter_letzte,inter_mitte,100); p1_1=0.1.*x_1.^3-0.7.*x_1.^2+1.4.*x_1-0.8; p2_1=-0.2.*x_1.^2+1.2.*x_1-1.35; p2_1=fliplr(p2_1); Y=[p1_1,p2_1]; X=[x_1,x_2]; p11=0.1.*x.^3-0.7.*x.^2+1.4.*x-0.8; p22=-0.2.*x.^2+1.2.*x-1.35; flaeche =['A = ' num2str(A)]; bogenlaenge=['C = ' num2str(C)]; figure hold on; plot(x,p11,'b'); plot(x,p22,'r'); fill(X,Y,[0.7 0.7 0.7]); axis square text(1,3,flaeche); text(1,2.5,bogenlaenge); xlabel('x'); ylabel('y'); title('Flaechenberechnung zwischen zwei Schnittpunkten'); hold off; polykruemm.m function [kappa,mx,my] = polykruemm(p,x) p_d =polyder(p); p_dd=polyder(p_d); %Kappa: zaehler= polyval(p_dd,x); nenner = (1+(polyval(p_d,x).^2)).^(3/2); kappa = abs(zaehler./nenner); %Mittelpunkt des Schmiegekreises: mx = x-((polyval(p_d,x).*(1+(polyval(p_d,x)).^2))./(polyval(p_dd,x))); my = polyval(p,x)+(((1+(polyval(p_d,x)).^2))./(polyval(p_dd,x))); kreis.m function [x,y] = kreis(r,mx,my,phi) x = mx + r .* cos(phi); y = my + r .* sin(phi); spolykruemm.m p1 = [-0.2,1.2,-1.35]; x=linspace(-1,6,100); [xmax] = polyextreme(p1); [kappa,mx,my] = polykruemm(p1,xmax); p = -0.2.*x.^2+1.2.*x-1.35; phi=linspace(0,2.*pi,100); r=1./kappa; phi2=(5/4)*pi; [x_circ,y_circ] = kreis(r,mx,my,phi); [x_rad,y_rad] = kreis(r,mx,my,phi2); plot(x,p,'b'); hold on; plot(x_circ,y_circ,'r'); axis equal; plot(mx,my,'rx'); plot([mx x_rad],[my y_rad],'k-'); xlabel('x'); ylabel('y'); title('Schmiegekreis an ein Polynom'); hold off;[addsig]