Poniższy program wypisuje wielomian Hermite'a, ale nie wiem jak zrobić postać ogólną żeby policzyć pochodną.
???
Ukryta treść:
Kod: Zaznacz cały
program Hermite;
uses
Crt;
var
a,b,h,t: real;
n,i,j,k,l: integer;
v,x,w,y,z,c,d,e: array[0..1000] of real;
begin
ClrScr;
writeln('Podaj przedzial [a,b], a,b - rzeczywiste.');
write('a= ');
readln(a);
write('b= ');
readln(b);
while a>=b do
begin
writeln;
writeln('a ma byc mniejsze od b.');
write('a = ');
readln(a);
write('b = ');
readln(b);
end;
writeln;
writeln('Podaj n>= 1, naturalne.');
write('n= ');
readln(n);
while n<1 do
begin
writeln;
writeln('n musi byc wieksze od 1.');
write('n = ');
readln(n);
end;
writeln;
h:=(b-a)/n;
x[0]:=a;
x[n]:=b;
writeln('Dla podanego n wartosci wezlow wynosza:');
writeln('x_0 = ', x[0]:3:1);
for i:=1 to n-1 do
begin
x[i]:=a+i*h;
writeln('x_', i, ' = ', x[i]:3:1);
end;
writeln('x_', n, ' = ', x[n]:3:1);
writeln;
writeln('Podaj wartosci A_i');
for i:=0 to n do
begin
write('A_', i, ' = ');
readln(v[i]);
end;
writeln;
writeln('Podaj wartosci A_i-prim');
for i:=0 to n do
begin
write('A_', i, '-prim = ');
readln(z[i]);
end;
writeln;
for i:=0 to n do
begin
y[2*i]:=z[i];
y[2*i+1]:=(v[(2*i+1) div 2 + 1]-v[(2*i+1) div 2])/h;
end;
for i:=0 to 2*n do
w[i]:=y[i];
for i:=1 to 2*n do
for j:=2*n downto i do
w[j]:=(w[j]-w[j-1])/h;
writeln;
writeln('Wielomian w postaci Hermitea ma postac:');
write('H(x) = ', v[0]:3:1);
for i:=0 to 2*n do
begin
write('+', w[i]:3:1);
if i mod 2 = 0 then
begin
for j:=0 to (i div 2)-1 do
write('(x-', x[j]:3:1, ')^2');
write('(x-', x[i div 2]:3:1, ')');
end
else
for j:=0 to (i div 2) do
write('(x-', x[j]:3:1, ')^2');
end;
end.