Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.43 KB | None | 0 0
  1. Procijenite  apsolutnu  pogrešku  pri  izračunavanju  volumena  idealnog  plina  formulom  ako  je  poznato  da  je
  2. tx=280
  3. apt=0.2  
  4. px=101325  
  5. app=20  
  6. nx=100  
  7. apn=0.1  
  8. r=8.3144621  
  9. vx=(nx*r*tx)/px  
  10. ap=abs((r*tx)/px)*apn  +  abs(nx*r*tx*(-1./(px**2)))*app  +  abs((nx*r)/px)*apt  print  "apsolutna  pogreska:"  ,  ap
  11.  
  12. -Izracunaj uvjetnost za neku funkciju x zadano
  13. from  math  import  *  x=1.12  conda=abs(x/sqrt(x**2  +  1))  print  "apsolutna  uvjetovanost",conda
  14.  
  15. -#2. Zaokružite broj π na tri decimale,
  16. #   zatim odredite apsolutnu I relativnu grešku aproksimacije.
  17. from math import *
  18.  
  19. pix=round(pi,3)
  20. apsgr=abs(pi-pix)
  21. relgr=apsgr/pix
  22.  
  23. print "apsolutna greska", apsgr
  24. print "relativna greska", relgr
  25.  
  26. -IzraÄŤunajte apsolutnu i relativnu uvjetovanost funkcije
  27. #          f(x) = ln(x) u okolini toÄŤke x0 = 2.
  28. from math import log
  29.  
  30. x=2.
  31. condfaps=abs(1./x)
  32. condfrel=abs(1./log(x))
  33.  
  34. print condfaps
  35. print condfrel
  36.  
  37. -6. Aproksimirajte funkciju 1/(x^2+1) na intervalu [0, 5]
  38. #   upotrebom 5, 10, 20 ÄŤvorova. IzraÄŤunajte relativnu pogrešku u ÄŤvoru 0.6.
  39. from numpy import *
  40. from scipy import interpolate as i
  41. import pylab as py
  42.  
  43. def fun(x):
  44.     return 1./(x**2+1)
  45.  
  46. x5=linspace(0,5,5)
  47. i5=i.BarycentricInterpolator(x5,fun(x5))
  48. aps5=abs(fun(0.6)- i5(0.6))
  49. print "apsolutna greška na 5 cvorova", aps5
  50.  
  51. x10=linspace(0,5,10)
  52. i10=i.BarycentricInterpolator(x10,fun(x10))
  53. aps10=abs(fun(0.6)- i10(0.6))
  54. print "apsolutna greška na 10 cvorova", aps10
  55.  
  56. x20=linspace(0,5,20)
  57. i20=i.BarycentricInterpolator(x20,fun(x20))
  58. aps20=abs(fun(0.6)- i20(0.6))
  59. print "apsolutna greška na 20 cvorova", aps20
  60.  
  61. x=linspace(0,5,1000)
  62. py.plot(x,fun(x),'g')
  63. py.plot(x,i5(x),'r')
  64. py.plot(x,i10(x),'b')
  65. py.plot(x,i20(x),'y')
  66. py.show()
  67.  
  68. -Odredite Lagrangeov polinom koji interpolira funkciju zadanu tablicom
  69. #  xi = -1, 0, 1
  70. #  yi = 10, 5, 6
  71. from numpy import *
  72. from scipy import interpolate as i
  73.  
  74. x=array([-1,0,1])
  75. y=array([10,5,6])
  76.  
  77. lpol=i.lagrange(x,y)
  78. print lpol
  79.  
  80. -4. Aproksimirajte Lagrangeovim polinomom funkciju x*e^x.
  81. #  Interpolirajte funkciju u čvorovima 1, 2, 3 i
  82. #  Izračunajte relativnu pogrešku aproksimacije u čvoru 1.5.
  83. from numpy import *
  84. from scipy import interpolate as i
  85. import pylab as py
  86.  
  87. def l0(x,x0,x1,x2):
  88.     return ((x-x1)*(x-x2))/((x0-x1)*(x0-x2))
  89.  
  90. def l1(x,x0,x1,x2):
  91.     return ((x-x0)*(x-x2))/((x1-x0)*(x1-x2))
  92.  
  93. def l2(x,x0,x1,x2):
  94.     return ((x-x0)*(x-x1))/((x2-x0)*(x2-x1))
  95.  
  96. def fun(x):
  97.     return  x*exp(x) #exp(x)=e^x
  98.  
  99.  
  100. def Lag(x,x0,x1,x2):
  101.     return fun(x0)*l0(x,x0,x1,x2)+fun(x1)*l1(x,x0,x1,x2)+fun(x2)*l2(x,x0,x1,x2)
  102.  
  103. #provjera da li je vrijednost funkcije i Lagrangea u cvorovima jednaka
  104. print fun(1.),Lag(1.,1.,2.,3.)
  105. print fun(2.),Lag(2.,1.,2.,3.)
  106. print fun(3.),Lag(3.,1.,2.,3.)
  107.  
  108. #racunanje relativne greske
  109. aps=abs(fun(1.5)-Lag(1.5,1.,2.,3.))
  110. print "apsolutna greska",aps
  111.  
  112. rel=aps/abs(fun(1.5))
  113. print "relativna greska",rel
  114.  
  115. ## crtanje polinoma i funkcije
  116. xk=linspace(0,4,1000)
  117. py.plot(xk,fun(xk),'g')
  118. py.plot(xk,Lag(xk,1.,2.,3.),'r')
  119. cv=[1.,2.,3.]#za crtanje cvorova
  120. py.plot(cv,fun(cv),'o')#crtamo cvorove
  121. py.show()
  122.  
  123. -4. Aproksimirajte Lagrangeovim polinomom funkciju x*e^x.
  124. #  Interpolirajte funkciju u čvorovima 1, 2, 3 i
  125. #  Izračunajte relativnu pogrešku aproksimacije u čvoru 1.5.
  126. from numpy import *
  127. from scipy import interpolate as i
  128. import pylab as py
  129.  
  130. def l0(x,x0,x1,x2):
  131.     return ((x-x1)*(x-x2))/((x0-x1)*(x0-x2))
  132.  
  133. def l1(x,x0,x1,x2):
  134.     return ((x-x0)*(x-x2))/((x1-x0)*(x1-x2))
  135.  
  136. def l2(x,x0,x1,x2):
  137.     return ((x-x0)*(x-x1))/((x2-x0)*(x2-x1))
  138.  
  139. def fun(x):
  140.     return  x*exp(x) #exp(x)=e^x
  141.  
  142.  
  143. def Lag(x,x0,x1,x2):
  144.     return fun(x0)*l0(x,x0,x1,x2)+fun(x1)*l1(x,x0,x1,x2)+fun(x2)*l2(x,x0,x1,x2)
  145.  
  146. #provjera da li je vrijednost funkcije i Lagrangea u cvorovima jednaka
  147. print fun(1.),Lag(1.,1.,2.,3.)
  148. print fun(2.),Lag(2.,1.,2.,3.)
  149. print fun(3.),Lag(3.,1.,2.,3.)
  150.  
  151. #racunanje relativne greske
  152. aps=abs(fun(1.5)-Lag(1.5,1.,2.,3.))
  153. print "apsolutna greska",aps
  154.  
  155. rel=aps/abs(fun(1.5))
  156. print "relativna greska",rel
  157.  
  158. ## crtanje polinoma i funkcije
  159. xk=linspace(0,4,1000)
  160. py.plot(xk,fun(xk),'g')
  161. py.plot(xk,Lag(xk,1.,2.,3.),'r')
  162. cv=[1.,2.,3.]#za crtanje cvorova
  163. py.plot(cv,fun(cv),'o')#crtamo cvorove
  164. py.show()
  165.  
  166. -5. Nacrtajte grafove Lagrangeovih baza za čvorove 0, 2, 3
  167. from numpy import *
  168. from scipy import interpolate as i
  169. import pylab as py
  170.  
  171. def l0(x,x0,x1,x2):
  172.     return ((x-x1)*(x-x2))/((x0-x1)*(x0-x2))
  173.  
  174. def l1(x,x0,x1,x2):
  175.     return ((x-x0)*(x-x2))/((x1-x0)*(x1-x2))
  176.  
  177. def l2(x,x0,x1,x2):
  178.     return ((x-x0)*(x-x1))/((x2-x0)*(x2-x1))
  179.  
  180. x=linspace(-0.5,3.5,1000)
  181. py.plot(x,l0(x,0.,2.,3.),'g')
  182. py.plot(x,l1(x,0.,2.,3.),'b')
  183. py.plot(x,l2(x,0.,2.,3.),'r')
  184. py.show()
  185.  
  186. -#primjer sa slajdova predavanja za RC funkciju 1/(1+25x^2 )
  187. from numpy import *
  188. from scipy import interpolate as i
  189. import pylab as py
  190.  
  191. def fun(x):
  192.     return 1./(25*x**2+1)
  193.  
  194. x5=linspace(-1,1,5)
  195. i5=i.BarycentricInterpolator(x5,fun(x5))
  196. aps5=abs(fun(0.95)- i5(0.95))
  197. rel5=aps5/abs(fun(0.95))
  198. print "relativna greška na 5 cvorova", rel5
  199.  
  200. x10=linspace(-1,1,10)
  201. i10=i.BarycentricInterpolator(x10,fun(x10))
  202. aps10=abs(fun(0.95)- i10(0.95))
  203. rel10=aps10/abs(fun(0.95))
  204. print "relativna greška na 10 cvorova", rel10
  205.  
  206. x20=linspace(-1,1,20)
  207. i20=i.BarycentricInterpolator(x20,fun(x20))
  208. aps20=abs(fun(0.95)- i20(0.95))
  209. rel20=aps20/abs(fun(0.95))
  210. print "relativna greška na 20 cvorova", rel20
  211.  
  212. x=linspace(-1,1,1000)
  213. py.plot(x,fun(x),'r')
  214. py.plot(x,i5(x),'g')
  215. py.plot(x,i10(x),'b')
  216. py.plot(x,i20(x),'y')
  217. py.show()
  218.  
  219. -2. Formirajte Newtonov interpolacijski polinom koji zadovoljava uvjete
  220. #               p(0) = −1; p(2) = 2; p(6) = 3
  221. from numpy import *
  222.  
  223. x=array([0,2.,6.])
  224. f=zeros([3,3])
  225.  
  226. f[0,0]=-1.
  227. f[1,0]=2.
  228. f[2,0]=3.
  229.  
  230. f[0,1]=(f[1,0]-f[0,0])/(x[1]-x[0])
  231. f[1,1]=(f[2,0]-f[1,0])/(x[2]-x[1])
  232. f[0,2]=(f[1,1]-f[0,1])/(x[2]-x[0])
  233.  
  234. def npol(t,x):#u t racunamo vrijednost newtnovog polinoma, u x su cvorovi
  235.      return f[0,0]+(t-x[0])*f[0,1]+(t-x[0])*(t-x[1])*f[0,2]
  236.  
  237. print npol(0.,x)
  238. print npol(2.,x)
  239. print npol(6.,x)
  240.  
  241. -3. Formirajte Newtonov interpolacijski polinom koji interpolira funkciju e^x
  242. #   u ÄŤvorovima 2, 3, 5 i ocjenite globalnu pogrešku na intervalu.
  243. #ne radimo procjenu nego relativnu gresku u 2.4
  244.  
  245. from numpy import *
  246.  
  247. def fun(x):
  248.     return exp(x)
  249.  
  250. x=array([2.,3.,5.])
  251. f=zeros([3,3])
  252.  
  253. f[0,0]=fun(x[0]) #podljeljena razlika f[x0]=vrijednosti funkcije u cvoru x0
  254. f[1,0]=fun(x[1])
  255. f[2,0]=fun(x[2])
  256.  
  257. f[0,1]=(f[1,0]-f[0,0])/(x[1]-x[0])
  258. f[1,1]=(f[2,0]-f[1,0])/(x[2]-x[1])
  259. f[0,2]=(f[1,1]-f[0,1])/(x[2]-x[0])
  260.  
  261. def npol(t,x):#u t racunamo vrijednost newtnovog polinoma, u x su cvorovi
  262.      return f[0,0]+(t-x[0])*f[0,1]+(t-x[0])*(t-x[1])*f[0,2]
  263.  
  264. #provjera da li su iste vrijednosti fije i polinoma u cvorovima interpolacije
  265. print npol(2.,x),fun(2.)
  266. print npol(3.,x),fun(3.)
  267. print npol(5.,x),fun(5.)
  268.  
  269.  
  270.  
  271. # relativna greska u cvoru 2.4
  272. aps=abs(fun(2.4)-npol(2.4,x))
  273. rel=aps/abs(fun(2.4))
  274. print "relativna greska u cvoru 2.4 je:",rel
  275.  
  276. --#1.  Aproksimirajte linarnim splajnom funkciju x^2*sin(x) na intervalu −π, Ď€.
  277. #    Koristite uniformnu mreĹľu od 10, 20 i 40 numeriÄŤkih ÄŤvorova.
  278. #    IzraÄŤunajte apsolutnu pogrešku aproksimacije u ÄŤvoru x = 1 za sva tri sluÄŤaja.
  279. from scipy import interpolate as i #interp1d
  280. from numpy import *
  281. import pylab as py
  282.  
  283. def fun(x):
  284.     return x**2*sin(x)
  285.  
  286. x10=linspace(-pi,pi,10)
  287. y10=fun(x10)
  288. s10lin=i.interp1d(x10,y10,kind="linear") #gotovo formiranje splinea
  289. aps10=abs(fun(1.)-s10lin(1.))
  290. print "apsolutna na 10 cvorova",aps10
  291.  
  292. x20=linspace(-pi,pi,20)
  293. y20=fun(x20)
  294. s20lin=i.interp1d(x20,y20,kind="linear")
  295. aps20=abs(fun(1.)-s20lin(1.))
  296. print "apsolutna na 20 cvorova",aps20
  297.  
  298. x40=linspace(-pi,pi,40)
  299. y40=fun(x40)
  300. s40lin=i.interp1d(x40,y40,kind="linear")
  301. aps40=abs(fun(1.)-s40lin(1.))
  302. print "apsolutna na 40 cvorova",aps40
  303.  
  304. x=linspace(-pi,pi,1000)
  305. py.plot(x,fun(x), 'b')
  306. py.plot(x,s10lin(x),'y')
  307. py.plot(x,s20lin(x),'g')
  308. py.plot(x,s40lin(x),'r')
  309. py.show()
  310.  
  311.  
  312. --#2. Kubičnim splajnom aproksimirajte funkciju 1/(1+5*x^2) na intervalu [−1, 1]
  313. #   upotrebom 5, 10, 20 ÄŤvorova. IzraÄŤunajte relativnu pogrešku u ÄŤvoru
  314. #   0.95 u sva tri sluÄŤaja.
  315. from numpy import *
  316. from scipy import interpolate as i
  317. import pylab as py
  318. def fun(x):
  319.     return 1./(1+5*x**2)
  320.  
  321. x5=linspace(-1,1,5)
  322. y5=fun(x5)
  323. s5k=i.interp1d(x5,y5,kind="cubic")
  324. aps5=abs(fun(0.95)-s5k(0.95))
  325. rel5=aps5/abs(fun(0.95))
  326. print "relativna na 5 cvorova",rel5
  327.  
  328. x10=linspace(-1,1,10)
  329. y10=fun(x10)
  330. s10k=i.interp1d(x10,y10,kind="cubic")
  331. aps10=abs(fun(0.95)-s10k(0.95))
  332. rel10=aps10/abs(fun(0.95))
  333. print "relativna na 10 cvorova",rel10
  334.  
  335. x20=linspace(-1,1,20)
  336. y20=fun(x20)
  337. s20k=i.interp1d(x20,y20,kind="cubic")
  338. aps20=abs(fun(0.95)-s20k(0.95))
  339. rel20=aps20/abs(fun(0.95))
  340. print "relativna na 20 cvorova",rel20
  341.  
  342. x=linspace(-1,1,1000)
  343. py.plot(x,fun(x),'b')
  344. py.plot(x,s5k(x),'y')
  345. py.plot(x,s10k(x),'r')
  346. py.plot(x,s20k(x),'g')
  347. py.show()
  348.  
  349.  
  350. --#2. Konstruirajte i nacrtajte interpolacijski polinom koji zadovoljava uvjete:
  351. #                 p(1) = 1; p'(1) = 2; p(4) = 3
  352. from numpy import *
  353. from numpy import linalg as l
  354. import pylab as py
  355. from numpy.polynomial import polynomial as p
  356.  
  357. M1=array([[1,1,1],[0,1,2],[1,4,16]])
  358. M2=array([1,2,3])
  359.  
  360. ipol=l.solve(M1,M2)
  361.  
  362. print p.polyval(1,ipol)
  363. print p.polyval(1,p.polyder(ipol))
  364. print p.polyval(4,ipol)
  365.  
  366. x=linspace(1,4,100)
  367. y=p.polyval(x,ipol)
  368. py.plot(x,y)
  369. py.show()
  370.  
  371.  
  372. --
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement