Huom! uusissa Matlab-versioissa summaukseen voidaan liittää indeksisuunta, vanhemmissa edetään aina sarakkeita pitkin, jolloin rivisuunta on tehtävä transponoimalla. (Tämä uudistus oli välttämätön, kun useampiulotteiset taulukot tulivat mukaan.)
x=linspace(a,b,n); y=f(x);
CTR-C
ei aina pelasta.)
x=linspace(0,4,200);
Neuvo: Selkeyden vuoksi kannattaa ottaa käyttöön apumuuttujia, kuten osoittaja, nimittaja . Piirrä samaan kuvaan exp-funktio eri värillä ja eri kuvaan erotus f-exp.
t=linspace(0,2*pi); x=cos(t);y=sin(t); plot(x,y,[1 1 -1 -1 1],[-1 1 1 -1 -1]); axis([-1.5 1.5 -1.5 1.5]) axis squareHeitetään tikkaa kuvan mukaiseen tauluun (tikat osuvat aina taulua ympäröivään neliöön, ehkä tähän oikeasti tarvitaan "satunnaisrobotti"). Jos tikkojen osumatarkuus on satunnaismuuttuja, joka on tasajakautunut neliöllä -1<x<1, -1<y<1, niin ympyrään ja neliöön osuneiden tikkojen lukumäärän suhde on $\pi/4$. (Miksi?) Generoi tasajakautuneita pistepareja ja laske ko. osuus.
Kirjassa C.vanL on hyvä tiivis selvitys aiheesta "Random processes" 1.3.2 ss.
34 - 37. Jos tämä kiinnostaa, voit lainata kirjaa (luokassa 3 kpl).
Esiintyviä Matlab-funktioita: hist, rand, randn.
Satunnaisprosesseihin ja tähän tehtävään (Monte Carlo simulaatio $\pi$:n
laskemiseksi) on CV-sivulla selkeät skriptit:
Dice ja Darts ala C. van Loan.
Opiskele, kokeile ja sisäistä!
Z=eye(30,30); mesh(Z) % Paina yläpalkin kiertonuolta ja kiertele kuvaa. surf(Z) mesh(ones(30,30)) surfc(rand(20,20)) mesh(hilb(30)) % hilb on pelkästään neliömatriisi contour(hilb(30),100) % 100 korkeuskäyrää contour(hilb(30),0:0.01:.1) % Näitä korkeuksia vastaavat käyrät pcolor(rand(30,30)) pcolor(eye(30,30)) cs=contour(peaks); % peaks on MATLAB:n mukana tuleva testausfunktio, clabel(cs) % kts. help peaks, type peaks, doc peaks clabel(cs,'manual') % Vie hiiriosoitin grafiikkaruutuun ja valitse.
>> v1=[-1.996 2.884 -0.03] >> v2=[3.10 -2.70 -0.13] >> v3=[-1.170 0.70 1.13]Esitä vektori
v=[1 2 3]
edellisten lineaarikombinaationa. function y = MyExpW(x) % y = MyExpW(x) % x is a scalar and y is a Taylor approximation to exp(x). y = 0; term = 1; k=0; while abs(term) > eps*abs(y) k = k + 1; y = y + term; term = x*term/k; endTalleta se tiedostoon MyExpW.m . Suorita MATLAB-komento help MyExpW
Muistathan: $$e^x = \displaystyle\sum_{k=0}^\infty \frac{x^k}{k!}.$$
Selvitä, mitä koodi tekee ja testaa kutsumalla sitä eri x:n arvoilla. (Mikä on eps ?)
function y=omaexp(x) % y=omaexp(x) % Funktion kutsu % x on vektori, y on samanpituinen vektori, y(i)=Texp(x(i)), % missä Texp tarkoittaa Taylor-approksimaatiota. % Esim: % x=linspace(-1,1); y=omaexp(x); plot(x,y) y=zeros(size(x)); % Alustus, ei välttämätön, mutta tehostaa. termi=ones(size(x)); % Sarja alkaa 1:stä, olipa x(i) mikä tahansa. k=0; while(any(abs(termi) > eps*abs(y)) y=... k=... termi= ... endSelvitä itsellesi, täydennä, suorita, piirrä.
k=0;xedell=-Inf; while abs(x-xedell) > eps*abs(x) xedell=x; x=x-f(x)/fder(x); k=k+1; endTäydennä tämä funktioksi tiedostoon myNewton.m. Otsikkorivi:
function z=myNewton(f,fder,x)
myNewton(@sin,@cos,2)