Advertisement
Guest User

Untitled

a guest
Dec 9th, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. '''
  2. Created on 5.12.2016
  3.  
  4. @author: Veijo
  5. '''
  6.  
  7. def lue_integrointivalin_tiedot():
  8. alku = float(input("Kerro integrointivalin alkupiste.\n"))
  9. loppu = float(input("Kerro integrointivalin loppupiste.\n"))
  10. lkm = int(input("Moneenko osaan vali jaetaan?\n"))
  11. return (alku,loppu,lkm)
  12.  
  13. def lue_polynomin_tiedot():
  14. syote = input("Anna polynomin termien kertoimet jarjestyksessa valilyonnilla\nerotettuna suurimmasta asteluvusta alkaen.\n")
  15. kertoimet = [float(x) for x in syote.split(" ")]
  16. return kertoimet
  17.  
  18. def laske_polynomin_arvo(poly, x):
  19. summa = 0
  20. for i in range(len(poly)):
  21. aste = len(poly) - i -1
  22. summa += poly[i] * x ** aste
  23. return summa
  24.  
  25. def laske_tarkka_integraali(poly, alku, loppu):
  26. integraali_poly = []
  27. for i in range(len(poly)):
  28. aste = len(poly) - i - 1
  29. integraali_poly.append(poly[i] * (aste + 1))
  30. integraali_poly.append(0)
  31. def laske_puolisuunnikasmenetelmalla(poly, alku, loppu, lkm):
  32. w = (loppu - alku / lkm)
  33. nykyinen_kohta = alku
  34. h = (laske_polynomin_arvo(poly,nykyinen_kohta) + laske_polynomin_arvo(poly, nykyinen_kohta + w))/2.0
  35. s = 0.0
  36. for i in range(0,lkm):
  37. s += laske_polynomin_arvo(poly, nykyinen_kohta) * w
  38. s += h*laske_polynomin_arvo(poly, loppu) / 2.0
  39. return s
  40. def laske_simpsonin_menetelmalla(poly, alku, loppu, lkm):
  41. h=(loppu-alku)/lkm
  42. k=0.0
  43. x=alku + h
  44. for i in range (1, lkm//2 + 1):
  45. x += 2*h
  46. k += 4*laske_polynomin_arvo(x)
  47. x = alku + 2*h
  48. for i in range(2,lkm/2):
  49. x += 2*h
  50. k += 2*poly(x)
  51. return (h/3)*(poly(x)+poly(loppu)+k)
  52. def main():
  53. poly = lue_polynomin_tiedot()
  54. alku,loppu, osa = lue_integrointivalin_tiedot()
  55. print("Integraalin tarkka arvo on", laske_tarkka_integraali(poly, alku, loppu))
  56. laske_puolisuunnikasmenetelmalla(poly, alku, loppu, osa)
  57. print("Likiarvo puolisuunnikasmenetelmalla on", laske_puolisuunnikasmenetelmalla(poly, alku, loppu, osa))
  58. laske_simpsonin_menetelmalla(poly, alku, loppu, osa)
  59. print("Likiarvo Simpsonin menetelmalla on", laske_simpsonin_menetelmalla(poly, alku, loppu, osa))
  60.  
  61. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement