<a href="https://colab.research.google.com/github/danio2010/ON2022/blob/main/lab3.ipynb" target="_parent"></a>

#### Zadanie 1
Dany jest słownik student={'imie':'Jan', 'nazwisko':'kowalski','wiek':25, 'wzrost':188, 'waga':80, 'miasto':'Toruń'}

* Wypisz jego elementy w postaci "klucz -> wartość "
* Zmień 'wzrost' na 182 
* Dodaj klucz 'wynik matury' z dowolną wartością
* Usuń klucz (i wartość) 'miasto'


```python
student={'imie':'Jan', 'nazwisko':'kowalski','wiek':25, 'wzrost':188, 'waga':80, 'miasto':'Toruń'}
```


```python
for klucz in student.keys():
  print(klucz+'->'+str(student[klucz]))
```

    imie->Jan
    nazwisko->kowalski
    wiek->25
    wzrost->188
    waga->80
    miasto->Toruń



```python
student['wzrost']=182
```


```python
student
```




    {'imie': 'Jan',
     'miasto': 'Toruń',
     'nazwisko': 'kowalski',
     'waga': 80,
     'wiek': 25,
     'wzrost': 182}




```python
student['wynik matury']=20
```


```python
del student['miasto']
```


```python
student
```




    {'imie': 'Jan',
     'nazwisko': 'kowalski',
     'waga': 80,
     'wiek': 25,
     'wynik matury': 20,
     'wzrost': 182}




```python

```


```python

```

####Zadanie 2
Dane są dwie listy równej długości

klucze=['klucz1','klucz2','inny klucz', 'test']
wartosci=[1,2,5,1]
Utwórz w sposób zautomatyzowany (nie ręcznie) słownik, który kolejnym kluczom przypisze kolejne wartości.


```python
klucze=['klucz1','klucz2','inny klucz', 'test']
wartosci=[1,2,5,1]
nowy=zip(klucze,wartosci)
```


```python
list(lista)
```




    [('klucz1', 1), ('klucz2', 2), ('inny klucz', 5), ('test', 1)]




```python
dict(nowy)
```




    {'inny klucz': 5, 'klucz1': 1, 'klucz2': 2, 'test': 1}




```python

```

#### Zadanie 3
Napisz funkcję obliczającą $n$-ty wyraz ciągu zadanego rekurencyjnie
1. $a_0=1$, $a_{k+1}=2a_k$ dla $k\geq 0$
2. $b_0=0$, $b_1=1$, $b_{k+2}=b_{k+1}+b_k$ dla $k\geq 0$


```python
def ciag(n):
  if n==0:
    return 1
  else:
    return 2*ciag(n-1)
```


```python
ciag(5)
```




    32




```python

```

# Sympy


```python
from sympy import *

```


```python
sin(30)
```




$\displaystyle \sin{\left(30 \right)}$




```python
import math
```


```python
math.sin(30)
```




    -0.9880316240928618




```python
x,y=symbols('x,y')
```


```python
x
```




$\displaystyle x$




```python
y
```




$\displaystyle y$




```python
cos(x)**2+sin(x)**2
```




$\displaystyle \sin^{2}{\left(x \right)} + \cos^{2}{\left(x \right)}$




```python
simplify(_)
```




$\displaystyle 1$




```python
solve(2*x-5)
```




    [5/2]




```python
wyr=x**2+5*x+3
```


```python
wyr.subs(x,1)
```




$\displaystyle 9$




```python
sin(30).evalf()
```




$\displaystyle -0.988031624092862$




```python
wyr.diff(x)
```




$\displaystyle 2 x + 5$




```python
f=symbols('f',cls=Function)
```


```python
g=Function('g')
```


```python
ODE=f(x).diff(x)-f(x)
```


```python
dsolve(ODE)
```




$\displaystyle f{\left(x \right)} = C_{1} e^{x}$




```python
integrate(wyr,(x,0,1))
```




$\displaystyle \frac{35}{6}$




```python
plot(wyr,(x,0,5))
```


```python

```

#### Zadanie 4
Napisz funkcję $pochodna(funkcja,punkt)$, która oblicza z definicji pochodną danej funkcji w punkcie. Korzystając ze swojej funkcji oblicz

* pochodną funkcji $e^{x^2}$ w punkcie $1$
* pochodną funkcji $x*\ln(\sqrt(x))$ w punkcie $1$

Porównaj wyniki do tych uzyskanych za pomocą metody diff


```python
from sympy import *
def pochodna(f,x,a):
  h=symbols('h')
  return limit((f.subs(x,a+h)-f.subs(x,a))/h,h,0)

pochodna(y**2,y,1)
```




$\displaystyle 2$




```python

```

## Zadanie domowe
a) Napisz funkcję obliczającą wartość wielomianu interpolacyjnego Lagrange'a w zadanym punkcie. Funkcja powinna przyjmować następujące argumenty:

X - tablicę wartości  xi ,
Y - tablicę wartości  yi ,
x - punkt, w którym liczymy wartość wielomianu.
b) Dodaj opcjonalny argument do powyższej funkcji, który pozwoli wyświetlić wzór interpolacyjny Lagrange'a w postaci symbolicznej.

c) sporządź wykres otrzymanego wielomianu na podstawie symbolicznego wzoru z b)

d) wybierz dwie funkcje: wielomian stopnia 5 i inną funkcję niebędącą wielomianem. Sporządź ich aproksymacje za pomocą 4 wybranych punktów. Porównaj wykresy oryginalnych funkcji i ich przybliżeń. Sformułuj wnioski.


```python

```

f4b4b4f98644a419037d71395efa5c130b634104
ipynb
Jupyter Notebook
lab3.ipynb
danio2010/ON2022
0b5198a7a66e708c1a5ebc135ad86c91d414506c
MIT
lab3.ipynb
danio2010/ON2022
0b5198a7a66e708c1a5ebc135ad86c91d414506c
MIT
2022-02-16T16:38:24.000Z
2022-02-24T00:41:07.000Z
lab3.ipynb
danio2010/ON2022
0b5198a7a66e708c1a5ebc135ad86c91d414506c
MIT
2022-02-23T12:17:37.000Z
2022-03-15T15:09:43.000Z
Qwen/Qwen-72B
1. YES
2. YES