Laskuharjoitus 1A Mallit Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa. 1. tehtävä %% 1. % (i) % Vektorit luodaan sijoittamalla haluttuun muuttujaan % halutut arvot hakasulkeiden sisällä. Matriisin sarakkeet erotetaan % pilkulla, rivit puolipisteellä. Luodaan pyydetyt vektorit ja ko- % keillaan pyydettyjä komentoja. % HUOM! Puolipiste komennon perässä jättää komennon tulostamatta % komentoikkunaan. Tämä on hyvä muistaa etenkin erilaisia silmukoita % käyttäessä. x = [0;1]; y=[1;2]; norm(x) dot(x,y) % norm(x) = 1, cdot(x,y) = 2. norm-komento palauttaa vektorin euklidisen % normin, cdot taas sille parametreiksi annettujen vektorien pistetulon. %% (ii) % Luodaan annettu matriisi annetulla komennolla ja kokeillaan % komentoja: A = [ 1 2 3 ; 4 5 6 ; 7 8 9]; Transpoosi = A % A palauttaa matriisin A transpoosin (vaihtaa rivit sarakkeiksi) VastaMatriisi = -A Yhteenlasku = A+A 1
Laskuharjoitus 1A Mallit % -A palauttaa matriisin A vastamatriisin, A + A summaa kaksi matriisia A, % jolloin siis samankokoisten matriisien vastaavat alkiot lasketaan yhteen. KahdellaKertominen = 2*A AlkioittainenKertolasku = A.*A MatriisiKertolasku = A*A % 2*A kertoo jokaisen matriisin A alkion 2:lla, A.*A laskee matriisien A ja % A alkioittaisen kertolaskun ja A*A niiden matriisikertolaskun. 2. tehtävä %% 2. % (i) % Piirretään funktio annetulla komennolla t = linspace(0,10,100) y = sin(2*pi*t); plot(t,y) % Komento linspace(x,y,z) arpoo lukujen x ja y väliltä z tasajakautunutta % lukua lähtien luvusta x ja päättyen lukuun y. Komento plot(x,y) piirtää % kuvaajan, jonka x-datana on muuttujaan x tallennettu data ja y-datana % muuttujaan y tallennettu data. %% (ii) % Piirretään pyydetty funktio annetussa alueessa [X,Y] =meshgrid( linspace(0,1,10),linspace(0,1,10)) Z = X.^2 + Y.^2 surf(x,y,z) 2
Laskuharjoitus 1A Mallit % Ensimmäinen rivi luo xy-tason x- ja y-arvoja, joita yhdistelemällä % saadaan luotua tason pisteitä. Komento surf(x,y,z) piirtää xyz-koordi- % naatistoon kuvaajan, jossa parametrit X ja Y määrittävät xy-tason mukai- % set koordinaatit ja Z näiden koordinaattien mukaisen korkeuden xy-tasosta. 3. tehtävä %% 3 % (i) % Kirjoitetaan yhtälöryhmän kertoimet ja oikea puoli matriiseihin A ja % B edellisten tehtävien oppien mukaan: A = [1, 1, 1; 1, 2, 1; 1, 1, 2]; b = [0 ; 1; 3]; % (ii) % Käytetään annettua komentoa yhtälöryhmän ratkaisemiseen A\b % (iii) Ratkaisuksi saadaan [-4; 1; 3], eli x1 = -4, x2 = 1 ja x3 = 3. % Käsinlaskemalla voidaan tarkistaa, että tämä todella on yhtälöryhmän % ratkaisu. kuvaus4.m function y = kuvaus4(x) theta = pi/3; Q = [cos(theta) -sin(theta); sin(theta) cos(theta)]; y = Q*x(:); 3
Laskuharjoitus 1A Mallit tutki4.m % % Antti Hannukainen // 22.10.2015 // Otaniemi % % Esimerkkikoodi tason kuvausten havainnollistamiseen. % Luodaan pisteitä välille (0,1)x(0,1) ja kuvataan ne uusille pisteille. % % Piirretään pellen kuva alkuperisissä ja kuvatuissa pisteissä. % % Näin voidaan helposti havainnollistaa tasolta tasolle kuvauksia. % % clown on matlabin mukana tuleva esimerkkikuva load clown; C = flipud(x); % luodaan pisteitä [X,Y] = meshgrid( linspace(0,1,size(c,2)),linspace(0,1,size(c,1))); % kuvataan tason pisteet fx = zeros(size(x)); fy = zeros(size(y)); for i=1:size(x,1) for j=1:size(x,2) % tee tason piste (i,j) x(1) = X(i,j); x(2) = Y(i,j); % VARSINAINEN KUVAUS!!! fx = kuvaus4(x); 4
Laskuharjoitus 1A Mallit end end fx(i,j) = fx(1); fy(i,j) = fx(2); figure; subplot(1,2,1); fancyplot(x,y,c,5/size(c,1)); axis equal axis square subplot(1,2,2); fancyplot(fx,fy,c,5/size(c,1)); axis equal axis square 4. tehtävä %% 4 % (i) % Ajamalla tutki4.m funktio huomataan, että kuvaus4.m kiertää annettua % klovninkuvaa 45 astetta vasempaan. %% (ii) % Kirjoitetaan for-looppi tehtävän suorittamiseksi. Kerätään summa % kerroista, jolloin yhtälö f(x) + f(y) = f(x+y) pätee muuttujaan % "Tulokset". Tulokset = 0; for i = 1:100 ; 5
Laskuharjoitus 1A Mallit x = rand(2,1) ; y = rand(2,1) ; fx = kuvaus4(x); fy = kuvaus4(y); fxy = kuvaus4(x+y); if (fx + fy) == fxy; % Jos yhtälö pätee, lisätään Tulokset arvoa yhdellä Tulokset= Tulokset +1; end end Tulokset % Ajamalla looppi muutaman kerran huomataan, että yhtälö ei päde % yhdelläkään ajokerralla. Oletetaan siis, että yhtälö ei päde. 6
5. tehtävä (i) Vektorin x R 2 pituus saadaan tutulla tavalla: x = x 2 1 + x 2 2 = 1 2 + 2 2 = 5 y = y1 2 + y2 2 = 2 2 + 1 2 = 5. Lemman 3.1 perusteella saadaan vektorien x ja y väliseksi kulma θ seuraavalla tavalla: ( ) ( ) x y x1 x 2 + y 1 y θ = arccos = arccos 2 x y 5 5 ( ) ( ) 1 2 + 2 1 4 = arccos = arccos 0.6435 (rad) 5 5 (ii) Olkoon n = (n 1, n 2 ), n 1, n 2 R. Nyt voidaan etsiä haluttu vektori tutkimalla annettua yhtälöä: y n = 0 y 1 n 1 + y 2 n 2 = 0 2n 1 + n 2 = 0. Esimerkiksi vektori n = (1, 2) kelpaa. (iii) Tehtävä ratkeaa edellistä kohtaa mukaillen: x = αy + βn (x 1, x 2 ) = (αy 1 + βn 1, αy 2 + βn 2 ) { { 2α β = 1 α = 4 α 2β = 2 5 β = 3 5 1
6. tehtävä (i) Tarkistetaan kaava suoralla laskulla: ( ) 2 x + y 2 = (x1 + y 1 ) 2 + (x 2 + y 2 ) 2 ( ) 2 = (x 2 1 + x 2 2) + (y1 2 + y2) 2 + 2(x 1 y 1 + x 2 y 2 ) ( ) 2 = x 2 + y 2 + 2x y = x 2 + 2x y + y 2. HUOM: Vastaavalla laskulla voidaan tarkistaa, että x y 2 = x 2 2x y + y 2. (ii) Väite: x y = 0 x + y 2 = x y 2. Todistus: ( ) ( ) x y = 0 x 1 y 1 + x 2 y 2 = 0. x + y 2 = x 2 + 2x y + y 2 = x 2 + 2(x 1 y 1 + x 2 y 2 ) + y 2 = x 2 2(x 1 y 1 + x 2 y 2 ) + y 2 = x 2 2x y + y 2 = x y 2 x + y 2 = x y 2 x 2 + 2(x 1 y 1 + x 2 y 2 ) + y 2 = x 2 2(x 1 y 1 + x 2 y 2 ) + y 2 4(x 1 y 1 + x 2 y 2 ) = 4x y = 0 x y = 0. 2
(iii) Todistetaan pyydetty väittämä: Lemma 3.1 Olkoot x, y R 2 ja θ niiden välinen kulma. Tällöin x y = x y cos(θ). Ottamalla itseisarvot lemmassa esitetyn yhtälön molemmilta puolilta saadaan x y = x y cos(θ) x y, koska 0 cos(θ) 1 ja 0 x y Lemmasta 3.1 huomataan, että yhtälö x y = x y pätee, kun cos(θ) = 1 θ = n 2π, n Z, eli silloin kun vektorien x ja y välinen kulma on nolla. Tämä täyttyy silloin, kun vektorit x ja y ovat samansuuntaiset. 7. tehtävä (i) Murtoluvut, joiden osoittajassa ja nimittäjässä esiintyy kompleksisia lukuja, saadaan sievennettyä kompleksiluvun perusmuotoon laventamalla murtoluku nimittäjän liittoluvulla: 4 + 2i 3 i = (3 + i)(4 + 2i) (3 + i)(3 i) = 12 + 6i + 4i 2 9 3i + 3i + 1 = 10 + 10i 10 = 1 + i. (ii) Merkitään r 1 = 1 + 3i, r 2 = 1 3i ja r 3 = 1 3i. Tulkitaan nämä R 2 :n pisteiksi pitämällä luvun reaaliosaa x-koordinaattina ja kompleksiosaa y-koordinaattina. Piirretään tästä kuva: 3
Kuva 1 Kompleksiluvut r 1, r 2 ja r 3 tulkittuina R 2 :n pisteiksi. Lasketaan kuvan avulla kompleksilukujen itseisarvot ja vaihekulmat: r 1 = r 2 = r 3 = 1 2 + ( 3) 2 = 4 = 2. ( ) ( ) r1y 3 θ 1 = arcsin = arcsin = π r 1 2 3 ( ) ( r2y ) (3) θ 2 = arcsin = arcsin = π r 1 2 3 θ 3 = π + θ 1 = 4π 3 4
8. tehtävä (i) Tiedetään, että x 2 = x 2 1 + x 1 x 2 + 1 3 x2 2. Selvitetään kuvaus g : R 2 R laskemalla annettu yhtälö: x (s, 0) 2 = (x 1 s, x 2 ) 2 = (x 1 s) 2 + (x 1 s) x 2 + 1 3 x2 2 = x 2 1 2x 1 s + s 2 + x 1 x 2 x 2 s + 1 3 x2 2 = x 2 2x 1 s x 2 s + s 2 = x 2 h(s) Tämä minimoituu, kun h(s) saavuttaa maksimiarvonsa, mikä tapahtuu jossain sen derivaatan nollakohdassa. Selvitetään tämä nollakohta: d ds h(s) = d ( 2x1 s + x 2 s s 2) = 2x 1 + x 2 2s. ds h (s) = 0 s = x 1 + 1 2 x 2 g(x) = x 1 + 1 2 x 2. Suoralla laskulla, tai vaikkapa merkkivertailulla voidaan tarkistaa, että s = x 1 + 1 2 x 2 on piste, jossa h(s) maksimoituu. (ii) Merkitään x 1 = (0, 1), x 2 = (1, 1 2 ) ja x 3 = ( 1, 1). Lasketaan g:n arvot jokaiselle näistä: g(x 1 ) = 0 + 1 2 ( 1) = 1 2, g(x 2 ) = 1 + 1 ( 1 ) = 1 1 2 2 4 = 3 4 g(x 3 ) = 1 + 1 2 = 1 2. 5
(iii) Piirretään pyydetyt kuvaajat MATLABilla: Kuva 2 Pyydetyt kuvaajat MATLABilla piirrettynä. Huomataan, että kaikki kuvaajat leikkaavat vakionsa pisteessä x=0.5. MATLAB-skripti tehtävän suoritukseen a=[0,1,-1]; b=[-1,-0.5,1]; % Luodaan polynomien pisteet x=linspace(0,1,1000); y=[a(1)+b(1)*x;a(2)+b(2)*x;a(3)+b(3)*x]; vakio=[a(1)+0.5*b(1),a(2)+0.5*b(2),a(3)+0.5*b(3)]; 6
% Eka polynomi plot(x,y(1,:), r, LineWidth,2) hold on % Toka polynomi plot(x,y(2,:), b, LineWidth,2) hold on % Kolmas polynomi plot(x,y(3,:), g, LineWidth,2) hold on % Eka vakio plot(x,linspace(vakio(1),vakio(1),1000), r, LineWidth,1.5) %hold on % Toka vakio plot(x,linspace(vakio(2),vakio(2),1000), --b, LineWidth,1.5) hold on % Kolmas vakio plot(x,linspace(vakio(3),vakio(3),1000), :g, LineWidth,1.5) hold on legend( x1 polynomi, x2 polynomi, x3 polynomi, x1 vakio, x2 vakio, x3 vakio ) 7