Menu
Archwium
Kategorie
Miniblog
Szukaj

[1]

12 Mar 2008, 15:58:36, Infa, Projekty | Trackback

Arytmetyka FL
Obliczyć wartość wielomianu (x+2)^6 na siatce równoodległej ze 101 punktami na przedziale [-2 - 3e-4, -2 + 3e-4] dwoma algorytmami - pierwszym takim wprost z rozwinięcia w bazie potęgowej, tzn. licząc kolejno x^6 + 12*x^5 + ... + 64 i drugim obliczając x=x+2 i potem x^6. Dostaniemy dwa wektory x1 i x2 obliczonych wartości obu algorytmami i obliczyć wektor y=(x1-x2)/m2 dla m2=max_k |x2[k]| czyli norma max od x2. Policzyć normę maksimum y.
W raporcie: norma max wektora y.

program zad1;
var	a,b,h,m2,maks,x:real;
	x1,x2,y:array[1..101] of real;
	i,k:integer;
	

function p1(x:real):real;
begin
	p1:=(x*x*x*x*x*x + 12*x*x*x*x*x + 60*x*x*x*x + 160*x*x*x + 240*x*x + 192*x + 64);
end;

function p2(x:real):real;
begin
	p2:=(x+2)*(x+2)*(x+2)*(x+2)*(x+2)*(x+2);
end;

procedure norma_max_x2;
begin
	m2:=abs(x2[1]);
	for k:=2 to 101 do
		if abs(x2[k]) > m2 then m2:=abs(x2[k]);
end;

procedure maksimum_y;
begin
	maks:=abs(y[1]);
	for k:=2 to 101 do
		if abs(y[k]) > maks then maks:=abs(y[k]);
end;

begin
	a:=-2.0003;
	b:=-1.9997;
	h:=(b - a)/100;

	for i:=1 to 101 do begin
		x:=(a + (i-1)*h);
		x1[i]:=p1(x);
		x2[i]:=p2(x);
	end;

	norma_max_x2;

	for i:=1 to 101 do y[i]:=(x1[i] - x2[i])/m2;

	maksimum_y;
	writeln(maks);
end.

Wynik z konsoli:

maniek@maniek:~$ ./zad1
 2.284409508390987E+005

Komentarze:

Dodaj komentarz:

HTML w komentarzach jest wyłączony, możesz jednak skorzystać z Textile Lite.

<< Powrót do reszty wpisów