Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %main
- %задание 1
- a=-pi; b=pi; ns=[5 10 15 20 25 30 35 50 70 100 200 500 1000]; lambda=3/(10*pi);
- K=@(x,s) 1./(0.64*cos((x+s)/2).*cos((x+s)/2)-1);
- f=@(x) 25-16*sin(x).*sin(x);
- u=@(x) 17/2+(128/17)*cos(2*x);
- for i=1:length(ns)
- x=linspace(a,b,ns(i));
- h(i)=x(2)-x(1);
- [y,x]=fredII_trapez(K,f,lambda,a,b,ns(i));
- u_=u(x)';
- err(i)=norm(y-u_,inf)/norm(u_,inf);
- end
- loglog(h,err)
- title('loglog(h,err)');
- xlabel('h');
- ylabel('err');
- %задание 2
- %main
- % a=0; b=1; lambda = 1/2 ;n=1000;
- % f=@(x) (5/6)*x;
- % K=@(x,s) x*s;
- % x=linspace(a,b,n);
- % u=@(x) x;
- % tic;
- % [y,x]=fredII_trapez(K,f,lambda,a,b,n);
- % toc;
- % % tic;
- % % [y,x]=fredII_trapez_upd(K,f,lambda,a,b,n);
- % % toc;
- % plot(x,y,'ro',x,u(x),'g');
- % xlabel('x');
- % ylabel('y');
- % u_=u(x)';
- % err=norm(y-u_,inf)/norm(u_,inf);
- для задания 3
- function [y,x] = fredII_trapez_upd(K,f,lambda,a,b,n)
- x=linspace(a,b,n);
- h=x(2)-x(1);
- w=[1/2,ones(1,n-2), 1/2]*h*lambda;
- %A=-K(x,x')*diag(w')+eye(n);
- A=-K(x,x')*spdiags(w',0,n,n)+speye(n);
- F=f(x);
- y=A\F'
- end
- % %задание 4
- % %main
- % a=0; b=1; ns=[5 10 15 20 25 30 50 100]; lambda=-1;
- % K=@(x,s) x.*exp(x.*s);
- % f=@(x) exp(x);
- % for i=1:length(ns)
- % x=linspace(a,b,ns(i));
- % h(i)=x(2)-x(1);
- % [y1,x]=fredII_trapez(K,f,lambda,a,b,ns(i));
- % [y2,x]=fredII_simpson(K,f,lambda,a,b,ns(i));
- % u=@(x) ones(1,numel(x));
- % u_=u(x)';
- % err1(i)=norm(y1-u_,inf)/norm(u_,inf);
- % err2(i)=norm(y2-u_,inf)/norm(u_,inf);
- % end
- % %plot(h,err1,'r');
- % loglog(h,err1,'r')
- % hold on
- % %plot(h,err2,'g');
- % loglog(h,err2,'g')
- % title('red - trapez, green - simpson');
- % xlabel('h');
- % ylabel('err');
- function [y,x] = fredII_simpson(K,f,lambda,a,b,n)
- x=linspace(a,b,n)';
- h=x(2)-x(1);
- if mod(n,2)==1
- w=[1/3,2/3*(1+mod(1:(n-2),2)),1/3]*h*lambda;
- else
- w=[1/2,5/6,2/3*(1+mod(1:(n-3),2)),1/3]*h*lambda;
- end
- A=zeros(n);
- for i=1:n
- A(:,i)=-w(i)*K(x,x(i));
- A(i,i)=A(i,i)+1;
- end
- F=f(x);
- y=A\F;
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement