Известна функция y(x), заданная таблицей значений:
x | y(x) |
x0 x1 x2 … xn | y0 y1 y2 … yn |
Требуется, используя значения функции yi, i=0, 1, 2, …, n в узлах интерполяции xi, вычислить значение y(x) для любого x из промежутка [x0 ; xn].
Для решения задачи строится интерполяционный полином Лагранжа:
имеющий в заданных узлах x0, x1, x2, …, xn те же значения, что и функция y(x),
т.е. такой, что
i=0, 1, 2, …, n;
x – значение аргумента, для которого требуется вычислить y(x);
значение полинома Ln(x) будет считаться искомым значением y(x).
Таким образом, решение задачи интерполирования сводится к программированию алгоритма вычисления значения полинома Ln(x).
Пример. Пусть функция y(x) задана таблицей значений
x | y(x) |
0,1 | 0,9950 |
0,3 | 0,9553 |
0,5 | 0,8776 |
0,7 | 0,7648 |
0,9 | 0,6216 |
1,1 | 0,4536 |
1,3 | 0,2675 |
1,5 | 0,0707 |
1,7 | -0,1288 |
1,9 | -0,3233 |
Требуется вычислить значение функции y(x) для x=0,2 и x=1,8.
Составим программу:
PROGRAM Lagrange;
USES crt;
CONST n=10;
VAR x,y:array[1..n] of real;
x0,p,s:real;
i,j:integer;
BEGIN
clrscr;
x[1]:=0.1; y[1]:=0.995;
x[2]:=0.3; y[2]:=0.9553;
x[3]:=0.5; y[3]:=0.8776;
x[4]:=0.7; y[4]:=0.7648;
|
|
x[5]:=0.9; y[5]:=0.6216;
x[6]:=1.1; y[6]:=0.4536;
x[7]:=1.3; y[7]:=0.2675;
x[8]:=1.5; y[8]:=0.0707;
x[9]:=1.7; y[9]:=-0.1288;
x[10]:=1.9; y[10]:=-0.3233;
writeln('введите значение x');
read(x0);
s:=0;
for i:=1 to n do begin p:=1; for j:=1 to n do if j<>i then
p:=p*(x0-x[j])/(x[i]-x[j]);
s:=s+y[i]*p;
end;
writeln('искомое значение функции: y(x) =',s:7:4)
END.
В данной программе: x0 – переменная вещественного типа, в которую записывается значение аргумента x; значение переменной s –значение полинома Ln(x) – искомое значение функции y(x).
Результат работы программы получим в виде:
искомое значение функции: y(x) = 0.9799 (для x=0,2)
искомое значение функции: y(x) =-0.2270 (для x=1,8)
Листинг программы с результатами расчетов представлен в приложении (см рис.П.3, рис.П.10, рис.П.14).
Варианты заданий
1) x | y(x) | 2) x | y(x) | 3) x | y(x) | ||
2,0 2,2 2,4 2,6 2,8 3,0 3,2 3,4 3,6 3,8 | 0,9093 0,8085 0,6755 0,5155 0,3350 0,1411 -0,0584 -0,2555 -0,4425 -0,6119 | 6,3 6,5 6,7 6,9 7,1 7,3 7,5 7,7 7,9 8,1 | 0,0168 0,2151 0,4048 0,5784 0,7290 0,8504 0,9380 0,9882 0,9989 0,9699 | 0,1 0,3 0,5 0,7 0,9 1,1 1,3 1,5 1,7 1,9 | 0,9093 0,8085 0,6755 0,5155 0,3350 0,1411 -0,0584 -0,2555 -0,4425 -0,6119 | ||
x=2,1 x=3,7 | x=6,4 x=7,6 | x=0,17 x=1,89 | |||||
4) x | y(x) | 5) x | y(x) | 6) x | y(x) | ||
2,0 2,2 2,4 2,6 2,8 3,0 3,2 3,4 3,6 3,8 | -0,4161 -0,5885 -0,7374 -0,8596 -0,9422 -0,9900 -0,9668 -0,8968 -0,7910 -0,6709 | 0,72 0,92 1,12 1,32 1,52 1,72 1,92 2.12 2,32 2,52 | 0,4868 0,3985 0,3269 0,2671 0,2187 0,1791 0,1446 0,1200 0,0983 0,0805 | 0,45 0,50 0,55 0,60 0,65 0,70 0,75 0,80 0,85 0,90 | 0,4831 0,5463 0,6131 0,6841 0,7602 0,8423 0,9316 1,0296 1,1383 1,2602 | ||
x=2,1 x=3,7 | x=0,75 x=2,41 | x=0,48 x=0,87 | |||||
7) x | y(x) | 8) x | y(x) | 9) x | y(x) | ||
0,49 0,54 0,59 0,64 0,69 0,74 0,79 0,84 0,89 0,94 | 0,5334 0,5994 0,6696 0,7445 0,8253 0,9131 1,0692 1,1156 1,2346 1,3692 | 0,47 0.52 0.57 0,62 0,67 0,72 0,77 0,82 0,87 0,92 | 0,5080 0,5726 0,6410 0,7139 0,7922 0,8770 0,9696 1,0717 1,1853 1,3133 | 0,50 0,55 0,60 0,65 0,70 0,75 0,80 0,85 0,90 0,95 | 0,5463 0,6131 0,6841 0,7602 0,8423 0,9316 1,0296 1,1383 1,2602 1,3984 | ||
x=0,5 x=0,93 | x=0,48 x=0,9 | x=0,49 x=0,92 | |||||
10) x | y(x) | 11) x | y(x) | 12) x | y(x) | ||
0,48 0,53 0,58 0,63 0,68 0,73 0,78 0,83 0,88 0,93 | 0,5206 0,5859 0,6552 0,7291 0,8087 0,8949 0,9893 1,0934 1,2097 1,3409 | 0,53 0,58 0,63 0,68 0,73 0,78 0,83 0,88 0,93 0,98 | 0,5859 0,6552 0,7291 0,8087 0,8949 0,9893 1,0934 1,2097 1,3409 1,4909 | 0,71 0,81 0,91 1,01 1,11 1,21 1,31 1,41 1,51 1,61 | 2,0340 2,2479 2,4843 2,7456 3,0344 3,3535 3,7062 4,0960 4,5267 5,0028 | ||
x=0,5 x=0,9 | x=0,56 x=0,95 | x=0,75 x=1,6 | |||||
13) x | y(x) | 14) x | y(x) | 15) x | y(x) | ||
0,75 0,85 0,95 1,05 1,15 1,25 1,35 1,45 1,55 1,65 | 2,1170 2,3396 2,5857 2,8577 3,1582 3,4903 3,8574 4,2631 4,7115 5,2070 | 0,73 0,83 0,93 1,03 1,13 1,23 1,33 1,43 1,53 1,63 | 2,0751 2,2933 2,5345 2,8011 3,0957 3,4212 3,7810 4,1787 4,6182 5,1039 | 0,7 0,9 1,1 1,3 1,5 1,7 1,9 2,1 2,3 2,5 | 0,4966 0,4066 0,3329 0,2725 0,2231 0,1827 0,1496 0,1224 0,1002 0,0821 | ||
x=0,8 x=1,62 | x=0,77 x=1,59 | x=0,8 x=2,45 | |||||
16) x | y(x) | 17) x | y(x) | 18) x | y(x) | ||
0,74 0,84 0,94 1,04 1,14 1,24 1,34 1,44 1,54 1,64 | 2,0959 2,3164 2,5600 2,8292 3,1268 3,4556 3,8190 4,2207 4,6646 5,1552 | 0,55 0,65 0,75 0,85 0,95 1,05 1,15 1,25 1,35 1,45 | 0,5782 0,6968 0,8223 0,9561 1,0995 1,2539 1,4208 1,6019 1,7991 2,0143 | 1,7 1,8 1,9 2,0 2,1 2,2 2,3 2,4 2,5 2,6 | 2,8283 3,1075 3,4177 3,7622 4,1443 4,5679 5,0372 5,5569 6,1323 6,7690 | ||
x=0,79 x=1,55 | x=0,57 x=1,31 | x=1,81 x=2,56 | |||||
19) x | y(x) | 20) x | y(x) | 21) x | y(x) | ||
1,73 1,83 1,93 2,03 2,13 2,23 2,33 2,43 2,53 2,63 | 2,9090 3,1979 3,5173 3,8727 4,2669 4,7037 5,1876 5,7235 6,3166 6,9729 | 1,71 1,81 1,91 2,01 2,11 2,21 2,31 2,41 2,51 2,61 | 2,8549 3,1371 3,4506 3,7987 4,1847 4,6127 5,0868 5,6119 6,1931 6,8363 | 1,74 1,84 1,94 2,04 2,14 2,24 2,34 2,44 2,54 2,64 | 2,9364 3,2277 3,5512 3,9103 4,3085 4,7499 5,2388 5,7801 6,3793 7,0423 | ||
x=1,76 x=2,5 | x=1,74 x=2,6 | x=1,77 x=2,55 | |||||
22) x | y(x) | 23) x | y(x) | 24) x | y(x) | ||
1,72 1,82 1,92 2,02 2,12 2,22 2,32 2,42 2,52 2,62 | 2,8818 3,1669 3,4838 3,8355 4,2256 4,6580 5,1370 5,6674 6,2545 6,9043 | 1,75 1,85 1,95 2,05 2,15 2,25 2,35 2,45 2,55 2,65 | 2,9642 3,2585 3,5855 3,9483 4,3507 4,7966 5,2905 5,8373 6,4426 7,1123 | 1,35 1,45 1,55 1,65 1,75 1,85 1,95 2,05 2,15 2,25 | 2,4604 3,0486 3,7239 4,4921 5,3594 6,3316 7,4149 8,6151 9,9384 11,3906 | ||
x=1,73 x=2,6 | x=1,77 x=2,53 | x=1,4 x=2,23 | |||||
25) x | y(x) | ||||||
0,1 0,3 0,5 0,7 0,9 1,1 1,3 1,5 1,7 1,9 | 0,0998 0,2955 0,4794 0,6442 0,7843 0,8912 0,9636 0,9975 0,9917 0,9463 | ||||||
x=0,2 x=1,55 | |||||||
Задание 2
|
|
ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ
Цель работы: составить программу для вычисления определенного интеграла методом Симпсона.