Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Created on 5.12.2016
- @author: Veijo
- '''
- def lue_integrointivalin_tiedot():
- alku = float(input("Kerro integrointivalin alkupiste.\n"))
- loppu = float(input("Kerro integrointivalin loppupiste.\n"))
- lkm = int(input("Moneenko osaan vali jaetaan?\n"))
- return (alku,loppu,lkm)
- def lue_polynomin_tiedot():
- syote = input("Anna polynomin termien kertoimet jarjestyksessa valilyonnilla\nerotettuna suurimmasta asteluvusta alkaen.\n")
- kertoimet = [float(x) for x in syote.split(" ")]
- return kertoimet
- def laske_polynomin_arvo(poly, x):
- summa = 0
- for i in range(len(poly)):
- aste = len(poly) - i -1
- summa += poly[i] * x ** aste
- return summa
- def laske_tarkka_integraali(poly, alku, loppu):
- integraali_poly = []
- for i in range(len(poly)):
- aste = len(poly) - i - 1
- integraali_poly.append(poly[i] * (aste + 1))
- integraali_poly.append(0)
- def laske_puolisuunnikasmenetelmalla(poly, alku, loppu, lkm):
- w = (loppu - alku / lkm)
- nykyinen_kohta = alku
- h = (laske_polynomin_arvo(poly,nykyinen_kohta) + laske_polynomin_arvo(poly, nykyinen_kohta + w))/2.0
- s = 0.0
- for i in range(0,lkm):
- s += laske_polynomin_arvo(poly, nykyinen_kohta) * w
- s += h*laske_polynomin_arvo(poly, loppu) / 2.0
- return s
- def laske_simpsonin_menetelmalla(poly, alku, loppu, lkm):
- h=(loppu-alku)/lkm
- k=0.0
- x=alku + h
- for i in range (1, lkm//2 + 1):
- x += 2*h
- k += 4*laske_polynomin_arvo(x)
- x = alku + 2*h
- for i in range(2,lkm/2):
- x += 2*h
- k += 2*poly(x)
- return (h/3)*(poly(x)+poly(loppu)+k)
- def main():
- poly = lue_polynomin_tiedot()
- alku,loppu, osa = lue_integrointivalin_tiedot()
- print("Integraalin tarkka arvo on", laske_tarkka_integraali(poly, alku, loppu))
- laske_puolisuunnikasmenetelmalla(poly, alku, loppu, osa)
- print("Likiarvo puolisuunnikasmenetelmalla on", laske_puolisuunnikasmenetelmalla(poly, alku, loppu, osa))
- laske_simpsonin_menetelmalla(poly, alku, loppu, osa)
- print("Likiarvo Simpsonin menetelmalla on", laske_simpsonin_menetelmalla(poly, alku, loppu, osa))
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement