Интерполяция функции полиномом Ньютона - C (СИ)
Формулировка задачи:
program inerp; uses crt; var XI,YI:array [1..4] of real; fx: array [1..3] of real; fxx:array [1..2] of real; i: integer; fxxx,rez,x: real; Begin clrscr; Writeln ('*****************************************************'); Writeln (' Интерполяция функции полиномом Ньютона '); Writeln ('*****************************************************'); writeln ('Заданные значения узлов:'); Writeln ('№ | x | y'); writeln ('------------'); XI[1]:=3; YI[1]:=4.4; XI[2]:=4; YI[2]:=2.9; XI[3]:=5; YI[3]:=3.1; XI[4]:=6; YI[4]:=2.2; for i:=1 to 4 do writeln (i-1,' | ', XI[i],' | ', YI[i]); writeln ('Разделенная разность первого порядка'); writeln ('------------------------------------'); for i:=1 to 3 do begin fx[i]:=(YI[i+1]-YI[i])/(Xi[i+1]-xi[i]); writeln (fx[i]:4:2); end; writeln ('Разделенная разность второго порядка'); writeln ('------------------------------------'); for i:=1 to 2 do begin fxx[i]:=(fx[i+1]-fx[i])/(XI[i+2]-XI[i]); writeln (fxx[i]:4:2); end; fxxx:=(fxx[2]-fxx[1])/(xi[4]-xi[1]); Writeln ('Разделенная разность третьего порядка'); writeln ('-------------------------------------'); writeln (fxxx:4:2); writeln ('Введите значение интерполируемой переменной Х:'); writeln ('-------------------'); readln (x); rez:=yi[1]+fx[1]*(x-xi[1])+fxx[1]*(x-xi[1])*(x-xi[2])+ fxxx*(x-xi[1])*(x-xi[2])*(x-xi[3]); writeln ('Значение интерполируемой переменной = ', rez:4:2); writeln ('------------------------------------------------'); End.
Решение задачи: «Интерполяция функции полиномом Ньютона»
textual
Листинг программы
#include <stdio.h> void main() { float fxxx, rez, x, XI[4], YI[4], fx[3], fxx[2]; int i; system("cls"); setlocale(0, "rus"); printf("*****************************************************\n"); printf("Интерполяция функции полиномом Ньютона\n"); printf("*****************************************************\n"); printf("Заданные значения узлов:\n"); printf("№ | x | y\n"); printf("------------\n"); XI[0]=3; YI[0]=4.4; XI[1]=4; YI[1]=2.9; XI[2]=5; YI[2]=3.1; XI[3]=6; YI[3]=2.2; for(i=0; i<4; i++) printf("%d | %.4f | %.4f\n", i, XI[i], YI[i]); printf("Разделенная разность первого порядка\n"); printf("------------------------------------\n"); for(i=0; i<3; i++) { fx[i]=(YI[i+1]-YI[i])/(XI[i+1]-XI[i]); printf("%.2f\n", fx[i]); } printf("Разделенная разность второго порядка\n"); printf("------------------------------------\n"); for(i=0; i<2; i++) { fxx[i]=(fx[i+1]-fx[i])/(XI[i+2]-XI[i]); printf("%4.2f\n", fx[i]); } fxxx=(fxx[1]-fxx[0])/(XI[3]-XI[0]); printf("Разделенная разность третьего порядка\n"); printf("------------------------------------\n"); printf("%.4f\n", fxxx); printf("Введите значение интерполируемой переменной Х:\n"); printf("------------\n"); scanf("%f", &x); rez=YI[0]+fx[0]*(x-XI[0])+fxx[0]*(x-XI[0])*(x-XI[1])+ fxxx*(x-XI[0])*(x-XI[1])*(x-XI[2]); printf("Значение интерполируемой переменной = %.4f\n", rez); printf("------------------------------------\n"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д