% Inversio-ongelmien laskennallinen peruskurssi 2012 % Harjoitus 1 % Tehtava 1 A1 = [1 2 3;-1 0 1; 3 -1 2]; m1 = [14; 2; 7]; % Paras tapa x1 = A1\m1; % Muita tapoja x12 = inv(A1) * m1; x13 = A1^{-1} * m1; % Tehtava 2 A2 = [1 3 2; -1 0 2; -3 1 1; 3 -3 3]; m2 = [11.5; 5.0; 1.5; -10.5]; % Ratkaisu x2 = A2\m2; % Muita tapoja x22 = (A2'*A2)\(A' * m2); x23 = inv(A2'*A2) * A2' * m2; % Tehtava 3 xx = 0:0.01:1; f = xx.^4 - 3 * xx.^3 + 2 * xx.^2 + xx - 5; plot(xx,f) % Tehtava 4 % Data matriisina d = [0.0 1.0; 1.0 2.2; 3.5 2.6; 4.4 1.0]; mesh_points = d(:,1); data_points = d(:,2); % Tiheampi hila kayrien piirtoa varten mm = linspace(0,4.4,100); % Kuva datapisteista figure; plot(mesh_points,data_points,'ro'); hold on % (a) Sovitus suoraan % Sovitusmatriisi Aa = [mesh_points.^0 mesh_points.^1]; % Suoran kertoimet pa = Aa\data_points; % Piirretaan suora kayttaen tiheampaa hilaa H = [mm'.^0 mm'.^1]; plot(mm,H*pa) % (b) Sovitus 2. asteen polynomiin % Sovitusmatriisi Ab = [mesh_points.^0 mesh_points.^1 mesh_points.^2]; % Polynomin kertoimet pb = Ab\data_points; % Piirretaan suora kayttaen tiheampaa hilaa H = [mm'.^0 mm'.^1 mm'.^2]; plot(mm,H*pb,'k') % (c) Sovitus 3. asteen polynomiin % Sovitusmatriisi Ac = [mesh_points.^0 mesh_points.^1 mesh_points.^2 mesh_points.^3]; % Polynomin kertoimet pc = Ac\data_points; % Piirretaan suora kayttaen tiheampaa hilaa H = [mm'.^0 mm'.^1 mm'.^2 mm'.^3]; plot(mm,H*pc,'r') hold off % Tehtava 5 % Ladataan data MATLABiin load('data1.mat'); % (a) Kuva figure; xx = data(1,:)'; yy = data(2,:)'; plot(xx,yy,'mx') hold on % (b) i. Sovitus suoraan B1 = [xx.^0 xx.^1]; b1 = B1\yy; plot(xx,B1*b1) % (b) ii. Sovitus 3. asteen polynomiin B2 = [xx.^0 xx.^1 xx.^2 xx.^3]; b2 = B2\yy; plot(xx,B2*b2,'k') % (b) iii. Sovitus 5. asteen polynomiin B3 = [xx.^0 xx.^1 xx.^2 xx.^3 xx.^4 xx.^5]; b3 = B3\yy; plot(xx,B3*b3,'r') hold off % Tehtava 6 %% HUOM! Tama funktio pitaa tallettaa omaan tiedostoonsa nimella fitmat.m!! function A = fitmat(points,n); % Kaannetaan vaakavektori pystyvektoriksi pp = points'; % Pistevektorin pituus ll = length(pp); % Luodaan nollamatriisi, jonka koko on ll x (n + 1) A = zeros(ll,n+1); % Taytetaan matriisi sarakkeittain for i = 1:(n+1), A(:,i) = pp.^(i-1); end end % Esimerkki kaytosta, edellinen tehtava figure plot(xx,yy,'mx') hold on % Sovitus 15. asteen polynomiin B15 = fitmat(xx',15); plot(xx,B15 * (B15\yy)) hold off