POK crazyduck

background image

Proste metody numeryczne

Manipulacje ciągami i szeregami

a) Zdysretyzowaną krokiem T składową swobodną rozwiązania
macierzowego liniowego równania stanu jest funkcja macierzowa exp(AT).
Jednym z numerycznych przybliżeń tej funkcji jest jej rozwinięcie w szereg.
Błąd skończonego rozwinięcia można określić nierównością:

nq

p

e

nq

p

1

)

(

!

1

<

ε

gdzie: n – wymiar A (dane);
(dane); p – integer;

Aby uzyskać pożądaną dokładność:

zadane

nq

p

e

nq

p

ε

ε

<

<

−1

)

(

!

1

czyli trzeba znależć p, które spełnia tę zależność. Jak?

background image

b)
Kaczor wyskakuje z okręgu o promieniu 1;

pierwszy skok od środka = 0.5 promienia (bo cienias);

w każdym następnym o połowę mniej bo łajza puchnie;

Po ilu skokach wyskoczy?. Oczywiście nigdy (dobrze mu tak).

Ale dla jakiego p, minimalny skok jest mniejszy od zadanej wielkości, czyli:

zadane

p

s

<

2

1

background image

Ogólnie: jak znaleźć p ?

O ile w przypadku (b) można to znależć analitycznie to w przypadku (a)
i wielu innych podobnych jest to niemożliwe.
Numerycznie można zaproponować algorytm, który z wszystkimi
podobnymi przypadkami ( f(p) < e ) poradzi sobie iteracyjnie. Ale funkcja
f(p) musi być monotoniczna.

p = 1

f(p) < e, ?

p = p+1

Tak

Nie

p

background image

Program skokin.c pokazuje obliczenia iteracyjne
(najważniejszy sposób obliczeń numerycznych)

#include <stdio.h>
int main()
{
double minskok,skok1,skok,od1;
long int nrskok; int zn;
printf("************** Skoki **************\n");
do
{
printf("\n minimalny skok : "); scanf("%lf",&minskok);
nrskok=1; skok1=2; od1=0;
do
{ skok=1/skok1; skok1=skok1*2; od1=od1+skok;
printf("\n numer skoku "); printf("%ld",nrskok);
printf(" odleglosc,skok "); printf("%e %e",od1,skok);
nrskok++; }
while (skok>=minskok);
printf("\n\n\n Czy chcesz jeszcze liczyc Tak = 1, Nie = 0 : ");
scanf ("%d", &zn);
} while (zn==1);
return 0;
}

background image

Program z grafiką,
dźwiękiem
i opóźnieniem obliczeń.
Dla Turbo C.

#include <stdio.h>
#include <conio.h>
void main()
{
double minskok,skok1,skok,od1; long int nrskok,i; char zn;
window(1,1,80,25); textcolor(YELLOW); textbackground(RED); clrscr();
gotoxy(25,1); printf("************** Skoki **************");
do
{
window(1,2,80,24); textcolor(GREEN); textbackground(0); clrscr();
gotoxy(10,5); printf("minimalny skok : "); scanf("%lf",&minskok);
gotoxy(10,10); printf("numer skoku ");
gotoxy(10,12); printf("odleglosc,skok ");
nrskok=1; skok1=2; od1=0;
do
{
skok=1/skok1; skok1=skok1*2; od1=od1+skok;
gotoxy(26,10); printf("%ld",nrskok);
gotoxy(25,12); printf("%e %e",od1,skok);
nrskok++;
sound(200+nrskok*10); delay(100000); nosound();
for (i=0; i<10000000; i++) i = i + 1 -1;
} while (skok>=minskok);
gotoxy(10,17); printf("Czy chcesz jeszcze liczyc T/N");
zn=getch();
} while ((zn!='n') && (zn!='N'));
}


Wyszukiwarka

Podobne podstrony:
Choroby ukadu pok
4 Robaki płaskie pok i krwion
POK cw7
nowotwory przew pok
p pok II
pok
Gruczoły p pok
ukł pok
Rozwój ukł pok
Nowa teoria hz pok
P pok W 2008
mech al pok D i Immun (1)
Zatrucia pok skrót
nerw pok
pok
sem16 pok

więcej podobnych podstron