Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.45 KB | None | 0 0
  1. clear, clc;
  2. %DANE WEJSCIOWE
  3. %poczatek przedzialu
  4. a=input('Podaj pocatek przedziału: ');
  5. %koniec przedzialu
  6. b=input('Podaj koniec przedziału: ');
  7. %liczba wezlow
  8. n=input('Podaj liczbe wezlow: ');
  9.  
  10.  
  11. h = (b-a)/(n+1);
  12.  
  13. %warunki brzegowe
  14. Ua = input('Podaj wartość pierwszego warunku brzegowego: ');
  15. Ub = input('Podaj wartość drugeigo warunku brzegowego: ');
  16. %zadana funkcja
  17. %f = @(x) -sin(x) - 4*sin(2*x);
  18. funkcjaf=input('Podaj funkcje: ','s'); %nadanie funkcji
  19. f=inline(vectorize(funkcjaf),'x');
  20. %rozwiazanie analityczne
  21. %g = @(x) sin(x) + sin(2*x);
  22. funkcjag=input('Podaj rozwiazanie analityczne: ','s'); %nadanie funkcji
  23. g=inline(vectorize(funkcjag),'x');
  24.  
  25. %WYKONANIE
  26. %tworzenie wektora złożonego z n '-2'
  27. v1 = -2*diag(eye(n));
  28. %tworzenie wektora złożonego z n-1 '1'
  29. v2 = diag(eye(n-1));
  30. %tworzenie macierzy A ( '-2' na przekątnej, '1' nad i pod przekątna
  31. A = diag(v1) + diag(v2,1) + diag(v2,-1);
  32. %generowanie wektora n liczb rozłożonych równomiernie w przedziale
  33. %(a+h;b-h)
  34. x= linspace(a+h,b-h,n);
  35. x2 = linspace(a,b,n+2);
  36. %tworzenie wektora F
  37. F = f(x)*h^2;
  38. %podstawienie za pierwsze wyrażenie macierzy F
  39. F(1) = F(1) - Ua;
  40. %podstawienie za n-te wyrażenie macierzy F
  41. F(n) = F(n) - Ub;
  42. %znalzienie wektora U
  43. U = linsolve(A,F');
  44. %uzupełnienie wektora U o warunki brzegowe
  45. U = [Ua U' Ub];
  46. %WYKRES
  47. plot(x2, U, x2, g(x2), 'ro');
  48. legend('Metoda Analityczna','Metoda Numeryczna');
  49. %błąd rozwiązania
  50. E = max(abs(g(x2) - U))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement