Advertisement
Guest User

Untitled

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