[Matlab] Zapis funkcji
-
- Użytkownik
- Posty: 33
- Rejestracja: 8 sty 2012, o 15:29
- Płeć: Kobieta
- Lokalizacja: Cieszyn
- Podziękował: 6 razy
[Matlab] Zapis funkcji
Witam serdecznie
Mam problem z napisaniem tej funkcji w matlabie:
\(\displaystyle{ y=\begin{cases} 1 \text{ gdy } x<-1 \\ x^{2} \text{ gdy } -1 \le x \le 1 \\ x \text{ gdy }>1 \end{cases}}\)
+ wykres tej funkcji.
Podejrzewam, że powinnam wykorzystać if, elseif, else aczkolwiek nie wiem jak. Dopiero zaczynam naukę z tym programem dlatego proszę o pomoc:)
Pozdrawiam
Mam problem z napisaniem tej funkcji w matlabie:
\(\displaystyle{ y=\begin{cases} 1 \text{ gdy } x<-1 \\ x^{2} \text{ gdy } -1 \le x \le 1 \\ x \text{ gdy }>1 \end{cases}}\)
+ wykres tej funkcji.
Podejrzewam, że powinnam wykorzystać if, elseif, else aczkolwiek nie wiem jak. Dopiero zaczynam naukę z tym programem dlatego proszę o pomoc:)
Pozdrawiam
Ostatnio zmieniony 27 lut 2013, o 13:53 przez Afish, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości.
Powód: Poprawa wiadomości.
- pyzol
- Użytkownik
- Posty: 4346
- Rejestracja: 26 kwie 2010, o 11:39
- Płeć: Mężczyzna
- Lokalizacja: Nowa Ruda
- Podziękował: 5 razy
- Pomógł: 929 razy
[Matlab] Zapis funkcji
Ale dokładnie masz narysować wykres tej funkcji, czy też napisać skrypt który wywołuje wartości dla danych argumentów. Czy to i to?
- pyzol
- Użytkownik
- Posty: 4346
- Rejestracja: 26 kwie 2010, o 11:39
- Płeć: Mężczyzna
- Lokalizacja: Nowa Ruda
- Podziękował: 5 razy
- Pomógł: 929 razy
[Matlab] Zapis funkcji
Nie pamiętam składni ale jak CI wysypie to się na błędy popatrzy.
Możesz spróbować taki kod. Pewnie wysypie Ci trochę błędów, ale spróbować można. Nie pamiętam czy jest operator
Drugi sposób z if :
Tak to jakoś by szło, bez błędów się nie obejdzie. Jeśli chodzi o rysowanie, to są dwie funkcje
Natomiast
Możesz spróbować taki kod. Pewnie wysypie Ci trochę błędów, ale spróbować można. Nie pamiętam czy jest operator
=>
Kod: Zaznacz cały
function y=funkcja(x);
y=1.*(x<-1)+x.*(-1<= x & x<= 1)+x.^2*(x>1);
end
Kod: Zaznacz cały
function y=funkcja(x);
if x<-1 ;
y=1 else
if x>= -1 & x<=1
y=x else
y=x^2
end
end
end
end
plot,ezplot
. Ta pierwsza pobiera dwa wektory, czyli najpierw musisz zrobić coś takiego:
Kod: Zaznacz cały
x=-3:.01:3;
y=funkcja(x);
plot(x,y);
ezplot
działa symbolicznie i nie wiem czy złożenie na odpowiednich przedziałach będzie możliwe. Bardzo możliwe, że wystarczy tylko komenda hold on
po każdym rysunku.-
- Użytkownik
- Posty: 33
- Rejestracja: 8 sty 2012, o 15:29
- Płeć: Kobieta
- Lokalizacja: Cieszyn
- Podziękował: 6 razy
[Matlab] Zapis funkcji
Bardzo dziekuję.!
Po wpisaniu pierwszego kodu, kiedy podstawiłam za x 2 wyświetliło się
funkcjaa(2)
ans =
4
Więc w zasadzie nie wiem co jest źle. A po wpisaniu 2 kodu :
Illegal use of reserved keyword "else".
A jeżeli chodzi o wykres funkcji, to mogę poprosić o wytłumaczenie tego wiersza :
x=-3:.01:3
czy x zawsze musi być zdefiniowany? Niestety nie wiem o co chodzi.
Po wpisaniu pierwszego kodu, kiedy podstawiłam za x 2 wyświetliło się
funkcjaa(2)
ans =
4
Więc w zasadzie nie wiem co jest źle. A po wpisaniu 2 kodu :
Illegal use of reserved keyword "else".
A jeżeli chodzi o wykres funkcji, to mogę poprosić o wytłumaczenie tego wiersza :
x=-3:.01:3
czy x zawsze musi być zdefiniowany? Niestety nie wiem o co chodzi.
- pyzol
- Użytkownik
- Posty: 4346
- Rejestracja: 26 kwie 2010, o 11:39
- Płeć: Mężczyzna
- Lokalizacja: Nowa Ruda
- Podziękował: 5 razy
- Pomógł: 929 razy
[Matlab] Zapis funkcji
Bo ja tam odwrotnie napisałem winno być:Po wpisaniu pierwszego kodu, kiedy podstawiłam za x 2 wyświetliło się
Kod: Zaznacz cały
function y=funkcja(x);
y=1.*(x<-1)+x.^2.*(-1<= x & x<= 1)+x.*(x>1);
end
SpróbujIllegal use of reserved keyword "else".
elseif
, ale najpierw wpisz help elseif
, zobacz, czy jest i czy będzie Ci to pasowało.Jest też funkcja
switch,case
i ją też by można było użyć. Ale ten pierwszy kod można stosować na wektorach. Nie wiem czy pozostałe będzie można.
Jeśli chcesz użyć funkcjiczy x zawsze musi być zdefiniowany? Niestety nie wiem o co chodzi.
plot
, to tak. Sam kod oznacza, że \(\displaystyle{ x}\) to wektor. Jego pierwsza współrzędna to \(\displaystyle{ -3}\), ostatnia to \(\displaystyle{ 3}\), a każda następna jest większa o \(\displaystyle{ 0.1}\). Wpisz sobie też help linspace
, bo działa dość podobnie.-
- Użytkownik
- Posty: 145
- Rejestracja: 16 lis 2007, o 09:06
- Płeć: Mężczyzna
- Lokalizacja: Gniezno
- Podziękował: 2 razy
- Pomógł: 27 razy
[Matlab] Zapis funkcji
funkcja.m
wywołanie przykładowe:
Kod: Zaznacz cały
function y=funkcja(x)
if x<-1
y=1;
elseif x>=1
y=x;
else
y=x^2;
end
Kod: Zaznacz cały
x=-2:0.1:2;
y=[];
for i=1:1:length(x)
y=[y funkcja(x(i))];
end
plot(x,y);
xlabel('Os X')
ylabel('Os Y')
-
- Użytkownik
- Posty: 33
- Rejestracja: 8 sty 2012, o 15:29
- Płeć: Kobieta
- Lokalizacja: Cieszyn
- Podziękował: 6 razy
[Matlab] Zapis funkcji
No i działa, dzięki za pomoc
Mam problem z jeszcze jednym zadaniem:
Napisz funkcję, która za wejściowy argument bierze macierz kwadratową i zwraca wektor którego komponenty są sumą wierszy macierzy.
Mam problem z jeszcze jednym zadaniem:
Napisz funkcję, która za wejściowy argument bierze macierz kwadratową i zwraca wektor którego komponenty są sumą wierszy macierzy.
- pyzol
- Użytkownik
- Posty: 4346
- Rejestracja: 26 kwie 2010, o 11:39
- Płeć: Mężczyzna
- Lokalizacja: Nowa Ruda
- Podziękował: 5 razy
- Pomógł: 929 razy
[Matlab] Zapis funkcji
Taka funkcja jest wbudowana
Przyda Ci się zapoznanie z funkcjami:
Macierz nie musi być kwadratowa, choć jeśli ma byc koniecznie to się poprawnie. To mniej więcej leci tak. Tutaj może być problem z wymiarami.
help sum
, daje wiersze bądź kolumny w zależności od parametrów.Przyda Ci się zapoznanie z funkcjami:
Kod: Zaznacz cały
help size
help zeros
help for
Kod: Zaznacz cały
function wektor=suma(A);
[wiersz, kol]=size(A);
wektor=zeros(1,kol)
for i=1:wiersz
wektor=wektor+A(i,:);
end
end
-
- Użytkownik
- Posty: 33
- Rejestracja: 8 sty 2012, o 15:29
- Płeć: Kobieta
- Lokalizacja: Cieszyn
- Podziękował: 6 razy
[Matlab] Zapis funkcji
W zadaniu jest podane, że musi być kwadratowa ale dzieki spróbuję to sobie poprawić.-- 27 lut 2013, o 11:35 --Chyba jednak nie wiem jak ;p
- pyzol
- Użytkownik
- Posty: 4346
- Rejestracja: 26 kwie 2010, o 11:39
- Płeć: Mężczyzna
- Lokalizacja: Nowa Ruda
- Podziękował: 5 razy
- Pomógł: 929 razy
[Matlab] Zapis funkcji
Wystarczy tylko wrzucić
if
.
Kod: Zaznacz cały
function wektor=suma(A);
[wiersz, kol]=size(A);
if wiersz==kol
wektor=zeros(1,kol)
for i=1:wiersz
wektor=wektor+A(i,:);
else
disp('To nie jest macierz kwadratowa')
end
end
-
- Użytkownik
- Posty: 33
- Rejestracja: 8 sty 2012, o 15:29
- Płeć: Kobieta
- Lokalizacja: Cieszyn
- Podziękował: 6 razy
[Matlab] Zapis funkcji
Hmm coś jeszcze jest nie tak, jestem zielona w tym temacie. Żeby wywołać tą funkcję powinnam wpisać w oknie komend : suma( jakaś macierz) ?
-
- Użytkownik
- Posty: 33
- Rejestracja: 8 sty 2012, o 15:29
- Płeć: Kobieta
- Lokalizacja: Cieszyn
- Podziękował: 6 razy
[Matlab] Zapis funkcji
hmm wyświetla mi to : Illegal use of reserved keyword "else". Próbowałam poprawić ale nie wyszło