PRZYKŁADOWE SKRYPTY (PROGRAMY W MATLABIE Z ROZSZERZENIEM.m): 1) OBLICZANIE WYRAŻEŃ 1: clear % usunięcie zmiennych z pamięci roboczej MATLABa % wyczyszczenie okna kom % nadanie wartości zmiennym x1 i x2 x1 = 3.5; x2 = -7.22; % obliczenie wyrażeń w1 = sind(2*x1)+ cosd(x2/3); %wyświetlenie tekstu i wartości zmiennej w oknie kom disp('wyrażenie w1 ma wartość') disp(w1) disp('dla x1 =') disp(x1) disp('oraz x2 = ') disp(x2) 2) OBLICZANIE WYRAŻEŃ 2 DANE PODANE Z KLAWIATURY: clear % wczytanie wartości zmiennych x1 i x2 x1 = input('podaj wartość zmiennej x1 = '); x2 = input('podaj wartość zmiennej x2 = '); % obliczenie wyrażeń w1 = sind(2*x1)+ cosd(x2/3); %wyświetlenie tekstu i wartości zmiennej w oknie kom disp('wyrażenie w1 ma wartość') disp(w1) disp('dla x1 =') disp(x1) disp('oraz x2 = ') disp(x2) 3) OBLICZANIE WYRAŻEŃ 3 clear %wyczyszczenie przestrzeni roboczej %wczytanie danych x = input('podaj wartość zmiennej x\nx = '); y = input('podaj wartość zmiennej y\ny = '); %obliczenie wyrażeń z = nthroot(((y^2+1)/(2*x*y)+0.5*(x+y)),3) t = (1/x-(y-1)/(x+1))/(x^2*(x-2)) f = sin((x+2)^3)*cos((x+1)^2)+1 ---------------------------------------------------------------------------------------------------------------------------------------------------
4) OBLICZANIE WYRAŻEŃ 4 clear % wczytanie wartości zmiennych x1 i x2 x1 = input('podaj wartość zmiennej x1 = '); x2 = input('podaj wartość zmiennej x2 = '); % obliczenie wyrażeń w1 = nthroot(((x1+x2)/(2*x1)),3); w2 = log(1+x1^2)/(3*x2); w3 = (log(1+x1^2))^2/(3*x2); w4 = log((1+x1^2)^2.5)/(3*x2); w5 = (log((1+x1^2)^2.5))^3/(3*x2); w6 = exp(2*(x1^6)^0.5/(3*(x1+x2))); w7 = abs(x1-x2)/(2*x1*x2^3); %wyświetlenie tekstu i wartości zmiennej w oknie kom disp('wyrażenie w1 ma wartość') disp(w1) disp('wyrażenie w2 ma wartość') disp(w2) disp('wyrażenie w3 ma wartość') disp(w3) disp('wyrażenie w4 ma wartość') disp(w4) disp('wyrażenie w5 ma wartość') disp(w5) disp('wyrażenie w6 ma wartość') disp(w6) disp('wyrażenie w7 ma wartość') disp(w7) disp('dla x1 =') disp(x1) disp('oraz x2 = ') disp(x2)
5) SKRYPT 4 MACIERZE 1 %tworzenie macierzy wypełnionej jedynkami, zerami i macierzy identyczności clear B = ones(5); C = zeros(5); D = eye(7); E = ones(3,5); F = zeros(5,4); G = eye(3,7); %działania na macierzach H = B+C; C(:,4)= 4; K = B-5*C; B(5,2:)=5; C(2,:)= -1; %mnożenie tablicowe M = B.*C; %mnożenie macierzowe N = B*C; %dzielenie tablicowe C(4:5,:) = 2; MM = C./B; %dzielenie macierzowe %NN = C/B %wyznacznik macierzy B, dla macierzy kwadratowej B wyznacznikb = det(b); %macierz odwrotna, do macierzy kwadratowej B, o wyznaczniku 0 Bodw = inv(b); %suma el. w macierzy sumab = sum(sum(b)); %iloczyn el. w macierzy ilb = prod(prod(b)); %średnia arytmetyczna srb = mean(mean(b)); %transpozycja transb = B' 6) SKRYPT MACIERZE 2 clear A B %zapis do pliku tekstowego utworzonych macierzy A i B, a następnie %odczytanie wartości macierzy zapamiętanych w pliku A = ones(3,4); B = zeros(3,4); save macierzeab.txt A B -ascii clear A B % odczytanie danych z pliku tekstowego load macierzeab.txt %utworzy się struktura o nazwie identycznej jak nazwa pliku, tylko bez %rozszerzenia A = macierzeab(1:3,1:4); B = macierzeab(4:6,1:4);
7) INSTRUKCJA WARUNKOWA (najprostsza) %program wczytuje argument funkcji, sprawdza jego wartość i wypisuje wynik %na ekran x = input('podaj liczbę rzeczywistą\nx = '); if x>0 disp('liczba dodatnia') 8) INSTRUKCJA WARUNKOWA Z ELSE %program wczytuje argument funkcji, sprawdza jego wartość i wypisuje wynik %na ekran x = input('podaj liczbę rzeczywistą\nx = '); if x>0 disp('x - liczba dodatnia') y = 2 * sqrt(x) % obliczenie y = 2 x else disp('x - liczba niedodatnia') y = 2*nthroot(x,3) % obliczenie y = 2*pierwiastek 3 stopnia ze zmiennej x 9) INSTRUKCJA WARUNKOWA Z ELSEIF %program wczytuje argument funkcji, sprawdza jego wartość, oblicza wzór funkcji i wypisuje wynik na ekran x = input('podaj liczbę rzeczywistą\nx = '); if x>0 disp('x - liczba dodatnia') y = 2 * sqrt(x) % obliczenie y = 2 x elseif x == 0 disp('x jest zerem') y = 5 else disp('x - liczba niedodatnia') y = 2*nthroot(x,3) % obliczenie y = 2*pierwiastek 3 stopnia ze zmiennej x 10) INSTRUKCJA WARUNKOWA Z ELSEIF, BEZ ELSE %program wczytuje argument funkcji, sprawdza jego wartość i wypisuje wynik %na ekran x = input('podaj liczbę rzeczywistą\nx = '); if x>0 disp('x - liczba dodatnia') y = 2 * sqrt(x) % obliczenie y = 2 x elseif x == 0 disp('x jest zerem') y = 5 11) INSTRUKCJA WARUNKOWA %wczytanie danych a = input('podaj wartość dla a\na = '); b = input('podaj wartość dla b\nb = '); %sprawdzenie danych: jeśli a>b to obliczane jest c = a - b if a>b %warunek logiczny c = a - b %instrukcja do wykonania, jeśli war. logiczny jest prawdziwy --------------------------------------------------------------------
12) FUNKCJA 1 %funkcja wczytuje pojedyńczy argument, oblicza wartość funkcji dla tego argumentu i %wypisuje wynik x = input('podaj argument funkcji\nx = '); %wzór funkcji f(x) = 2x^2+ln(x^2+2)^2 f = 2*x^2+log((x^2+2)^2); %wypisanie wyniku disp('wartość funkcji f wynosi: ') disp(f) 13) FUNKCJA 2 %funkcja wczytuje pojedyńczy agrument, oblicza wartość funkcji dla tego argumenu i wypisuje wynik x = input('podaj argument funkcji\nx = '); %wzór funkcji f(x) = 2x^2+ln(x^2+2)^2 f = 2*x^2+log((x^2+2)^2); %wypisanie wyniku w sposób sformatowany - funkcja fprintf fprintf('dla argumentu x = %6.2f \nfunkcja f(x) ma wartość %8.4f\n',x,f) 14) FUNKCJA 3 Z WYKRESEM %dane: początek i koniec przedziału tabelaryzacji funkcji oraz krok dx %funkcja oblicza wartość dla ciągu argumentów, a wykonany jest jej wykres % f(x) = x^3-2* (sin (x+1))^2 clear x f a b dx %wczytanie danych a = input('podaj początek przedziału tabelaryzacji\na = '); b = input('podaj koniec przedziału tabelaryzacji\nb = '); dx = input('podaj krok tabelaryzacji\ndx = '); % utworzenie ciągu argumentów x w przedziale [a, b] x = [a:dx:b]; %obliczenie wartości funkcji dla ciągu argumentów f = x.^3-2*(sin(x+1)).^2 %wykres plot(x,f,'yd:') %podpisy osi xlabel('x') ylabel('f(x)') %tytuł wykresu title('wykres funkcji f(x)=x^3-2*(sin(x+1))^2') leg('funkcja f(x)') grid on %siatka prostokątna 15) PĘTLA FOR n = input('podaj liczbę naturalną n\nn = '); for zmienna = -5:0.3:n, disp(zmienna)
16) PĘTLA FOR clear x N = input('podaj liczbę naturalną N\nN = '); % obliczenie N kolejnych elementów ciągu x(i) według wzoru: % x(i) = 2*i+4.44, i=1,2,...,n for i = 1:N x(i) = 2*i+4.44; 17) FUNKCJA 4 Z WYKRESEM - TABELARYZACJA %dane: początek i koniec przedziału tabelaryzacji funkcji oraz krok dx %funkcja oblicza wartość dla ciągu argumentów, a wykonany jest jej wykres % f(x) = x^3-2* (sin (x+1))^2 clear x f a b dx %wczytanie danych a = input('podaj początek przedziału tabelaryzacji\na = '); b = input('podaj koniec przedziału tabelaryzacji, b>a\nb = '); %sprawdzenie poprawności danej b wraz z oczekiwaniem na poprawną wartość b while b<=a disp('niepoprawne b') b = input('podaj koniec przedziału tabelaryzacji, b>a\nb = '); dx = input('podaj krok tabelaryzacji dx>0\ndx = '); %sprawdzenie poprawności danej dx wraz z oczekiwaniem na poprawną wartość %dx while dx<=0 disp('niepoprawne dx') dx = input('podaj krok tabelaryzacji dx>0\ndx = '); % utworzenie ciągu argumentów x w przedziale [a, b] x = [a:dx:b]; %obliczenie wartości funkcji dla ciągu argumentów f = x.^3-2*(sin(x+1)).^2; %wykres plot(x,f,'kd:') %podpisy osi xlabel('x') ylabel('f(x)') %tytuł wykresu title('wykres funkcji f(x)=x^3-2*(sin(x+1))^2') leg('funkcja f(x)') grid on
18) FUNKCJA 5 Z WYKRESEM - TABELARYZACJA %dane: początek i koniec przedziału tabelaryzacji funkcji oraz liczba %argumentów funkcji %funkcja oblicza wartość dla ciągu argumentów, a następnie wykonany jest jej wykres % f(x) = x^2+1 dla x<=0 % f(x) = log10 (x+2)^3 dla x>0 clear %wczytanie danych a = input('podaj początek przedziału tabelaryzacji\na = '); b = input('podaj koniec przedziału tabelaryzacji, b>a\nb = '); %sprawdzenie poprawności danej b wraz z oczekiwaniem na poprawną wartość b while b<=a disp('niepoprawne b') b = input('podaj koniec przedziału tabelaryzacji, b>a\nb = '); n = input('podaj liczbę argumentów funkcji n liczba naturalna\nn = '); %sprawdzenie poprawności danej n wraz z oczekiwaniem na poprawną wartość %n while n<=0 disp('niepoprawne n') n = input('podaj liczbę argumentów funkcji n liczba naturalna\nn = '); %obliczenie dx dx = (b-a)/(n-1); % utworzenie ciągu argumentów x w przedziale [a, b] x = [a:dx:b]; %obliczenie wartości funkcji dla ciągu argumentów for i = 1:n, if x(i)>0 f(i) = log10((x(i)+2)^3) else f(i) = x(i)^2+1 %wykres plot(x,f,'kd:') %podpisy osi xlabel('x') ylabel('f(x)') %tytuł wykresu title('wykres funkcji f(x)') leg('funkcja f(x)') grid on
19) ZAPIS DO PLIKU WYNIKÓW W SPOSÓB FORMATOWANY %Program zapisuje na plik wynikowy o nazwie wyniki.txt zmienne, wektory i %macierze w sposób sformatowany % % stworzenie wektora x x = -3.5:0.5:10; % obliczenie długości wektora x % dl = length(x); % stworzenie macierzy A jednostkowej % A = eye(5); % zamiana pewnych elementów w wektorze x i macierzy A x(5:7) = 3 A(:,2) = 2 A(1) = 10 sumaw2w3 = sum(sum(a(2:3,:))) % zapis na ekran instukcją fprintf fprintf('wydruk wyników\n') fprintf('długość wektora x wynosi %5.0f\n',dl) fprintf('elementy wektora x\n') fprintf('%9.6f ',x) fprintf('\n\nelementy macierzy A:\n') fprintf('%10.2f %10.2f %10.2f %10.2f %10.2f\n',A') % % zapis na plik instukcją fprintf % % otwarcie pliku do zapisu fid = fopen('wyniki.txt','w') % zapis na plik fprintf(fid,'wydruk wyników\n'); fprintf(fid,'długość wektora x wynosi %5.0f\n',dl); fprintf(fid,'elementy wektora x\n'); fprintf(fid,'%9.6f\n',x); fprintf(fid,'\n\nelementy macierzy A:\n'); % A ma 5 wierszy i 5 kolumn fprintf(fid,'%10.2f %10.2f %10.2f %10.2f %10.2f\n',A'); % zamknięcie dostępu do pliku 0- poprawnie, -1 - niepoprawnie zamkniety_poprawnie = fclose(fid)
20) FUNKCJA Z JEDNYM WZOREM clear % wyczyszczenie przestrzeni roboczej %wczytanie danych z pliku load dane1.txt % w pliku 3 liczby: -5.5 6 0.15 a = dane1(1) b = dane1(2) dx = dane1(3) %wygenerowanie x-ów (argumentów w przedziale <a, b> z krokiem dx) x = a:dx:b; %obliczenie wartości funkcji f(x) % wzór funkcji f(x)= sin((x+2)^3)*cos((x+1)^2)+1 %f(x)nie może stać po lewej stronie znaku = %obliczamy wektor wartości funkcji, bo x jest wektorem (argumentów), a nie pojedynczą zmienną f = sin((x+2).^3).*cos((x+1).^2)+1; % tabelka tabelka = [x',f'] % do wykresu bierzemy wektory x i f plot(x,f) xlabel('x') %podpis przy osi X ylabel('f(x)') %podpis przy osi Y title('wykres funkcji f(x)') leg('f(x)') grid on 21) FUNKCJA Z PARAMETREM 1 %zadanie 1: obliczyć pojedynczą wartość funkcji f(x), która dana jest wzorem: %gdzie a - pewien dodatni parametr % f(x) = { 2 gdy x<=0 % { a+2 gdy x>a % { x+2 gdy x<=a %kolejne kroki: %wczytanie argumentu x x = input('podaj argument funkcji\nx = '); %wczytanie parametru a a = input('podaj parametr a - dodatnią liczbę rzeczywistą\na = '); %obliczenie wartości funkcji f(x) if x<=0 fx = 2; else % w tym miejscu prawdziwy jest warunek: x>0 if x>a fx = a+2; else fx = x+2; %wypisanie wyników fprintf('\ndla argumentu x = %6.2f i parametru a = %6.2f\n,x,a) fprintf('funkcja ma wartość %8.4f\n',fx)
22) FUNKCJA Z PARAMETREM 2 zadanie 2: obliczyć pojedynczą wartość funkcji f(x), która dana jest wzorem %gdzie a - pewien dodatni parametr, którego poprawna wartość jest %sprawdzana %gdy wartość a jest niedodatnia, to przerwane jest wprowadzanie danych % f(x) = { 7 gdy x<=0 % { a+5 gdy x>a % { x+1 gdy x<=a %kolejne kroki: %wczytanie danych: %wczytanie argumentu x x = input('podaj wartośc argumentu funkcji x = ') %wczytanie parametru a a = input('podaj wartośc parametru a>0, a = ') %sprawdzenie poprawności parametru a if a<=0 error('parametr a musi byc dodatni') %obliczenie wartości funkcji w zmiennej fx if x<=0 disp('wartośc funkcji dla x<=0') fx = 7; fprintf('dla argumentu x = %13.6f \ni parametru a = %13.6f \n',x,a) fprintf('wartośc funkcji wynosi %15.10f\n',fx) elseif x>a disp('wartośc funkcji dla x>0 i x>a') fx = a+5; fprintf('dla argumentu x = %13.6f \ni parametru a = %13.6f \n',x,a) fprintf('wartośc funkcji wynosi %15.10f\n',fx) else disp('wartośc funkcji dla x>0 i x<=a') fx = x+1; fprintf('dla argumentu x = %13.6f \ni parametru a = %13.6f \n',x,a) fprintf('wartośc funkcji wynosi %15.10f\n',fx)