szukanie zaawansowane
 [ Posty: 6 ] 
Autor Wiadomość
Mężczyzna Offline
PostNapisane: 20 lis 2009, o 21:19 
Użytkownik

Posty: 5
Lokalizacja: Na fotelu
Cześć wszystkim. Prosiłbym wszystkich o pomoc w rozwiązaniu tej całki kwadraturami Gaussa-Hermite'a.
Chciałbym się dowiedzieć jak się je rozwiązuje a nie ma w necie za bardzo przykładów tylko sucha teoria:

\int_{-5}^{5} e^{-x ^{2}}(1-x) dx

prosiłbym również o komentarze przy rozwiązaniu:P
wiem że sporo wymagam ale liczę że znajdzie się ktoś kto mi pomoże szczególnie że znam zagadnienie ale nie na tyle żebym umiał rozwiązać takie zadanie...
Góra
Instytut Matematyczny, Uniwersytet Wrocławski
Mężczyzna Offline
PostNapisane: 21 lis 2009, o 00:14 
Użytkownik
Avatar użytkownika

Posty: 283
Lokalizacja: Krosno/Kraków
\int_{-5}^5e^{-x^2}(1-x)dx=\Sigma_{j=1}^n w_je^{-x_j^2}(1-x_j),
gdzie węzły kwadratury x_j to kolejne zera wielomianu Hermite'a. Ciężko tu dodać coś więcej jeżeli chodzi o teorię. Rozwiązanie to już inna sprawa. :) Schemat jest banalny - znajdź zera w. Hermite'a oraz współczynniki w_j w zadanym przedziale oraz przy określonej liczbie podziałów n i podstaw. :) Z kolei techniczne wykonanie niekoniecznie już jest tak trywialne, a na pewno czasochłonne.

Jeżeli chcesz to scałkować w ten sposób, to najlepszym rozwiązaniem będzie użycie gotowej procedury numerycznej (e.g. numerical recipes C (or fortran), subroutine gauher).
Góra
Mężczyzna Offline
PostNapisane: 21 lis 2009, o 12:17 
Użytkownik

Posty: 5
Lokalizacja: Na fotelu
Vigl napisał(a):
\int_{-5}^5e^{-x^2}(1-x)dx=\Sigma_{j=1}^n w_je^{-x_j^2}(1-x_j)

a czy nie jest to tak że:
\int_{-5}^5e^{-x^2}(1-x)dx=\Sigma_{j=1}^n w_j(1-x_j)
gdzie,
w_j=e^{-x_j^2}
bo to wyrażenie to właśnie ta waga chyba...
ja mam problem jak tą całkę ograniczyć do jakiegoś przedziału, (tutaj -5,5)
Vigl napisał(a):
Jeżeli chcesz to scałkować w ten sposób, to najlepszym rozwiązaniem będzie użycie gotowej procedury numerycznej (e.g. numerical recipes C (or fortran), subroutine gauher).

no właśnie ja chcę napisać to w cpp ale muszę poznać dokładnie metodę jak działa na zadanym przedziale
i do tego potrzebuje rozwiązania chociaż jednego przykładu
Góra
Mężczyzna Offline
PostNapisane: 21 lis 2009, o 13:15 
Użytkownik
Avatar użytkownika

Posty: 283
Lokalizacja: Krosno/Kraków
lubiemisia napisał(a):
Vigl napisał(a):
\int_{-5}^5e^{-x^2}(1-x)dx=\Sigma_{j=1}^n w_je^{-x_j^2}(1-x_j)

a czy nie jest to tak że:
\int_{-5}^5e^{-x^2}(1-x)dx=\Sigma_{j=1}^n w_j(1-x_j)
gdzie,
w_j=e^{-x_j^2}
bo to wyrażenie to właśnie ta waga chyba...

No właśnie z w_j jest kłopotliwa sprawa, bo:
\int f(x)dx=\int p(x)q(x)dx=\Sigma w_jf(x_j),
gdzie wagą jest p(x)=e^{-x^2}. To nam mówi, jak rozłożyć nasze f(x), jednak nie mówi o współczynnikach w_j. Też wcześniej myślałem, że w_j to ta sama waga co p(x), jednak nie jest tak do końca. W zasadzie jest to logiczne, gdyż w_j pojawia się dopiero w sumie, będącej przybliżeniem całki i odpowiada szerokości danego podprzedziału całkowania \Delta x.
(Analogicznie do wzoru Riemanna: lim_{n-->\infty}\Sigma_{i=1}^n f(x_i)\Delta x_i=\int f(x)dx - w_j odpowiada \Delta x_i, brak jedynie przejścia granicznego, ale w końcu to metody numeryczne :) .) Jak z kolei w_j wyznaczyć - nie wiem. :) Na pewno jest zależne od n i od zer w. Hermite'a, jednak nie wiem jaka to zależność.

Jeśli chcesz, to do następnego postu mogę dodać procedurę gauher w C, żebyś mógł zobaczyć jak ona wygląda i samodzielnie przeanalizować co i jak. :)
Góra
Mężczyzna Offline
PostNapisane: 21 lis 2009, o 20:33 
Użytkownik

Posty: 5
Lokalizacja: Na fotelu
oki.. jak możesz to podaj mi ten fragment kodu w c to może się domyśle :]
:)

-- 22 lis 2009, o 16:45 --

odświeżam, jeśli ma ktoś jeszcze jakieś pomysły jak to rozwiązać to chętnie zapraszam:)
Góra
Mężczyzna Offline
PostNapisane: 22 lis 2009, o 20:41 
Użytkownik
Avatar użytkownika

Posty: 283
Lokalizacja: Krosno/Kraków
Proszę :)
Kod:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <math.h>
#define EPS 3.0e-14
#define PIM4 0.7511255444649425
#define MAXIT 10

void gauher(float x[], float w[], int n)
{
   void nrerror(char error_text[]);
   int i,its,j,m;
   double p1,p2,p3,pp,z,z1;

   m=(n+1)/2;
   for (i=1;i<=m;i++) {
      if (i == 1) {
         z=sqrt((double)(2*n+1))-1.85575*pow((double)(2*n+1),-0.16667);
      } else if (i == 2) {
         z -= 1.14*pow((double)n,0.426)/z;
      } else if (i == 3) {
         z=1.86*z-0.86*x[1];
      } else if (i == 4) {
         z=1.91*z-0.91*x[2];
      } else {
         z=2.0*z-x[i-2];
      }
      for (its=1;its<=MAXIT;its++) {
         p1=PIM4;
         p2=0.0;
         for (j=1;j<=n;j++) {
            p3=p2;
            p2=p1;
            p1=z*sqrt(2.0/j)*p2-sqrt(((double)(j-1))/j)*p3;
         }
         pp=sqrt((double)2*n)*p2;
         z1=z;
         z=z1-p1/pp;
         if (fabs(z-z1) <= EPS) break;
      }
      if (its > MAXIT) nrerror("too many iterations in gauher");
      x[i]=z;
      x[n+1-i] = -z;
      w[i]=2.0/(pp*pp);
      w[n+1-i]=w[i];
   }
}
#undef EPS
#undef PIM4
#undef MAXIT
/* (C) Copr. 1986-92 Numerical Recipes Software 7&X*. */


Oczywiście to sucha procedura. Do niej musisz sobie napisać banalny sterownik, w którym zdefiniujesz funkcję jaką chcesz całkować i wywołasz dla niej gauher-a.
Góra
Utwórz nowy temat Odpowiedz w temacie  [ Posty: 6 ] 


 Zobacz podobne tematy
 Tytuł tematu   Autor   Odpowiedzi 
 Kwadratura Gaussa-Hermite - zadanie 2  Adam140  0
 tw. Gaussa-Ostrogradskiego  diodamen  3
 Korzystając z twierdzenia Gaussa-Ostrogradzkiego obliczyć: - zadanie 2  hermani  1
 całka Gaussa  daroslav  4
 Całkowanie metodą gaussa  Romczyn  2
 
Atom [Regulamin Forum] [Instrukcja LaTeX-a] [Poradnik] [F.A.Q.] [Reklama] [Kontakt]
Copyright (C) ParaRent.com