Seuraa 
Viestejä45973

Pitäisi kirjoittaa ohjelma joka laskee määrätyn integraalin yleiselle funktiolle f(x)

f(x)/sqrt(1-x^2) välillä [-1,1]

Tämä pitäisi siis tehdä käyttäen Chebyshev-Gauss kvadratuuria ja tarkkuudella 1e-8.
Ohjelman ja koodin tekemisen jälkeen pitäisi ohjelmaa osata sitten soveltaa johonkin annettuun integraaliin.

Ja lisäohjeena oli vielä että:

"Koska emme yleensä tiedä integraalin tarkkaa arvoa, kyseinen tarkkuusvaatimus tarkoittaa
käytännössä sitä, että integroinnin kertaluvun (eli laskentapisteiden määrän) on oltava niin
suuri, että lopputulos muuttuu vähemmän kuin 1e-8. Eli lasketaan integraali kertaluvuilla 1,
2, 3, ... kunnes kahden peräkkäisen tuloksen erotus on alle 1e-8. Ohjelman voi tehdä
silmukassa käyttäen while ja/tai for rakenteita ja mahdollisesti break komentoa, jolla
silmukasta pääsee ulos.

Painot ja laskupisteet löytyvät mm. sivulta: http://en.wikipedia.org/wiki/Chebyshev–Gauss_quadrature"

Oon ihan täysin ja totaalisen jumissa tän tehtävän kanssa! Ihan kaikki apu on tervetullutta ja oon tosi kiitollinen jos osaatte auttaa!

Kommentit (8)

Cargo
Seuraa 
Viestejä979

Assari sitten neuvoo laskareissa

" sähkö (se sähkö, jota tuotetaan mm. voimalaitoksissa) ei ole energiaa "
- Vastaaja_s24fi

“Jos et ole kaksikymppisenä vihreä, sinulla ei ole sydäntä. Mutta jos et ole nelikymppisenä perussuomalainen, sinulla ei ole aivoja.”
- Cargo

Kun neuvoiskin.. Homman juju vaan on siinä, että laskareita ei ole vaan tehtävät pitäis vaan ite saada tehtyä ja hyväksyttää sitten ratkaisut.

Sisältö jatkuu mainoksen alla
Sisältö jatkuu mainoksen alla
planetisti
Seuraa 
Viestejä463

Funktion arvo on "Int". Laskeaksesi yleisen funktion f arvon pitää käyttää "eval" komentoa. Pikaisesti testasin, ompahan järkyttävän hitaasti suppeneva menetelmä. Vai onko minulla, virhe, en jaksa tarkistaa.

MUOK: kai siinä jotain mätää on, mutten kyllä keksi mitä

[code:12rqffvl]n = 1;
err = 1;
xi = cos((2i-1)/(2*n)*pi);
wi = pi/n;
f = sin(xi);
Int1 = sum(f.*wi);

while err>1e-8
n = n+1;
nvec = 1:n;
xivec = cos((2i-1)./(2*nvec)*pi);
wivec = pi./nvec;
fvec = f(xivec);
Int = sum(fvec.*wivec);
err = abs(Int-Int1);
Int1 = Int;
end
[/code:12rqffvl]

Kiitos! Testailen ja muokkaan tuota ja katson, miltä näyttää. Jos muilla on jonkinlaisia muita ratkaisuja, niin niitä edelleen otetaan vastaan. On tämä selvästi tyhjää parempi, koska jonkun toisen ajatuksien avulla on itsekin helpompi saada kiinni homman jujusta ja päästä edes alkuun.

planetisti
Funktion arvo on "Int". Laskeaksesi yleisen funktion f arvon pitää käyttää "eval" komentoa. Pikaisesti testasin, ompahan järkyttävän hitaasti suppeneva menetelmä. Vai onko minulla, virhe, en jaksa tarkistaa.

MUOK: kai siinä jotain mätää on, mutten kyllä keksi mitä

[code:1b4rsj0c]n = 1;
err = 1;
xi = cos((2i-1)/(2*n)*pi);
wi = pi/n;
f = sin(xi);
Int1 = sum(f.*wi);

while err>1e-8
n = n+1;
nvec = 1:n;
xivec = cos((2i-1)./(2*nvec)*pi);
wivec = pi./nvec;
fvec = f(xivec);
Int = sum(fvec.*wivec);
err = abs(Int-Int1);
Int1 = Int;
end
[/code:1b4rsj0c]





Tämän kohdan
while err>1e-8 pitäisi varmaan olla, että while err<1e-8, kun kahden peräkkäisen tuloksen erotus piti olla alle 1e-8

planetisti
Funktion arvo on "Int". Laskeaksesi yleisen funktion f arvon pitää käyttää "eval" komentoa. Pikaisesti testasin, ompahan järkyttävän hitaasti suppeneva menetelmä. Vai onko minulla, virhe, en jaksa tarkistaa.

MUOK: kai siinä jotain mätää on, mutten kyllä keksi mitä

[code:3uohlvui]n = 1;
err = 1;
xi = cos((2i-1)/(2*n)*pi);
wi = pi/n;
f = sin(xi);
Int1 = sum(f.*wi);

while err>1e-8
n = n+1;
nvec = 1:n;
xivec = cos((2i-1)./(2*nvec)*pi);
wivec = pi./nvec;
fvec = f(xivec);
Int = sum(fvec.*wivec);
err = abs(Int-Int1);
Int1 = Int;
end
[/code:3uohlvui]





Tämän kohdan
while err>1e-8 pitäisi varmaan olla, että while err<1e-8, kun kahden peräkkäisen tuloksen erotus piti olla alle 1e-8

Vanha jäärä
Seuraa 
Viestejä1572

Tartun tässä tapani mukaan toisarvoiseen seikkaan: se venäläislähtöinen nimi Чебышёв ei sitten ole Chebyshev, vaan suomalaisen translitteroinnin mukaan Tšebyšov. Chebyshev on kyseisen nimen englanninkielinen translitterointi, jota yksityiskohdista niin tarkkaan niuhottavat matemaatikotkin meillä jostakin syystä suomenkielisessä tekstissä käyttävät.

Vanha jäärä

Suosituimmat

Uusimmat

Sisältö jatkuu mainoksen alla

Uusimmat

Suosituimmat