NOI4

background image

Numeryczne Obliczenia Inżynierskie

NOI wykład 4

Materiały przygotowane dla studentów Wydziału Mechanicznego – Politechniki Opolskiej

przez: dr inż. Jacka Wydrycha

background image

Program VBA złożony jest z instrukcji (rozkazów), które w
procesie kompilacji przetwarzane są na kod wykonywalny
zrozumiały dla procesora. Instrukcje te wykonywane są w
określonym

porządku

zdefiniowanym

przez

programistę.

Pojedynczą instrukcje możemy nazwać zdaniem języka VBA.
Zdanie takie musi być odpowiednio zbudowane i może zawierać
słowa kluczowe, wyrażenia, stałe, operatory oraz zmienne.

Pojedyncza instrukcja może np. zadeklarować zmienną, ustawić

Pojedyncza instrukcja może np. zadeklarować zmienną, ustawić
wartość lub wykonać określoną operację.

background image

Instrukcje programu zorganizowane są w procedury, moduły
i projekty.

Procedura

jest bardzo ważną częścią programu, ponieważ

aby kod mógł być wykonany należy umieścić go w procedurze.
Jest to najmniejsza część kodu którą można uruchomić
niezależnie od innych części kodu. Procedura składa się z
przynajmniej jednej instrukcji umieszczonej między dwiema
specjalnymi instrukcjami: z których pierwsza z nich deklaruje
procedurę a ostatnia ją zamyka. Więcej informacji na temat

procedurę a ostatnia ją zamyka. Więcej informacji na temat
procedur znajdziesz na stronie Procedury.

Moduł

zawiera z jedną lub więcej procedur oraz sekcje

deklaracji w której umieszczamy instrukcje wspólne dla w
wszystkich procedur tego modułu. Możemy wyróżnić dwa
rodzaje modułów: moduł standardowy i moduł klasy.

Projekt

obejmuje wszystkie moduły, formularze, obiekty

aplikacji macierzystej dokumentu oraz sam dokument.

background image

Programy VBA mogą być bardzo skomplikowane, mogą zawierać
wiele instrukcji i procedur rozmieszczonych w rożnych
modułach a nawet projektach. Najprostszy program składa
się z jednej procedury w której jest jedna instrukcja,
procedura ta umieszczona jest w module co daje nam już
cały projekt. Poniżej znajduje się kod takiego programu,
składa się on z jednej procedury o nazwie Powitanie, w której
umieszczona jest jedna instrukcja. Instrukcja ta wyświetla

umieszczona jest jedna instrukcja. Instrukcja ta wyświetla
okienko komunikatu i z napisem: Witam i życzę miłej zabawy.

Sub Powitanie()
MsgBox "Witam i życzę miłej zabawy"
End Sub

background image

Procedura

- jest to najmniejsza część kodu która posiada

własną nazwę, jest to też najmniejsza część kodu którą
można uruchomić niezależnie od innych części kodu. Procedura
jest bardzo ważną częścią programu aby kod mógł działać
należy umieścić go w procedurze. Procedura składa się z
instrukcji deklarującej procedurę, linii kodu wykonywanych
wewnątrz procedury oraz instrukcji zamykającej.

wewnątrz procedury oraz instrukcji zamykającej.

background image

Typy procedur:
Najogólniej procedury możemy podzielić na dwa typy tj.
podprogramy i funkcje.

Podprogram

- jest to podstawowy typ procedur języka

VBA. Procedurę deklarujemy za pomocą słowa kluczowego
Sub, instrukcja End Sub zamyka procedurę. Instrukcja
deklarująca procedurę kończy się parą nawiasów - można w
niej

umieszczać

parametry

podprogramu.

Jest

to

typ

procedury, który można uruchomić niezależnie od innych
procedur. Procedury tego typu wykonują akcje, lecz nie

procedur. Procedury tego typu wykonują akcje, lecz nie
zwracają wartości. Podprogram może wywołać inną procedurę.

Funkcja

-

procedura

deklarowana

za

pomocą

słowa

kluczowego

Function,

instrukcja

End

Function

kończy

procedurę. Funkcja może pobierać argumenty które są do niej
przekazywane np. przez procedurę wywołującą. Procedura
Function

jest

podobna

do

procedury

Sub,

jednak

w

przeciwieństwie do podprogramu zwraca wartość np. do
procedury która ją wywołała.

background image

Poniżej

znajduje

się

przykład

prostego

podprogramu.

Procedura ta wykonuje tylko jedną czynność, wyświetla okienko
komunikatu z informacją aby użytkownik wprowadził wartość
numeryczną większą od Zera.

Sub BłędnaWartość()
MsgBox "Wprowadź wartość numeryczną większą od zera"
End Sub

background image

Wywołanie podprogramu

:

Jest wiele sposobów uruchomienia podprogramu.
Podprogram można wywołać (uruchomić) z innego podprogramu.
Aby wywołać podprogram z innego podprogramu należy w
procedurze wywołującej wpisać instrukcję zawierającą jego
nazwę.
Jeżeli podprogram przez nas napisany nie posiada parametrów
możemy wywołać go tak jak uruchamia się makro. Będąc w
arkuszu Excela naciskamy kombinacje klawiszy Alt + F8, w

arkuszu Excela naciskamy kombinacje klawiszy Alt + F8, w
nowo

otwartym

oknie

wybieramy

nazwę

odpowiedniej

procedury a następnie przycisk Uruchom.
Możemy odpowiednią procedurę (bez parametrów) przypisać do
Przycisku z paska narzędzi Formularze.

background image

Przykład funkcji:
Przykład funkcji jest również bardzo prosty. Nasza funkcja
oblicza pole kwadratu w którym długość boku kwadratu
określona jest przez parametr bok. Funkcja zwraca pewną
wartość. Aby funkcja mogła zwrócić wartość, wewnątrz funkcji
wartość ta musi zostać przypisana do nazwy tej funkcji.
W przykładzie poniżej do nazwy funkcji PoleKwadratu
przypisujemy wartość jako daje nam wynik mnożenia parametru
bok. Oczywiście wartość zwróconą przez funkcje możemy

przypisujemy wartość jako daje nam wynik mnożenia parametru
bok. Oczywiście wartość zwróconą przez funkcje możemy
wykorzystać w instrukcjach np. w procedurze wywołującej.

Function PoleKwadratu(bok)
PoleKwadratu = bok * bok
End Function

background image

Wywołanie funkcji

:

Funkcje można wywołać (uruchomić) z podprogramu. Aby
wywołać funkcje z podprogramu w procedurze wywołującej do
zmiennej przypisujemy nazwę funkcji, oczywiście w nawiasach
podajemy też potrzebne argumenty. Funkcja zwraca wartość
dlatego poprzez przypisanie w procedurze wywołującej nazwy
funkcji do zmiennej to do tej zmiennej przypisujemy wartość
zwracaną przez podaną funkcje.
Innym sposobem wywołania funkcji jest uruchomienie jej z
poziomu arkusza Excela, poprzez wstawienie funkcji do

poziomu arkusza Excela, poprzez wstawienie funkcji do
komórki arkusza. Funkcje przez nas napisaną (umieszczoną w
module standardowym) wstawiamy do arkusza tak samo jak
każdą funkcje wbudowaną. Załóżmy ze chcemy wstawić
przedstawioną wcześniej funkcję PoleKwadratu.

background image

Zaznaczamy dowolną komórkę Arkusza Excela np. H12.
Z Menu Wstaw wybieramy opcje Funkcja.
W nowo otwartym oknie z pola Kategoria funkcji: wybieramy
kategorie Użytkownika, następnie z pola Nazwa funkcji:
nazwę naszej funkcji PoleKwadratu i naciskamy OK (nazwy
pól w tym oknie mogą być trochę inne od podanych, zależy to
jaką wersję Excela posiadasz).
W następnym oknie wpisujemy argumenty funkcji, możesz tam

W następnym oknie wpisujemy argumenty funkcji, możesz tam
wpisać odpowiednie wartości lub nazwę komórki z której
wartości mają być pobierane np. jako argument wpisujemy B12,
naciskamy przycisk OK.
Jeżeli

jako

argument

podałeś

adres

komórki,

wpisz

przykładowe wartości do komórki B12 i przetestuj działanie
funkcji.

background image

Parametry i argumenty

Parametr pełni role zmiennej i jest rozpoznawany wewnątrz

procedury.

Parametry

procedury

podajemy

deklarując

procedurę. Umieszczamy je w nawiasach po nazwie procedury.
Jeżeli procedura posiada kilka parametrów oddzielamy je
przecinkiem.

Argument zaś jest to wartość jaka przekazujemy do

parametru danej procedury. Argumenty podajemy np. w

Argument zaś jest to wartość jaka przekazujemy do

parametru danej procedury. Argumenty podajemy np. w
instrukcji wywołującej procedurę. W instrukcji wywołującej
procedurę

po

nazwie

procedury

podajemy

odpowiednie

argumenty

umieszczamy

je

w

nawiasach

i

oddzielając

przecinkiem

background image

Sub ObliczPole()
Dim wartość, pole
wartość = InputBox("Podaj długość boku kwadratu do obliczenia pola
powierzchni")
If IsNumeric(wartość) = True Then
If wartość > 0 Then
pole = PoleKwadratu(wartość) ' wywołujemy funkcje PoleKwadratu.
MsgBox "Pole kwadratu wynosi " & pole

MsgBox "Pole kwadratu wynosi " & pole
Else
BłędnaWartość ' wywołujemy podprogram BłędnaWartość.
End If
Else
BłędnaWartość ' wywołujemy podprogram BłędnaWartość.
End If
End Sub

background image

Zakres procedury

:

Zakres określa w których częściach programu procedura jest
widoczna i z jakich części programu można ją wywołać. Temat
zakresu omówię w dalszej części kursu po omówieniu tematu
Modułu. Nadmienię tylko że standardową procedura VBA
posiada zakres publiczny (z wyjątkiem procedury zdarzenia).
Zakres publiczny określa to że procedurę można wywołać

Zakres publiczny określa to że procedurę można wywołać
(uruchomić) z dowolnej części programu.

background image

argument

- stała, zmienna lub wyrażenie przekazywane do

procedury,

komentarz

- dodany do kodu programu tekst, wyjaśniający

sposób działania kodu programu,

parametr

-

nazwa

zmiennej,

pod

którą

argument

przekazywany do pewnej procedury jest w tej procedurze
rozpoznawany. Zmienna otrzymuje przekazywany do procedury
argument, a jej zakres działania kończy się wraz z końcem
procedury.

właściwość

- opatrzony nazwą atrybut obiektu. Właściwości

właściwość

- opatrzony nazwą atrybut obiektu. Właściwości

definiują takie cechy obiektu, jak np. rozmiar, kolor i położenie
na ekranie, a także stan obiektu, na przykład to, czy jest on
aktywny czy nieaktywny. Właściwości możemy określać (zmieniać)
w oknie właściwości lub za pomącą języka Visual Basic.

zmienna

-

opatrzone

nazwą

miejsce

w

pamięci

do

przechowywania danych, które mogą ulegać modyfikacjom w
trakcie wykonywania programu. Każda zmienna zaopatrzona jest w
unikatową nazwę, która identyfikuje ją w obrębie danego zakresu.

background image

Zasięg zmiennych

Zasięgiem zmiennej określa się moduły i procedury, w których
można ją zastosować.

Zasięg

Sposób deklarowania zmiennej w zasięgu

Pojedyncza procedura – zmienne lokalne

Zawarcie w procedurze instrukcji Dim lub Static

Pojedynczy moduł – zmienne
obowiązujące na obszarze całego modułu

Umieszczenie instrukcji Dim lub Private przed
pierwszą procedurą modułu

Wszystkie moduły – zmienne publiczne

Umieszczenie instrukcji Public przed pierwszą
procedurą modułu

Zmienna lokalna – jest zmienną deklarowaną wewnątrz
procedury. Zmienne lokalne mogą być używane wyłącznie w
procedurze, w której zostały zadeklarowane. Po zakończeniu
procedury zmienna lokalna przestaje istnieć i Excel zwalnia
zajmowaną przez nią pamięć.

Jeśli zależy na utrzymaniu przez zmienną przechowanej

wartości, należy zdeklarować ją przy użyciu słowa kluczowego
Static.

background image

Jeśli zmienna ma być dostępna dla wszystkich procedur
modułu,

wystarczy

deklarację

zmiennej

umieścić

przed

pierwszą procedurą modułu (na zewnątrz wszystkich procedur
lub funkcji).

Dim CurrentChart As Chart

Dim Fname As String

Private Sub UserForm_Initialize()

Set CurrentChart =

ActiveSheet.ChartObjects(1).Chart
' Zapisanie wykresu w formacie GIF

' Zapisanie wykresu w formacie GIF

Fname = ThisWorkbook.Path &

Application.PathSeparator & "temp.gif"

CurrentChart.Export FileName:=Fname,

FilterName:="GIF"

ActiveSheet.ChartObjects(1).Delete

End Sub

Private Sub CloseButton_Click()

Unload Me

End Sub

background image

Aby udostępnić zmienną wszystkim procedurom zawartym we
wszystkich modułach VBA projektu, należy na poziomie modułu
zadeklarować zmienną przy użyciu słowa kluczowego Public
zamiast instrukcji Dim.

Public CuurentRate As Long

Przesłanianie zmiennych

Przesłanianie zmiennych

background image

Charakterystyka dobrych programów

Oto kilka cech uważanych za takie, które charakteryzują
dobry program.
• Poprawność (zgodność z wymogami użytkownika)
• Niezawodność (dobre dane wejściowe -> dobre wyniki)
• Przenośność (Łatwość instalacji na różnych komputerach)
• Łatwość konserwacji (Prosto napisany program łatwo
przystosować do różnych warunków pracy)

przystosować do różnych warunków pracy)
• Czytelność (Prostota jest jedną z najważniejszych cech
dobrych programów)
• Prawidłowe wykorzystanie zasobów (pamięci, dyski, itp),
szybkość

User-oriented aplikacja

background image

Zadania realizowane z myślą o użytkowniku końcowym

Oto kilka ważnych kwestii związanych z projektowaniem, które
uwidaczniają się, gdy stopień funkcjonalności aplikacji staje się
coraz wyższy i nadchodzi moment pakowania i przesyłania
produktu:
• Testowanie – często zdarza się, że testowanie i usuwanie błędów
z aplikacji zajmuje taką samą ilość czasu, jak jej tworzenie,
• Zwiększanie odporności aplikacji:

• Blokowanie określonych komórek

• Blokowanie określonych komórek
• Ochrona całego skoroszytu
• Ukrywanie formuł określonych komórek
• Blokowanie obiektów arkusza
• Ukrywanie wierszy, kolumn, arkuszy i dokumentów
• Udostępnianie skoroszytu Excela w trybie tylko do

odczytu

• Przypisanie hasła
• Użycie dodatku chronionego hasłem

background image

Zadania realizowane z myślą o użytkowniku końcowym

• Testowanie – często zdarza się, że testowanie i usuwanie
błędów z aplikacji zajmuje taką samą ilość czasu, jak jej
tworzenie,
• Tworzenie aplikacji intuicyjnej i estetycznie wyglądającej:

• Dążenie do zgodności (do okien dialogowych Excela)
• Dążenie do prostoty – błędem projektantów aplikacji

jest umieszczanie na pojedynczym ekranie lub w oknie
dialogowym zbyt wielu informacji

dialogowym zbyt wielu informacji

• Podział okien służących do wprowadzania danych
• Oszczędne używanie kolorów
• Kontrolowanie typografii i grafiki – formaty liczbowe,

zgodność kroju i rozmiaru czcionek oraz ramek

Określanie jakości walorów estetycznych jest bardzo
subiektywne. W razie wątpliwości należy zmierzać do prostoty
i przejrzystości

background image

Zadania realizowane z myślą o użytkowniku końcowym

• Tworzenie systemu pomocy przeznaczonego dla użytkownika –
dokumentacje pomocy: papierowe i elektroniczne
• Dokumentowanie prac projektowych
• Przekazanie aplikacji użytkownikom
• Uaktualnianie aplikacji w razie konieczności

background image

METODY CAŁKOWANIA NUMERYCZNEGO

background image

Zadanie całkowania numerycznego
Na podstawie znajomości wartości y

i

funkcji f(x) w punktach x

i

(narzuconych

lub

wybieranych)

wyznaczyć

wartość

I

całki

oznaczonej (kwadratury) z funkcji w przedziale <a,b>:

background image

Zastosowania całek numerycznych
Wyznaczanie wielkości definiowanych całką
• Splot
• Wartość średnia, skuteczna
• Energia sygnału
• Pola powierzchni, objętości
• Prawdopodobieństwo na podstawie funkcji gęstości prawdopodobieństwa

Wartość przybliżona: odpowiadające im operacje sumacyjne na sygnałach
dyskretnych
W obliczeniach małej precyzji wystarczają proste metody prostokątów i
trapezów.

background image

Jakie dobrać wartości współczynników ogólnego wyrażenia:

ż

eby wartość A przybliżała:

• całkę w przedziale <x

-1

, x

1

> ,

• pochodną w punkcie x

0

,

• drugą pochodną w punkcie x

0

Załóżmy punkty równoodległe z odstępem h (x

-1

=x

0

-h, x

1

=x

0

+h).

background image

Metoda prostokątów

Metoda trapezów

Metoda parabol

(

)

=

=

+

=

n

i

i

n

i

i

h

,

x

f

h

A

1

1

1

5

0

( )

( )

( )



+

+

=

=

=

1

1

0

1

5

0

5

0

n

i

n

i

n

i

i

x

f

,

x

f

x

f

,

h

A

( )

(

)

( ) ( )



+

+

+

+

=

=

=

=

1

0

1

1

0

1

2

5

0

4

6

1

n

i

n

n

i

i

i

n

i

i

x

f

x

f

h

,

x

f

x

f

h

A

Metoda 3/8 Simpsona

( )

(

)

(

)

( ) ( )



+

+

+

+

+

+

=

=

=

=

=

1

0

1

1

1

0

3

2

3

1

0

1

2

3

3

8

1

n

i

n

n

i

i

n

i

i

i

n

i

i

x

f

x

f

h

x

f

h

x

f

x

f

h

A

background image

Zagadnienie przybliżonego obliczania całki oznaczonej

I f

( )

danej funkcji ciągłej f x

( ) w przedziale

[ , ]

a b

=

b

a

x

x

f

f

I

d

)

(

)

(

(24)

często występuje w praktyce obliczeniowej, gdyż wyznaczanie funkcji pierwotnej jest bardzo trudne lub
wręcz niemożliwe, gdy funkcja

f x

( )

nie jest funkcją elementarną lub gdy funkcja

f x

( )

jest określona za

pomocą tablicy.

Zagadnienie przybliżonego obliczania całek można traktować jako aproksymację funkcjonału I innymi,
prostszymi do obliczenia funkcjonałami. W rachunku numerycznym muszą mieć one postać pozwalającą
na obliczenie ich wartości za pomocą skończonej liczby działań arytmetycznych. Wzory numeryczne
całkowania funkcji jednej zmiennej niezależnej nazywane są kwadraturami, funkcji wielu zmiennych
niezależnych - kubaturami.

niezależnych - kubaturami.

Istnieją różne rodzaje kwadratur. Najważniejsze z nich to:

- kwadratury interpolacyjne i aproksymacyjne,

- kwadratury Newtona-Cotesa,

- kwadratury Gaussa.

background image

Mianem kwadratur interpolacyjnych lub aproksymacyjnych określamy kwadratury otrzymane przez
całkowanie wzorów interpolacyjnych lub aproksymacyjnych funkcji podcałkowej

f x

( ).

W szczególności

mogą to być wzory oparte na całkowaniu wielomianów interpolacyjnych Lagrange’a niskiego stopnia
lub też równań funkcji sklejanych.

Po scałkowaniu wielomianu interpolacyjnego Lagrange’a otrzymamy kwadraturę postaci

,

)

(

)

(

0

=

=

n

i

i

i

x

f

A

f

Q

(25)

w której

x

i

są ustalonymi węzłami, a współczynniki

A

i

są określone wzorem

.

)

...,

,

1

,

0

(

)

(

n

i

x

x

A

b

n

=

ω

=

d

(26)

.

)

...,

,

1

,

0

(

)

(

)

(

)

(

n

i

x

x

x

x

x

A

b

a

i

n

i

n

i

=

ω′

ω

=

d

(26)

Dla wyznaczenia współczynników

A

i

zauważmy, że:

1) współczynniki

A

i

przy danym wyborze węzłów nie zależą od wyboru postaci funkcji

f x

( ),

2) wzór (25) jest dokładny dla wielomianu stopnia n.

background image

Podstawiając więc

f x

x

k

n

k

( )

(

, , ..., )

=

=

0 1

we wzorze (5.25) otrzymamy układ

n

+

1

równań liniowych:

=

=

=

=

=

=

,

..

..........

..........

,

,

0

0

1

0

0

n

i

n

i

i

n

n

i

i

i

n

i

i

x

A

Q

x

A

Q

A

Q

(27)

gdzie

,

)

...,

,

1

,

0

(

1

1

1

n

k

k

a

b

x

x

Q

k

k

b

a

k

k

=

+

=

=

+

+

d

z którego można obliczyć współczynniki:

A

A

A

n

0

1

,

, ...,

.

Wyznacznik macierzy współczynników układu

(27) jest wyznacznikiem Vandermonda.

background image

Prostym przykładem kwadratury interpolacyjnej tego rodzaju może być kwadratura postaci

.

6

5

2

1

6

1

2

1

0

1

0

+

+

=

f

A

f

A

f

A

x

y d

(28)

Układ (27) dla

n

=

2

oraz:

=

=

=

1

0

2

1

0

1

0

3

1

,

2

1

,

1

x

x

x

x

x

d

d

d

redukuje się do układu następującego:

+

A

A

A

0

1

2

1

+

=

,

+

A

A

A

A

A

A

A

A

A

0

1

2

0

1

2

0

1

2

1

1

6

1

2

5

6

1

2

1

36

1

4

25

36

1

3

+

=

+

+

=

+

+

=

,

,

.

Stąd:

A

A

A

0

1

2

3

8

1

4

3

8

=

=

=

,

,

i ostatecznie

.

6

5

3

2

1

2

6

1

3

8

1

)

(

1

0

+

+

=

f

f

f

x

x

f

d

background image

Dokładność obliczania całki (24) za pomocą kwadratur interpolacyjnych lub aproksymacyjnych zależy
od oszacowania dokładności przybliżenia funkcji

f x

( )

funkcją

F x

( )

b

a

b

a

b

a

x

x

f

x

F

x

x

f

x

x

F

d

d

d

)

(

)

(

)

(

)

(

.

)

(

)

(

)

(

]

,

[ b

a

x

f

x

F

a

b

C

(29)

Wynika stąd, że w wielu przypadkach szczególnie przydatne mogą okazać się kwadratury interpolacyjne
lub aproksymacyjne oparte na całkowaniu równań funkcji sklejanych. Przy wykorzystaniu równań
wielomianowej funkcji sklejanej trzeciego stopnia otrzymujemy

.

24

)

(

2

)

(

1

3

1

1

=

+

+

=

b

a

n

i

i

i

i

i

i

i

h

M

M

y

y

h

t

t

S

d

(30)

W podobny sposób, po scałkowaniu równania hiperbolicznej funkcji sklejanej w połączeniu z układem
równań, dostajemy

.

sinh

cosh

1

2

)

(

2

)

(

1

2

1

1

=

σ

σ





σ

σ

σ

+

σ

+

+

=

σ

b

a

n

i

i

i

i

i

i

i

i

i

h

h

h

M

M

y

y

h

t

t

S

d

(31)

background image

Kwadraturami Newtona-Cotesa nazywamy kwadratury postaci (25), otrzymane przez całkowanie

wielomianów interpolacyjnych opartych na równoodległych węzłach

.

,

...

,

,

1

0

b

h

n

a

x

h

a

x

a

x

n

=

+

=

+

=

=

(32)

Współczynniki kwadratur Newtona-Cotesa można wyznaczyć drogą całkowania wielomianu

interpolacyjnego Lagrange’a lub też, stosowaną w rozdziale poprzednim, metodą rozwijania funkcji

y

f x

=

( )

w szeregi Taylora względem punktu

x

0

.


Dla zastosowania drugiej z tych możliwości rozważymy zależność wynikającą ze wzorów (24)
i (25)

+

=

n

x

n

h

n

R

y

A

x

x

f

,

)

(

)

(

d

(33)

=

+

=

x

i

i

i

h

n

R

y

A

x

x

f

0

0

,

)

(

)

(

d

(33)

gdzie

)

( h

n

R

jest błędem przybliżenia. Po scałkowaniu rozwinięcia danej funkcji

f x

( )

w szereg Taylora

f x

y

y

x

x

y

x

x

( )

(

)

!

(

)

...

=

+ ′

+

′′

+

0

0

0

0

0

2

2

background image

i podstawieniu rozwinięć

y

y

ih y

ih

y

ih

y

i

=

+

′ +

′′ +

′′′ +

0

0

2

0

3

0

2

3

( )

( )

!

( )

!

...

uzyskujemy związek

(

)

(

)

!

(

)

!

...

...

nh y

nh

y

nh

y

A y

A

y

h y

h

y

0

2

0

3

0

0

0

1

0

0

2

0

2

3

2

+

′ +

′′ +

=

+

+

′ +

′′ +



+

.

)

(

...

2

)

(

)

(

...

0

2

0

0

h

n

R

y

h

n

y

h

n

y

A

n

+

+

′′

+

+

+

+

(34)

Z porównania mnożników występujących przy kolejnych potęgach h, z lewej i prawej strony tego
związku, otrzymujemy równania, z których wyznaczamy nieznane współczynniki

A

i

n

i

(

, , ..., ).

=

0 1


W przypadku

n

=

1

mamy

h y

h

y

h

y

A y

A

y

h y

h

y

0

2

0

3

0

0

0

1

0

0

2

0

2

6

2

+

′ +

′′ +

=

+

+

′ +

′′ +



...

... ,

background image

skąd wynikają równania:

A

A

h

0

1

+

=

,

A h

h

1

2

2

=

i ostatecznie po porównaniu dokładnej wartości całki

6

2

)

(

3

0

2

0

0

h

y

h

y

h

y

h

I

d

′′

+

+

=

z jej wartością przybliżoną

z jej wartością przybliżoną

4

2

)

(

3

0

2

0

0

h

y

h

y

h

y

h

I

p

′′

+

+

=

jest

.

12

)

(

2

)

(

1

0

0

3

1

0

′′

+

=

x

x

y

h

y

y

h

x

x

f

d

(35)

Jest to znany wzór trapezów, odznaczający się nadspodziewanie małym błędem

.

)

(

3

h

O

Widzimy więc,

ż

e operacja całkowania przybliżonego jest znacznie dokładniejsza od operacji różniczkowania

numerycznego.

background image

Zależność (34) w przypadku

n

=

2

przyjmuje postać

=

+

+

′′

+

′′

+

+

...

120

)

2

(

24

)

2

(

6

)

2

(

2

)

2

(

)

2

(

0

5

0

4

0

3

0

2

0

IV

y

h

y

h

y

h

y

h

y

h

=

+

+

′ +

′′ +

′′′ +

+



+

A y

A

y

h y

h

y

h

y

h

y

IV

0

0

1

0

0

2

0

3

0

4

0

2

6

24

...

+

+

′ +

′′ +

′′′ +

+

A

y

h y

h

y

h

y

h

y

IV

2

0

0

2

0

3

0

4

0

2

2

2

2

6

2

24

(

)

(

)

(

)

(

)

... .

Stąd otrzymujemy układ równań:

A

A

A

h

0

1

2

2

+

+

=

,

A h

A h

h

1

2

2

2

2

+

=

,

A

h

A h

h

1

2

2

2

3

2

2

4

3

+

=

,

którego rozwiązaniem są liczby:

.

3

4

,

3

1

2

0

h

A

h

A

A

=

=

=

background image

Podstawiając je do (33) uzyskujemy znany wzór parabol, zwany też wzorem Simpsona

(

)

.

90

4

3

)

(

0

5

2

1

0

2

0

IV

x

x

y

h

y

y

y

h

x

x

f

+

+

=

d

(36)

Zwraca uwagę bardzo wysoka dokładność tego wzoru, wynikająca z tożsamościowego znikania

współczynników przy pochodnej

′′′

y

0

po podstawieniu wyznaczonych wartości A

0

,

A

1

i

A

2

.

Ze względu na trudności związane ze stosowaniem wielomianów interpolacyjnych wysokich

stopni, w praktyce raczej nie wykorzystuje się kwadratur Newtona-Cotesa wysokich rzędów. Na ogół
bardziej celowe jest podzielenie przedziału całkowania na większą liczbę podprzedziałów i stosowanie
dla nich kwadratur Newtona-Cotesa niskiego rzędu. Skonstruowane w ten sposób kwadratury, określone
na całym przedziale

[ , ]

a b

, są nazywane złożonymi kwadraturami Newtona-Cotesa.

na całym przedziale

[ , ]

a b

, są nazywane złożonymi kwadraturami Newtona-Cotesa.


Złożony wzór trapezów otrzymujemy po podzieleniu przedziału całkowania

[ , ]

a b

na m równych

części

h

b a m

= −

(

)

i zsumowaniu całek (35) dla każdego podprzedziału

Q f

h

y

y

h

y

y

y

y

i

m

i

i

m

m

( )

(

)

...

.

=

+

=

+

+ +

+



=

2

2

2

1

1

0

1

1

(37)

background image

Na podstawie oszacowania (35) błąd złożonego wzoru trapezów wynosi

R

h

f

x

b

a

h f

i

i

m

1

3

1

1

2

12

12

= −

′′

= − −

′′

=

(

)

(

)

( ),

ξ

(38)

gdzie



′′

=

′′

=

f

m

f

x

a b

i

i

m

( )

(

),

,

ξ

ξ

1

1

1

[

].

Analogicznie wyprowadza się złożony wzór parabol przy założeniu, że m jest parzyste. Po zsumowaniu

Analogicznie wyprowadza się złożony wzór parabol przy założeniu, że m jest parzyste. Po zsumowaniu
całek (5.36) dla kolejnych

m 2

podprzedziałów o długości 2 h mamy

[

]

,

2

4

)

(

3

)

4

(

3

)

(

2

1

0

2

/

1

2

1

2

2

2

σ

σ

+

+

+

=

+

+

=

=

m

m

k

k

k

k

y

y

h

y

y

y

h

f

Q

(39)

gdzie:

.

...

,

...

2

4

2

2

1

3

1

1

+

+

+

=

+

+

+

=

σ

σ

m

m

y

y

y

y

y

y

background image

Błąd złożonego wzoru parabol jest następujący:

,

)

(

180

)

(

)

(

90

2

/

1

4

2

2

5

2

=

ξ

=

=

m

k

IV

k

IV

f

h

a

b

x

f

h

R

(40)

gdzie

[

]

.

,

,

)

(

2

)

(

2

/

1

2

2

b

a

x

f

m

f

m

k

k

IV

IV

=

ξ

=

ξ

=

*

Rozważane dotąd kwadratury interpolacyjne lub aproksymacyjne, jak i kwadra-tury Newtona-Cotesa są

Rozważane dotąd kwadratury interpolacyjne lub aproksymacyjne, jak i kwadra-tury Newtona-Cotesa są
kwadraturami z ustalonymi węzłami. Kwadratury Gaussa są natomiast kwadraturami postaci (25),

w których dobierane są nie tylko współ-czynniki

A

i

n

i

(

, , ..., ),

=

0 1

ale także węzły

x i

n

i

(

, , ..., )

=

0 1

-

w taki sposób, aby kwadratura była dokładna dla możliwie najwyższego stopnia wielomianu.

Przy wyznaczaniu parametrów kwadratur Gaussa wygodnie jest w obliczanej całce (24) dokonać
liniowej zamiany zmiennej całkowania

x

b

a

b

a

t

= + + −

2

2

,

(41)

pozwalającej na transformację dowolnego przedziału

[ , ]

a b

na przedział znormalizowany

[

, ]

1 1

background image

Rozważymy teraz zadanie: jak wybrać węzły:

t

t

t

n

0

1

,

, ...,

oraz współczynniki:

A

A

A

n

0

1

,

, ...,

,

żeby kwadratura

postaci

=

=

1

1

0

)

(

)

(

n

i

i

i

t

f

A

t

t

f

d

(43)

była dokładna dla wielomianu stopnia

2

1

n

+

, którego liczba współczynników jest równa liczbie

nieznanych parametrów

A

i

i

t

i

.

Oznacza to, że równość (5.43) musi być spełniona dla wielomianów:

f t

t t

t

n

( )

, ,

, ...,

,

=

+

1

2

2

1

gdyż dla

+

=

=

1

2

0

)

(

n

k

k

k

t

C

t

f

mamy

∑ ∑

∑ ∫

∑ ∑

=

+

=

=

+

=

+

=

=

=

=

=

=

n

i

n

k

n

i

i

i

k

i

k

i

n

k

n

k

n

i

k

i

i

k

k

k

t

f

A

t

C

A

t

A

C

t

t

C

t

t

f

0

1

2

0

0

1

1

1

2

0

1

1

1

2

0

0

.

)

(

)

(

d

d

background image

Stąd przy wykorzystaniu związków:

ego,

nieparzyst

dla

0

,

parzystego

dla

1

2

1

1

+

=

k

k

k

t

k

t

d

otrzymujemy układ równań:

=

=

=

=

2

....

..........

..........

,

0

,

2

2

0

0

n

n

i

n

i

i

n

i

i

t

A

A

(44)

=

+

=

+

=

=

.

0

,

1

2

2

1

2

0

2

0

n

i

n

i

i

n

i

n

i

i

t

A

n

t

A

(44)

Bezpośrednie rozwiązywanie nieliniowego układu równań (44) napotyka na duże trudności
matematyczne. Dlatego też najczęściej funkcję

f t

( )

przyjmuje się w postaci

f t

t P

t

k

n

k

n

( )

( )

, , ..., ),

=

=

+

1

0 1

(

(45)

gdzie

P

t

n

+

1

( )

wielomianami Legendre’a, zdefiniowanymi wzorami:

background image

=

=

=

=

=

=

=

.

...)

,

3

,

2

(

)

(

1

)

(

1

2

)

1

(

!

2

1

)

(

..

..........

..........

..........

,

)

1

3

(

2

1

,

)

(

,

1

)

(

2

1

2

2

2

1

0

n

x

P

n

n

x

P

x

n

n

x

x

n

x

P

x

P

x

x

P

x

P

n

n

n

n

n

n

n

d

d

(46)

Wielomian Legendre’a

P x

n

( )

jest funkcją parzystą dla n = 2 m i nieparzystą dla n = = 2 m +1, dla n

1

ma n różnych pierwiastków rzeczywistych, leżących w przedziale otwartym (

1, 1).

ma n różnych pierwiastków rzeczywistych, leżących w przedziale otwartym (

1, 1).


Wielomiany Legendre’a

P

t

n

+

1

( )

są ortogonalne do wszystkich wielomianów stopnia mniejszego

od n+1. Zatem mamy

1

dla

0

)

(

1

1

1

+

<

=

+

n

k

t

t

P

t

n

k

d

i następnie po podstawieniu (45) do (43) stwierdzamy, że suma

A t P

t

k

n

i i

k

n

i

i

n

+

=

=

1

0

0 1

( )

(

, , ..., )

(47)

background image

znika dla dowolnych

A

i

,

jeśli

P

t

i

n

n

i

+

=

=

1

0

0 1

( )

(

, , ..., ).

(48)

Kwadratura (43) będzie więc dokładna dla wielomianów stopnia

2

1

n

+

,

gdy jej węzłami będą zera

wielomianu Legendre’a

P

t

n

+

1

( ).

Po obliczeniu wartości węzłów

t

i

współczynniki

A

i

(

, , ..., )

i

n

=

0 1

można

łatwo wyznaczyć z układu równań liniowych (44).

W najprostszym przypadku dla n = 0 jest

t

0

0

=

- co oznacza, że kwadratura Gaussa z jednym węzłem

jest równoważna wzorowi prostokątów

.

)

0

(

2

=

)

(

1

1

f

t

t

f

d

1

W przypadku

n

=

1

obliczając najpierw pierwiastki wielomianu Legendre’a drugiego stopnia

P t

t

2

2

1

2

3

1

( )

(

)

=

otrzymujemy:

t

t

0

1

1

3

1

3

= −

=

,

background image

i następnie z układu równań:

A

A

0

1

2

+

=

,

+

=

1

3

1

3

0

0

1

A

A

,

dostajemy

A

A

0

1

1

=

=

.

Interpretacja geometryczna kwadratury Gaussa z dwoma węzłami

(

) ( )

,

3

1

3

1

)

(

1

1

f

f

t

t

f

+

=

d

(49)

dokładnej dla wielomianów stopnia trzeciego, jest przedstawiona na rysunku 3. Funkcja podcałkowa

f x

( )

jest interpolowana funkcją liniową

,

β

+

α

=

t

y

przechodzącą przez punkty

f t

( )

0

i

f t

( ).

1

Rys. 3

background image

Po wyznaczeniu pierwiastków wielomianu Legendre’a trzeciego stopnia

P t

t

t

3

3

1

2

5

3

( )

(

)

=

można, w podobny sposób, otrzymać kwadraturę Gaussa z trzema węzłami





+

+



=

5

3

5

)

0

(

8

5

3

5

9

1

)

(

1

1

f

f

f

t

t

f

d

(50)

oraz kwadratury z większą liczbą węzłów.

Błąd popełniany przy obliczaniu całki (5.24) za pomocą kwadratur Gaussa dla dowolnej wartości

Błąd popełniany przy obliczaniu całki (5.24) za pomocą kwadratur Gaussa dla dowolnej wartości
n

wynosi

[

]

[

]

R

n

b

a

n

n

f

a b

n

n

n

=

+

+

+

+

+

(

)! (

)

(

) (

)!

( ),

[ , ].

(

)

1

2

3

2

3

4

2

3

3

2

2

ξ

ξ

(51)

Tak samo jak w przypadku kwadratur Newtona-Cotesa można budować złożone kwadratury Gaussa
dzieląc przedział całkowania na mniejsze podprzedziały i stosując w każdym z nich kwadraturę Gaussa
ustalonego stopnia

.

2

2

2

)

(

1

0

1

1

∑∑

= =

+

+

=

b

a

m

j

n

i

i

j

j

j

j

i

t

x

x

x

x

f

A

a

b

x

x

f

d

background image

Dziękuję

Materiały przygotowane dla studentów Wydziału Mechanicznego – Politechniki Opolskiej

przez: dr inż. Jacka Wydrycha


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron