Программылинейной и квадратичной аппроксимации на PASCAL’е и MATHCAD’е
Линейная аппроксимация
Программа в PASCAL’е для линейной аппроксимации
Дана зависимость теплоемкости (Сp) от температуры (Т).
Найти коэффициенты линейной аппроксимирующей функции a и b.
Записать вид полученной линейной аппроксимирующей функции.
Найти теплоемкость (Сp) при температуре Т = 550 К.
T,K | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 100 |
Cp,Дж.моль*К | 6,97 | 7,01 | 7,12 | 7,28 | 7,45 | 7,62 | 7,79 | 7,93 |
Обозначения в программе: n – количество известных экспериментальных значений; x – экспериментальные значения x (температура); y – экспериментальные значения y (теплоемкость);S1, S2, S3, S4 – суммы; a0, a1 – коэффициенты аппроксимирующей функции; x0 – температура, при которой надо найти теплоемкость; y0 – теплоемкость при заданной температуре.
ProgramLinApr;
constn=8;
x: array[1..n] ofreal=(300,400,500,600,700,800,900,1000);
y: array[1..n] ofreal=(6.97,7.01,7.12,7.28,7.45,7.62,7.79,7.93);
varS1, S2, S3, S4, a0, a1, x0, y0: real;
i: integer;
Begin
// Расчетсумм:
S1:=0; S2:=0; S3:=0; S4:=0;
fori:=1 tondo beginS1:=S1+x[i]; S2:=S2+y[i]; S3:=S3+sqr(x[i]);
S4:=S4+x[i]*y[i];
end;
// Расчет коэффициентов аппроксимирующей функции:
a0:=(S2*S3-S4*S1)/(n*S3-sqr(S1)); a1:=(n*S4-S1*S2)/(n*S3-S1*S1);
// Вывод на экран коэффициентов аппроксимирующей функции:
writeln('Коэффициенты аппроксимирующей функции:');
writeln('a0=', a0:1:3); writeln('a1=', a1:1:5);
// Вывод на экран аппроксимирующей функции:
writeln('Аппроксимирующая функция:Cp=', a0:1:3, '+',a1:1:5,'*T');
// Задаем температуру, при которой нужно посчитать теплоемкость:
|
|
x0:=550;
// Расчет теплоемкости при заданной температуре:
y0:=a0+a1*x0;
// Вывод на экран теплоемкости при заданной температуре:
writeln('При Т=', x0, ' К', ' Cp=', y0:1:2, ' Дж/моль*К');
end.
Окно вывода
Коэффициенты аппроксимирующей функции:
a0=6.445
a1=0.00146
Аппроксимирующаяфункция:Cp=6.445+0.00146*T
При Т=550 К Cp=7.25 Дж/моль*К
В MATHCAD’е линейная аппроксимация реализуется с помощью двух программ. Приведем первую из них, которых работает с действительными числами:
Здесь:line(x,y) – вектор из двух элементов (b,a)коэффициентов линейного полинома
ax + b: b = line(x,y)0, a = line(x,y)1.
Программа в PASCAL’е для квадратичной аппроксимации
Длятаблично заданной функции построить аппроксимирующий полином 2-й степени:
N | 1 | 2 | 3 | 4 | 5 |
ФИО | 1 | <Ф> | <И> | <О> | 5 |
Здесь:<Ф> – количество букв в фамилии студента;
<И> – количество букв в имени студента;
<О> – количество букв в отчестве студента;
ProgramIVANOV_naim_kvadr_polinom_2;
Var
w,w0,w1,w2,a0,a1,a2,er,z:real;
i,p:integer;
x,y:array[1..5] ofreal;
c:array[0..4] ofreal;
d:array[0..4] ofreal;
functionstepen(u:real;k:integer):real;
varg:real;
m:integer;
Begin
g:=1;
form:=1 tok dog:=g*u;
|
|
stepen:=g;
end;
Begin
writeln(' СЖД-221 ИВАНОВМетоднаименьшихквадратов');
writeln('введите исходные данные:');
fori:=1 to5 do
Begin
write('x[',i:1,']='); {1,2,3,4,5}
read(x[i]);
write(' y[',i:1,']='); {1,<Ф>,<И>,<O>,5}
read(y[i]);
end;
forp:=0 to4 do
Begin
c[p]:=0; d[p]:=0;
fori:=1 to5 do
Begin
z:=stepen(x[i],p);
c[p]:=c[p]+z;
d[p]:=d[p]+z*y[i];
end;
end;
w:=c[0]*c[2]*c[4]+2*c[1]*c[2]*c[3]-c[2]*c[2]*c[2]-c[1]*c[1]*c[4]-c[0]*c[3]*c[3];
w0:=d[0]*c[2]*c[4]+d[1]*c[2]*c[3]+d[2]*c[1]*c[3]-d[2]*c[2]*c[2]-d[1]*c[1]*c[4]-d[0]*c[3]*c[3];
w1:=d[0]*c[2]*c[3]+d[1]*c[0]*c[4]+d[2]*c[1]*c[2]-d[1]*c[2]*c[2]-d[0]*c[1]*c[4]-d[2]*c[0]*c[3];
w2:=d[0]*c[1]*c[3]+d[1]*c[1]*c[2]+d[2]*c[0]*c[2]-d[0]*c[2]*c[2]-d[1]*c[0]*c[3]-d[2]*c[1]*c[1];
a0:=w0/w;
a1:=w1/w;
a2:=w2/w;
writeln(' Р Е З У Л Ь Т А Т Ы');
writeln('P(x)=',a0:5:2,' +',a1:5:2,'*x +',a2:5:2,'*x:2');
write('x= '); {табулирование полинома для построения графика}
fori:=1 to9 dowrite(0.5*(i+1):8:1);
writeln;
write('y= ');
fori:=1 to9 do
Begin
w:=0.5*(i+1);
z:=a0+a1*w+a2*w*w;
write(z:8:2);
end;
writeln;
er:=0; {вычислениеошибки}
fori:=1 to5 do
er:=er+(a0+a1*x[i]+a2*x[i]*x[i]-y[i])*(a0+a1*x[i]+a2*x[i]*x[i]-y[i]);
er:=sqrt(er/5);
writeln('СРЕДНЕКВАДРАТИЧЕСКАЯ ОШИБКА = ',er:7:5);
readln;
end.
Окно вывода
СЖД-221 ИВАНОВ Метод наименьших квадратов
введите исходные данные:
x[1]=1
y[1]=1
x[2]=2
y[2]=10
x[3]=3
y[3]=5
x[4]=4
y[4]=11
x[5]=5
y[5]=5
Р Е З У Л Ь Т А Т Ы
P(x)=-5.80 + 9.04*x +-1.36*x*x
x= 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
y= 1.89 4.71 6.86 8.33 9.11 9.23 8.66 7.41 5.49
СРЕДНЕКВАДРАТИЧЕСКАЯ ОШИБКА = 2.58125
В MATHCAD’е имеется программа полиномиального сглаживания данных (xi, yi) полиномом k-й степени А(х) = a + b·x + c·x2 + d·x3 + … + h·xk. При k = 1 полином является прямой линией, при k = 2 – параболой, при k = 3 – кубической параболой и т.д. Как правило, на практике применяется k< 5.
|
|
Для построения полинома k-й степени необходимо наличие, по крайней мере, k + 1 точек данных.
В программе сглаживание осуществляется комбинацией встроенной функции regressи полиномиальной интерполяции:
regress(x,y,k) – вектор коэффициентов для построения сглаживающего полинома;
interp(s,x,y,t) – результат полиномиальной интерполяции,
гдеs = regress(x,y,k);
х – вектор действительных данных аргумента, элементы которого расположены в порядке возрастания;
у – вектор действительных данных значений того же размера;
t – значение аргумента сглаживающего полинома.
Здесь на графике построены сглаживающие полиномы 1-й, 2-й и 6-й (интерполяционный) степени.
Задания
4.1. Построить линейную аппроксимацию таблично заданной функции:
а) вручную (см. пример на стр. 3 );
б) на Паскале (стр. 4);
в) в Маткаде (стр. 5).
|
|
1 | xi | 1,0 | 1,5 | 2,0 | 3,0 | 3,2 |
yi | 8,1 | 9,0 | 11,2 | 13,8 | 14,7 |
2 | xi | 0,3 | 0,5 | 0,8 | 1,1 | 2,3 |
yi | 1,4 | 0,7 | –0,9 | –2,3 | –8,8 |
3 | xi | 0,5 | 0,8 | 1,2 | 1,3 | 4,0 |
yi | 6,3 | 7,0 | 9,0 | 9,3 | 16,8 |
4 | xi | 1,2 | 1,7 | 3,3 | 4,1 | 4,3 |
yi | –3,1 | –5,6 | –17,1 | –23,1 | –24,8 |
5 | xi | 0,7 | 0,9 | 1,3 | 1,6 | 2,3 |
yi | 7,0 | 8,0 | 9,0 | 10,0 | 12,0 |
6 | xi | –3,4 | –3,2 | –3,1 | –2,5 | –1,5 |
yi | –13,9 | –12,9 | –12,2 | –9,1 | –4,2 |
7 | xi | 2,1 | 2,3 | 3,1 | 3,8 | 4,5 |
yi | –9,3 | –7,2 | –13,4 | –16,1 | –18,9 |
8 | xi | 1,1 | 2,1 | 3,4 | 4,3 | 4,9 |
yi | –0,8 | 1,2 | 3,8 | 5,4 | 6,7 |
9 | xi | 10,1 | 11,5 | 13,6 | 16,2 | 17,5 |
yi | –0,9 | 0,8 | 0,6 | 0,3 | 0,2 |
10 | xi | 0,1 | 0,3 | 0,5 | 1,2 | 2,1 |
yi | 1,0 | 1,1 | 1,2 | 1,4 | 1,6 |
11 | xi | 3,2 | 4,1 | 5,3 | 6,7 | 7,3 |
yi | 1,6 | 1,4 | 1,1 | 0,9 | 0,7 |
12 | xi | 1,1 | 1,3 | 1,7 | 1,9 | 2,2 |
yi | 1,3 | 1,4 | 1,5 | 1,6 | 1,7 |
13 | xi | 2,1 | 2,5 | 3,0 | 3,1 | 3,3 |
yi | 11,1 | 12,8 | 13,9 | 14,5 | 15,1 |
14 | xi | 0,7 | 0,9 | 1,2 | 1,3 | 1,7 |
yi | 1,7 | 1,1 | 0,8 | 0,1 | –0,5 |
15 | xi | –1,1 | –0,5 | 0,2 | 0,4 | 0,7 |
yi | 2,1 | 3,4 | 5,1 | 6,3 | 6,9 |
16 | xi | –1,2 | –0,7 | 0,3 | 1,5 | 1,7 |
yi | 5,7 | 5,1 | 0,1 | 0,2 | –0,7 |
17 | xi | 2,1 | 3,0 | 3,2 | 3,9 | 4,1 |
yi | 3,4 | 8,1 | 9,2 | 12,6 | 13,3 |
18 | xi | 1,7 | 1,9 | 2,3 | 2,5 | 3,5 |
yi | 0,1 | –0,6 | –2,0 | –2,7 | –5,3 |
19 | xi | –0,1 | 0,2 | 0,5 | 0,9 | 1,2 |
yi | –7,1 | –6,2 | –4,3 | –2,7 | –0,9 |
20 | xi | –1,2 | –1,1 | –0,9 | –0,5 | 0,1 |
yi | 8,7 | 8,1 | 7,8 | 6,4 | 4,5 |
21 | xi | 3,2 | 3,8 | 4,7 | 5,1 | 5,4 |
yi | 10,5 | 12,3 | 14,9 | 16,4 | 16,9 |
22 | xi | 2,2 | 3,1 | 4,5 | 5,3 | 5,7 |
yi | 0,1 | –0,4 | –1,2 | –1,6 | –1,8 |
23 | xi | 1,3 | 2,4 | 3,5 | 4,1 | 5,5 |
yi | 3,4 | 4,7 | 5,5 | 6,5 | 7,8 |
24 | xi | 1,9 | 2,4 | 3,7 | 4,3 | 6,1 |
yi | –3,4 | –3,8 | –4,7 | –5,1 | –6,4 |
25 | xi | –1,1 | –0,7 | –0,5 | –0,1 | 1,2 |
yi | 2,4 | 2,7 | 2,9 | 3,4 | 4,9 |
4.2. Прибыль предприятия за некоторый период деятельности по годам приведена в таблице (см. ниже).
Требуется (на Паскале и в Маткаде)(стр.5-7, 7-8):
а) составить квадратичную зависимость прибыли по годам деятельности предприятия;
б) определить ожидаемую прибыль для 8-го года деятельности.
1,13 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 54 | 57 | 62 | 65 | 67 | 69 | 70 |
2,14 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 55 | 56 | 63 | 66 | 68 | 70 | 71 |
3,15 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 64 | 67 | 72 | 75 | 77 | 79 | 80 |
4,16 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 65 | 66 | 73 | 76 | 78 | 80 | 81 |
5,17 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 44 | 47 | 52 | 55 | 57 | 59 | 60 |
6,18 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 45 | 46 | 53 | 56 | 58 | 60 | 61 |
7,19 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 34 | 37 | 42 | 45 | 47 | 49 | 50 |
8,20 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 35 | 36 | 43 | 46 | 48 | 50 | 51 |
9,21 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 25 | 26 | 33 | 36 | 38 | 40 | 41 |
10,22 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 24 | 27 | 32 | 35 | 37 | 39 | 40 |
11,23 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 66 | 65 | 73 | 76 | 80 | 80 | 81 |
12,24 | Годt | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Прибыльп | 47 | 44 | 55 | 52 | 57 | 59 | 60 |
Дата добавления: 2018-04-15; просмотров: 1533; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!