Готовые лабы в ПАСКАЛЕ (описание внутри) (лаба 2)

Посмотреть архив целиком













Лабораторная работа № 2.

Построение кубического сплайна

для таблично заданной функции.





Вариант № 12

Группа МТ1-32

Кондрашов А.П.

































program laba2;

var h,r,aa,bb,x,o,sp,sp1,sp2,sp3,sp4,f,e,e1:real;

n,i,w:longint;

a1,b1,c1,a,b,c,s,x1,al,y,bet,d:array[0..100] of real;

procedure vvod;

begin

writeln('':4000);

write('n=');

readln(n);

write('x=');

readln(x);

aa:=0;

bb:=4;

if (xbb) then halt;

h:=(bb-aa)/(n);

x1[0]:=aa;

for i:=0 to n do

begin

y[i]:=(4*x1[i]*x1[i]*x1[i])/(x1[i]*x1[i]*x1[i]*x1[i]*x1[i]

*x1[i]*x1[i]*x1[i]+1);

x1[i+1]:=x1[i]+h;

end;

for i:=1 to n-1 do

begin

a1[i]:=1;

b1[i]:=4;

c1[i]:=1;

s[i]:=3*(y[i+1]-2*y[i]+y[i-1])/(h*h);

end;

a1[0]:=0;

c1[n]:=0;

end;

procedure work;

var r:real;i:longint;

begin

al[1]:=-c1[1]/b1[1];

bet[1]:=s[1]/b1[1];

for i:=2 to n-1 do

begin

r:=a1[i]*al[i-1]+b1[i];

al[i]:=-c1[i]/r;

bet[i]:=(s[i]-a1[i]*bet[i-1])/r;

end;

c[n]:=bet[n];

for i:=n-1 downto 1 do c[i]:=al[i]*c[i+1]+bet[i];

end;

procedure raschet;

begin

for i:=0 to n-1 do

begin

a[i]:=y[i];

b[i]:=(y[i+1]-y[i])/h-h*(c[i+1]+2*c[i])/3;

d[i]:=(c[i+1]-c[i])/(3*h);

end;

end;

procedure vivod;

begin

writeln('--------------------------------------------');

writeln(' x f(x) s(x) e(x) ');

writeln('--------------------------------------------');

for i:=1 to n do

begin

sp3:=a[i-1]+b[i-1]*(x1[i]-x1[i-1])+c[i-1]*(x1[i]-

x1[i-1])*(x1[i]-x1[i-1]);

sp4:=d[i-1]*(x1[i]-x1[i-1])*(x1[i]-x1[i-1])*(x1[i]-x1[i-1]);

sp:=sp3+sp4;

e:=abs(sp-y[i]);

writeln(x1[i]:8:4,' ',y[i]:8:4,' ',sp:8:4,' ',e:8:4);

end;

writeln('--------------------------------------------');

writeln(' ');

writeln('--------------------------------------------');

writeln(' x* f(x*) s(x*) e(x*) ');

writeln('--------------------------------------------');

for i:=1 to n do

begin

o:=aa+(i-0.5)*h;

f:=4*o*o*o/(o*o*o*o*o*o*o*o+1);

sp1:=a[i-1]+b[i-1]*(o-x1[i-1])+c[i-1]*(o-x1[i-1])*

(o-x1[i-1])+d[i-1]*(o-x1[i-1])*(o-x1[i-1])*(o-x1[i-1]);

e1:=abs(sp1-f);

writeln(o:8:4,' ',f:8:4,' ',sp1:8:4,' ',e1:8:4);

end;

writeln('--------------------------------------------');

for i:=0 to n-1 do if (x>i*h) and (x<(i+1)*h) then w:=i;

writeln('f(',x:2:2,')=',4*x*x*x/(x*x*x*x*x*x*x*x+1):2:4);

sp2:=a[w]+b[w]*(x-x1[w])+c[w]*(x-x1[w])*(x-x1[w])+

d[w]*(x-x1[w])*(x-x1[w])*(x-x1[w]);

writeln('splain(',x:2:2,')=',sp2:2:4);

writeln('e#=',abs(sp2-4*x*x*x/(x*x*x*x*x*x*x*x+1)):2:4);

end;

BEGIN

vvod;

work;

raschet;

vivod;

END.


Результат работы программы.



n=10 x=2.5



Результат для базовых точек.

---------------------------------------------------------------

x f(x) s(x) e(x)

---------------------------------------------------------------

0.4000 0.2558 0.2558 0.0000

0.8000 1.7538 1.7538 0.0000

1.2000 1.3042 1.3042 0.0000

1.6000 0.3728 0.3728 0.0000

2.0000 0.1245 0.1245 0.0000

2.4000 0.0502 0.0502 0.0000

2.8000 0.0232 0.0232 0.0000

3.2000 0.0119 0.0119 0.0000

3.6000 0.0066 0.0066 0.0000

4.0000 0.0039 0.0039 0.0000

----------------------------------------------------------------



Результат для промежуточных точек.

----------------------------------------------------------------

x* f(x*) s(x*) e(x*)

----------------------------------------------------------------

0.2000 0.0320 -0.0446 0.0766

0.6000 0.8497 1.0566 0.2069

1.0000 2.0000 1.7588 0.2412

1.4000 0.6965 0.7783 0.0817

1.8000 0.2098 0.1842 0.0256

2.2000 0.0775 0.0839 0.0065

2.6000 0.0337 0.0318 0.0018

3.0000 0.0165 0.0169 0.0005

3.4000 0.0088 0.0087 0.0001

3.8000 0.0050 0.0051 0.0001

-----------------------------------------------------------------

Значения функции и сплайна в точке

вводимой с экрана, x=2.5.

f(2.50)=0.0409 splain(2.50)=0.0392 e#=0.0017



Случайные файлы

Файл
124596.rtf
140857.doc
1552-1.rtf
159467.rtf
70306.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.