Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Текст програми. /*iнтерполяцiя за методом Ньютона*/




/*iнтерполяцiя за методом Ньютона*/

#include<stdio.h>

main()

{

FILE *stream;

int i,j,n;

float x[10],y[10],d[10][10],xx,h,nh,p,s,fact;

printf("Введiть к-сть вузлiв iнтерполяцii");

scanf("%d",&n);

stream=fopen("ne.txt","w");

fprintf(stream,"Iнтерполяцiя за Ньютоном\n");

fprintf(stream,"x ");

for (i=0;i<n;i++)

{puts("ввiд x");

scanf("%f",&x[i]);

fprintf(stream,"%5.2f ",x[i]);

};

fprintf(stream,"\ny ");

for (i=0;i<n;i++)

{puts("ввiд y");

scanf("%f",&y[i]);

fprintf(stream,"%1.3f ",y[i]);

};

printf("Введiть значення точки iнтерполяцii ");

scanf("%f",&xx);

for(i=0;i<=n-1;i++)

d[i][0]=y[i+1]-y[i];

for(j=1;j<n;j++)

for(i=0;i<n;i++)

d[i][j]=d[i+1][j-1]-d[i][j-1];

fprintf(stream,"\nx=%5.3f",xx);

s=y[0];

p=1.0;

h=x[1]-x[0];

nh=1.0;

fact=1.0;

for(i=0;i<n-1;i++)

{ fact*=(i+1);

nh*=h;

p*=xx-x[i];

s+=d[0][i]*p/(fact*nh);

};

fprintf(stream,"\ny=%5.4f",s);

printf("y=%5.4f",s);

fclose(stream);

}

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

Iнтерполяцiя за Ньютоном

X 3.00 7.00 11.00 15.00 19.00

Y 4.000 10.000 22.000 26.000 33.000

x=13.000

y=24.8984

Результат спіпав з результатом, одержаним за допомогою многочлена Лагранжа.


Побудова інтерполяційного многочлена Ньютона

 

Побудова інтерполяційного многочлена Ньютона здійснювалася засобами Pascal з використанням модуля роботи в кільці многочленів bibl.tpu, вихідний текст якого приведений у розділі “Побудова многочлена Лагранжа”. Далі приведений текст програми побудови многочлена Ньютона.

 

program newt;

{$M 65520,0,655360}

{побудова многочлена Ньютона}

Uses Crt,bibl;

 

{початок програми}

var i,j,k,n,m:integer;

s,p,q,p1:poli;

fact,h,nh,t,w:real;

x,y:array[1..20] of real;

d:array[1..20,1..20] of real;

begin

{створення кiльцевого нуля zero i кiльцевоi одиницi od}

zerod;

assign(fi,'newt.txt');

rewrite(fi);

{ввiд вузлiв}

writeln('Введiть число вузлiв ');

readln(n);

for i:=1 to n do begin

writeln('Введiть x[',i,'] y[',i,']');

readln(x[i],y[i]);

end;

writeln('Введiть точку iнтерполяцii ');

readln(t);

writeln(' x y');

for i:=1 to n do writeln(x[i]:5:2,' ',y[i]:5:2);

writeln(fi,' x y');

for i:=1 to n do writeln(fi,x[i]:5:2,' ',y[i]:5:2);

writeln('Точка iнтерполяцii ',t:5:3);

writeln(fi,'Точка iнтерполяцii ',t:5:3);

s:=zero;

s[0]:=y[1];

h:=x[2]-x[1];

for i:=1 to n do d[i,1]:=y[i+1]-y[i];

for j:=2 to n do

for i:=1 to n do

d[i,j]:=d[i+1,j-1]-d[i,j-1];

fact:=1;nh:=1;

p:=od;

for i:=1 to n-1 do

begin

fact:=fact*i;

nh:=nh*h;

q:=zero;

q[1]:=1;q[0]:=-x[i];

dobutok(p,q,p);

dobchy(p,d[1,i]/fact/nh,p1);

suma(s,p1,s);

end;

writeln('Многочлен Ньютона ');

writeln(fi,'Многочлен Ньютона ');

vyvid(s);

fvyvid(s);

writeln;

writeln(fi);

w:=znach(s,t);

writeln('Значення в точцi iнтерполяцii=',w:5:3);

writeln(fi,'Значення в точцi iнтерполяцii=',w:5:3);

close(fi);

end.





Поделиться с друзьями:


Дата добавления: 2015-09-20; Мы поможем в написании ваших работ!; просмотров: 496 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Логика может привести Вас от пункта А к пункту Б, а воображение — куда угодно © Альберт Эйнштейн
==> читать все изречения...

2254 - | 2184 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.