Advertisement
Guest User

Untitled

a guest
Dec 20th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 1.79 KB | None | 0 0
  1. clear();
  2.  
  3. function y = u_exact(x)
  4.     y=x^(-1).*exp(x);
  5. endfunction
  6.  
  7. function y=g_0(x)
  8.     y =exp(2)/1.5;
  9.   // y=exp(2)/2.*x^2-exp(2).*x;
  10. endfunction
  11.  
  12. function y=g_k(k,x)
  13.     y = -1 - cos(%pi*k*x);
  14.   //  y = (x-1)^(k+1).*(2-x)^2;
  15. endfunction
  16.  
  17. function y =r(x)
  18.    // y=x.*(x+4);
  19.    y=x;
  20. endfunction
  21.  
  22. function y=p(x)
  23.    // y=-(2*x+4);
  24.    y=2;
  25. endfunction
  26.  
  27. function y=q(x)
  28.  //   y=ones(1,length(x))*(-x);
  29.     y=-x;
  30. endfunction
  31.  
  32. function y = Lfik(k,x)
  33.     y = r(x).*cos(%pi*k*x)*(%pi*k)^2 + p(x).*sin(%pi*k*x)*%pi*k + q(x).*(1 - cos(%pi*k*x));
  34.     //y = r(x).*(k*(k+1).*(x-1)^(k+1).*(2-x)^2 - (k+1).*(x-1)^k*2.*(2-x) -(k+1).*(x-1)^k*2.*(2-x) + (x-1)^(k+1).*2) + p(x).*((k+1).*(x-1)^k.*(2-x)^2 - (x-1)^(k+1).*2.*(2-x)) + q(x).*g_k(k,x);
  35. endfunction
  36.  
  37. /*function y = gauss(A,b)
  38.     N = length(b);
  39.     for i = 1:N // Зануляемый столбец
  40.         for j = 1:N
  41.             A(i,1:M) = A(i,1:M)/A(i,j)
  42.     end
  43. endfunction
  44. */
  45.  
  46. h=0.01;
  47. x = 1:h:2;
  48. N = length(x);
  49. //x_colloc = 0.005 + modulo(rand(1,N,'uniform'),( 1.995 - 0.005)); //  равномерное распределение на (0.005,1.995) - вектор из N эл-в
  50. x_colloc = x(2:N-2);
  51. M = length(x_colloc); // Кол-во узлов коллокации
  52.  
  53. A = zeros(M,M);
  54. for k=1:M
  55.     A(1:M,k) = Lfik(k,x_colloc); // Вставляю сразу столбцы коэффициентов при c_k
  56. end
  57.  
  58.  
  59.     b=-exp(2).*x_colloc'/1.5;
  60. b=-3.89.*x_colloc';
  61. //b=-exp(2)/2.*x_colloc'^2-exp(2).*x_colloc'.*x_colloc';
  62. //b = -exp(2)/1.5 *ones(M,1); // Правая часть
  63.  
  64. c = linsolve(A,b);
  65. y = g_0(x);
  66. //y=3.89;
  67. for k = 1:M
  68.      y = y + c(k)*g_k(k,x);
  69. end
  70. //y=y-1.51;
  71. u = u_exact(x);
  72. xset('thickness',2);
  73. plot(x, y,'b');
  74. plot(x, u,'r');
  75. legend ('y', 'u',2);
  76. title('Collocation');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement