Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear, clc;
- %DANE WEJSCIOWE
- %poczatek przedzialu
- a=input('Podaj pocatek przedziału: ');
- %koniec przedzialu
- b=input('Podaj koniec przedziału: ');
- %liczba wezlow
- n=input('Podaj liczbe wezlow: ');
- h = (b-a)/(n+1);
- %warunki brzegowe
- Ua = input('Podaj wartość pierwszego warunku brzegowego: ');
- Ub = input('Podaj wartość drugeigo warunku brzegowego: ');
- %zadana funkcja
- %f = @(x) -sin(x) - 4*sin(2*x);
- funkcjaf=input('Podaj funkcje: ','s'); %nadanie funkcji
- f=inline(vectorize(funkcjaf),'x');
- %rozwiazanie analityczne
- %g = @(x) sin(x) + sin(2*x);
- funkcjag=input('Podaj rozwiazanie analityczne: ','s'); %nadanie funkcji
- g=inline(vectorize(funkcjag),'x');
- %WYKONANIE
- %tworzenie wektora złożonego z n '-2'
- v1 = -2*diag(eye(n));
- %tworzenie wektora złożonego z n-1 '1'
- v2 = diag(eye(n-1));
- %tworzenie macierzy A ( '-2' na przekątnej, '1' nad i pod przekątna
- A = diag(v1) + diag(v2,1) + diag(v2,-1);
- %generowanie wektora n liczb rozłożonych równomiernie w przedziale
- %(a+h;b-h)
- x= linspace(a+h,b-h,n);
- x2 = linspace(a,b,n+2);
- %tworzenie wektora F
- F = f(x)*h^2;
- %podstawienie za pierwsze wyrażenie macierzy F
- F(1) = F(1) - Ua;
- %podstawienie za n-te wyrażenie macierzy F
- F(n) = F(n) - Ub;
- %znalzienie wektora U
- U = linsolve(A,F');
- %uzupełnienie wektora U o warunki brzegowe
- U = [Ua U' Ub];
- %WYKRES
- plot(x2, U, x2, g(x2), 'ro');
- legend('Metoda Analityczna','Metoda Numeryczna');
- %błąd rozwiązania
- E = max(abs(g(x2) - U))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement