Задача в Паскале на построение графика функции
имеется данная программа вычисления кубического сплайна функции по заданным точкам.
Необходимо: 1)построить график данной функции (ЯП: фрее паскаль, паскаль авс) программа сделана под абс, но для удобства можете переделать ее под другую.
2) построить еще один график (чтоб были 2 вместе)
3) дописать рядом код считывания значения функции в данной точек (вообще не критично, если что сам добью).
2,3 пункт не так важны как 1, т.к. никогда не имел дело с графикой. Спасибо. (можно переделать программу под любой другой удобный вам паскаль)
Если отдельные моменты вычисления функции не понятны (методы прогонки для вычисления коэффициентов и т. д. могу пояснить.)
program Spline;
uses crt;
type vector=array [0..100] of real;
var x,y,c:vector;
x0,x9,h,x1,p,p1,p2,e:real;
n,i:integer;
procedure InputData (var n:integer; var x,y:vector);
var i:integer;
begin
write ('vvedite kol-vo to4ek n (3<n<100): ');
read;
for i:=1 to n do begin
write ('vvedite to4ku x[',i,'], f(x[',i,']): ');
read (x[i-1], y[i-1]);
end;
end;
procedure Coeff(n:integer; var x,f,c:vector);
var i,j,m:integer;
a,b,r:real;
k:vector;
begin
k[1]:=0; c[1]:=0;
for i:=2 to n do begin
j:=i-1;
m:=j-1;
a:=x-x[j];
b:=x[j]-x[m];
r:=2*(a+b)-b*c[j];
c:=a/r;
k:=(3.0*((f-f[j])/a-(f[j]-f[m])/b)-b*k[j])/r;
end;
c[n]:=k[n];
for i:=n-1 downto 2 do c:=k-c*c[i+1];
end;
procedure Spl (n:integer; var x,f,c:vector; x1:real; var p,p1,p2:real);
{postroenie splina. x,f - ishodnie dannie, c - vektor coeff,
naydenniy proceduroy Coeff, x1 - zna4enie x, dlya kotorogo stroim spline,
p - zna4enie splina v to4ke, p1,p2 - 1-ya i 2-ya proizvodnie}
var i,j:integer;
a,b,d,q,r:real;
begin
i:=1;
while (x1>x) and (i<>n) do i:=i+1;
j:=i-1; a:=f[j]; b:=x[j]; q:=x-b;
r:=x1-b; p:=c; d:=c[i+1];
b:=(f-a)/q - (d+2*p)*q/3.0;
d:=(d-p)/q*r;
p1:=b+r*(2*p+d);
p2:=2*(p+d);
p:=a+r*(b+r*(p+d/3.0))
end;
begin
clrscr;
writeln;
InputData (n,x,y);
Coeff (n,x,y,c);
writeln ('zna4enie X':19,'zna4enie F(X)':19,'zna4enie':19,'zna4enie':19);
for i:=0 to n do begin
Spl (n,x,y,c,x,p,p1,p2);
e:=abs(y-p);
writeln (x:19:8,y:19:8,p:19:8,e:19:8);
end;
readln;
end.
имеется данная программа вычисления кубического сплайна функции по заданным точкам.
Необходимо: 1)построить график данной функции (ЯП: фрее паскаль, паскаль авс) программа сделана под абс, но для удобства можете переделать ее под другую.
2) построить еще один график (чтоб были 2 вместе)
3) дописать рядом код считывания значения функции в данной точек (вообще не критично, если что сам добью).
2,3 пункт не так важны как 1, т.к. никогда не имел дело с графикой. Спасибо. (можно переделать программу под любой другой удобный вам паскаль)
Если отдельные моменты вычисления функции не понятны (методы прогонки для вычисления коэффициентов и т. д. могу пояснить.)