Čtvrté cvičení - Vědeckotechnické výpočty a vizualizace (Matlab, (Python), Maple)

Zadání:

  1. Vykreslete funkční závislost veličiny $y$ na čase $t$ zadanou v přiloženém souboru ty.txt
    1. Načtěte veličiny $t$ a $y$ z textového souboru ty.txt do Matlabu (nebo Pythonu)
    2. Vykreslete graf závislosti $y=y(t)$ modře tečkovaně ... plot(x,y,'.b')
    3. Pro každou hodnotu $y(t)$ spočítejte novou veličinu \begin{equation} z\small{(t)}=y \small{(t)}^2 \cdot sin \small{(y(t)}) \end{equation}
    4. Vyvolejte nové okno pro grafy a vykreslete pod sebe tři grafy:
      1. $y=y(t)$ ... modře plnou čarou
      2. $z=z(t)$ ... zeleně plnou čarou
      3. $z=z(y)$ ... černě tečkovaně
    5. V grafech popište osy a vložte i vlastní titulky všech grafů.
    6. Uložte vypočítanou veličinu z do nového souboru z.txt příkazem: "save z.txt z -ascii"
  2. Pomocí maticových výpočtů vyřešte následující soustavu tří rovnic o třech neznámých: \begin{equation} \begin{matrix} 5 \cdot x - 3\cdot y + z &= 5 \\ -4\cdot x + 3\cdot y + 2\cdot z &= 9 \\ 6\cdot x - 7\cdot y + 3\cdot z &= 3 \end{matrix} \end{equation}
  3. Výsledek zkontrolujte.

  4. Vyřešte limitu funkce zadanou vyučujícím na tabuli. Pro inspiraci si stáhněte soubor Maple_Tutorial.mws (verze v pdf pro Adobe Acrobat: Maple_Tutorial.pdf).

Úkoly A a B doporučujeme řešit v Matlabu nebo v Pythonu s využitím knihovny Numpy a Matplotlib, úlohu C v Maple 4.

V letním semestru si můžete zapsat kurz Matlabu, nebo výuku programování v Pythonu, kde si vyzkoušíte i řízení různých zařízení (robůtků a laboratorních experimentů) počítačem.

Tutoriál pro Matlab

% komentáře
 
clear all % vymaze vsechno
close all % zavre vsechny grafy
clc  % smaze obrazovku prikazoveho radku
 
%% uzitecne: ";",  Ctrl+r, Ctrl+t, F5, F9, help ...  (středník potlačí výpis výsledku na konzoli)

a=-1:.2:3
atransponovany=a'
 
%% funkce x=2sin(3t+1)
 
t=(0:.1:30)';       % zadání hodnot pole intervalem od nuly do 30 se zadaným krokem, ' =transponováno
x=2*sin(3*t+1);
 
plot(t,x)  % help plot
xlabel('t [sec]')
ylabel('x [/]')
title('funkce x=2sin(3t+1)')

% hold on - vykreslovani vice velicin do jednoho grafu
% help subplot % vykrelovani vice grafu (vice os) do jednoho okna  

t=(10:.1:40)';
y1=sin(t+5);
y2=sin(t*3-1).*cos(t);
figure % novy prazdny graf
plot(t,y1)
hold on
plot(t,y2,'k.')  % cerne teckovane

% nebo jinak
figure  % vytvori dalsi okno pro vykreslovani grafu (211 ... grafy ve dvou radcich a jednom sloupci prvni graf)
subplot(2,1,1);plot(t,y1);xlabel('t [sec]');ylabel('y1 [/]');title('funkce y1=sin(t+5)')

subplot(2,1,2);plot(t,y2,'g');xlabel('t [sec]');ylabel('y2 [/]');title('funkce y2=sin(t*3-1).*cos(t)')  %(211 ... grafy ve dvou radcich a jednom sloupci druhy graf)

%% Vektory, Matice

a=[1 3 5 6]   # radkovy vektor 1x4
b=[2 4 5 7]  
c=a.*b  % nasobi jednotlive prvky mezi sebou
c=a*b'  % vektorovy soucin

A=[ 1 2 3
    4 5 6
    7 8 9];

detA=det(A); % tyto hodnoty determinantu ukazuji na to ze jej nelze spocitat - matice je singulární
% obmente hodnoty v A zkuste determinant znovu

inverzniA=inv(A) % inverzni matice
 
% vlastni cisla d a vlastni vektory v (sloupce)
[v d]=eig(A)
% dalsi
a=randn()     % náhodné číslo se stredni hodnotou 0 a smerodatnou odchylkou 1 
A=randn(3)    % matice nahodnych cisel 3 x 3
A=rand(2,3)   % matice kladnych nahodnych cisel 2 x 3
a=rand(1000,1) % sloupcový vektor

A=eye(10)     % jednotková matice, jedničky na diagonále, jinak nuly

A=ones(4)     % "jedničková" matice 4x4, samé jedničky všude
A=zeros(2,3)   % nulová obdélníková matice
 
% help for, help if, help ***
% Ctrl+i
N=5;
A=zeros(N,N);      % samé nuly
for i = 1:N,
    for j = 1:N,
        A(i,j) = 1/(i+j-1);    % od 1 do 1/9
    end
end
% prvni radek matice A
prvniradek=A(1,:)
prvnisloupec=A(:,1)
%%=================================
%UKOL (Vyreste v Matlabu, ale muzete i alternativne ve Scilabu nebo v Pythonu)
%A
% A.0 Stahnete textovy soubor ty.txt z adresy: https://ssl.fs.cvut.cz/studium/u12110/PPS/cviceni/ty.txt
% alternativne: http://users.fs.cvut.cz/ivo.bukovsky/PPS/2014/ty.txt 
% A.1 Nactete veliciny t a y z textoveho souboru ty.txt do Matlabu 
% A.2 Vykreslete graf zavislosti y=y(t) modre teckovane ... plot(x,y,'.')
% A.3 Pro kazdou hodnotu y spocitejte novou velicinu z=y.^2.*sin(y)
% A.4 Vyvolejte nove okno pro grafy a vykreslete pod sebe tri grafy:
%     y=y(t) modre plnou carou
%     z=z(t) zelene plnou carou
%     z=z(y) cerne  teckovane   
%     V grafech popište osy a vložte i vlastni titulky vsech grafu.
% A.5 ulozte vypocitanou velicinu y do noveho souboru y.txt prikazem: "save y.txt  y -ascii"
%B 
%B.1 pomoci inverzni matice vyreste soustavu linearnich rovnic Av=b => b=inv(A)*A*b pro
%vektor neznamych    v=[x
%                       y
%                       z]
% kde rovnice jsou   
%  5*x - 3*y +   z = 5
% -4*x + 3*y + 2*z = 9
%  6*x - 7*y + 3*z = 3
% Napoveda: Reseni, tj. vektor x , lze nalezt (pokud existuje) jako soucin
% inverzni matice A zleva s vektorem b.