[R] Wykresy w RStudio

marta03
Użytkownik
Użytkownik
Posty: 43
Rejestracja: 6 lut 2016, o 21:25
Płeć: Kobieta
Lokalizacja: Białystok

[R] Wykresy w RStudio

Post autor: marta03 »

1. Przy pomocy pętli for narysować na przedziale [0,1] wykresy funkcji \(\displaystyle{ y=x^{1/n}}\) dla kolejnych liczb \(\displaystyle{ n=1,2, \ldots,10}\).
2. Przy pomocy pętli while narysować na przedziale \(\displaystyle{ \left[ 0,1\right]}\) wykresy funkcji \(\displaystyle{ y=x^n}\) dla kolejnych liczb \(\displaystyle{ n=1,2, \ldots,10}\).
Muszę to narysować w programie RStudio.
Próbowałam w taki sposób:

Kod: Zaznacz cały

n <- c(1:10)
x = seq(0,1,by=0.1)

plot(x, x^{n}, type="l",main="Wykres funkcji x^{1/n}",col="red")
ale wtedy w konsoli wyskakuje mi błąd:

Kod: Zaznacz cały

> plot(x, x^{n}, type="l",main="Wykres funkcji x^{1/n}",col="red")
Warning message:
In x^{ : longer object length is not a multiple of shorter object length
Nie mam pojęcia jak to zrobić.
Ostatnio zmieniony 13 kwie 2018, o 07:18 przez Afish, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości.
Awatar użytkownika
leg14
Użytkownik
Użytkownik
Posty: 3132
Rejestracja: 5 lis 2014, o 20:24
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 154 razy
Pomógł: 475 razy

[R] Wykresy w RStudio

Post autor: leg14 »

Ciekawe ile to jest wektor podniesiony do potęgi, która jest wektorem ...
Zymon
Użytkownik
Użytkownik
Posty: 140
Rejestracja: 3 lis 2017, o 10:53
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 10 razy
Pomógł: 15 razy

[R] Wykresy w RStudio

Post autor: Zymon »

leg14 język R jest zwektoryzowany, operacje wykonywane są element po elemencie.

W tym wypadku korzystanie z tego nic nie da. Autor zadania kazał użyć tej pętli w jakimś celu. Według mnie musisz stworzyć przed pętlą środowisko obrazka, a następnie w pętli od \(\displaystyle{ 1}\) do \(\displaystyle{ 10}\) rysować kolejne linie. Klamry wokół \(\displaystyle{ n}\) oczywiście nie są potrzebne. Napisałbym Ci gotowy kod, ale szczerze mówiąc nigdy nie pamiętałem tych wszystkich komend do obsługi surowej grafiki. W razie problemów pisz to sobie przypomnę ;p

Swoją drogą zadanie da się wykonać bez pętli co w języku R jest wskazane gdyż te jego elementy są beznadziejnie zaimplementowane i są najzwyczajniej w świecie wolne.
mikos02
Użytkownik
Użytkownik
Posty: 24
Rejestracja: 27 cze 2015, o 18:25
Płeć: Mężczyzna
Lokalizacja: Kutno
Pomógł: 6 razy

[R] Wykresy w RStudio

Post autor: mikos02 »

Można to zrobić np. tak:

Kod: Zaznacz cały

f <- function(x,n) x^(1/n)

plot(0,0,cex=0,xlim=c(0,1),ylim=c(0,1))
for(i in 1:10) lines(seq(0,1,len=100), f(seq(0,1,len=100),i), col=i)

Kod: Zaznacz cały

g <- function(x,n) x^n

plot(0,0,cex=0,xlim=c(0,1),ylim=c(0,1))
i <- 0
while (i < 10) {
  i <- i + 1
  lines(seq(0,1,len=100), g(seq(0,1,len=100),i), col=i)
               }
HelperNES
Użytkownik
Użytkownik
Posty: 70
Rejestracja: 2 lut 2017, o 10:12
Płeć: Mężczyzna
Lokalizacja: Stęszew
Podziękował: 5 razy
Pomógł: 14 razy

Re: [R] Wykresy w RStudio

Post autor: HelperNES »

Po pierwsze to nie jest błąd,a ostrzeżenie. W R trzeba to rozróżniać, błąd nie pozwoli na obliczenia, a ostrzeżenie pozwoli i wypisze komunikat co jest nie tak.

Tutaj mamy: In x^{ : longer object length is not a multiple of shorter object length . Czyli inaczej mówiąc wektory x i n są różnej długości. x ma długość 11, a n długość 10 . Dodatkowo ich NWW nie jest długością dłuższego wektora, a to by powodowało ciekawe rzeczy (zawarte w przestrodze)

Jak kolega Zymon wspomniał w R wszystko jest wykonywane element po elemencie. W takim razie x^n zwraca nam: pierwszy x podniesiony do pierwszego n, drugi x podniesiony do drugiego n, ... , dziesiąty x podniesiony do dziesiątego n, jedenasty x podniesiony do ?? .

Jak widać w tym jedenastym działaniu R nie wie co zrobić.

Mała przestroga : Tak jak wyżej wspomniałem gorzej by było gdy jedna długość była by wielokrotnością drugiej. R wtedy dokłada sobie odpowiednią ilość jednego wektora, żeby dopasować go do drugiego.

Kod: Zaznacz cały

x <- 1:3
n <- 1:6
x^n

1 4 27 1 32 729
Jak widać pierwszy x jest podniesiony do pierwszego n, a później pierwszy x jest podniesiony do czwartego n!
ODPOWIEDZ