• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задача в Паскале на построение графика функции

  • Автор темы Автор темы Lomz0r
  • Дата начала Дата начала

Lomz0r

Ученик
Регистрация
25 Фев 2012
Сообщения
5
Реакции
0
Баллы
0
Задача в Паскале на построение графика функции

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 (n);
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, т.к. никогда не имел дело с графикой. Спасибо. (можно переделать программу под любой другой удобный вам паскаль)
Если отдельные моменты вычисления функции не понятны (методы прогонки для вычисления коэффициентов и т. д. могу пояснить.)
 
никто не может помочь чтоли?)
 
не все сразу, ребят, давайте по одному
 
спасибо всем откликнувшимся, я таки сам добил эту программу, и по хорошей традиции код не выложу :Р
 
А зря, код кому нибудь помог бы в следующий раз.
 
А зря, код кому нибудь помог бы в следующий раз.

да я добил программу и на конференции ее представил, херачит графики по контрольным измерениям
если кому понадобится скину конечно :)
 
Мне очень понадобилось)) Можешь мне скинуть?)
 
Назад
Сверху