Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КМ_ЛР3_БУ.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
332 Кб
Скачать
☆

3.Примеры программной реализации рассмотренных методов (на языке бейсик).

Интерполяционный многочлен Лагранжа

01 cls

05 defdbl a-z

10 print "Интерполяция по Лагранжу"

15 input "Введите число узлов n=",n:dim a(n),b(n)

20 for i=0 to n-1

23 locate 3,1

25 print "Введите x(";i;")=";:input ,a(i)

30 print "Введите y(";i;")=";:input ,b(i)

31 locate 3,1

32 print " "

33 print " "

35 next i

40 input "Введите точку интерполяции x=",x

45 for j=1 to n-1

50 c=1

55 for i=1 to n-1

60 d=a(j)-a(i):if i=j then d=x-a(j)

65 if d=0 then print "y(x)=";b(i): goto 95

70 c=c*(x-a(i))/d

75 next i

80 s=s+c*b(j)

85 next j

90 print " Значение функции y(x)=";s

95 input " Необходимы ещё вычисления ? (1/0)",es

100 if es=1 then goto 40

105 print « Работа завершена»

110 end

Сплайн-аппроксимация

01 cls

05 defdbl a-z

10 print "Сплайн-аппроксимация, интерполяция и экстраполяция"

15 input "Введите число узлов N=",n

20 dim x(n),l(n),m(n),r(n),s(n)

25 for i=1 to n

30 locate 3,1:print " Номер узла ";i

31 print " "

32 print " "

33 locate 4,1

35 input "Введите x=",x(i)

40 input "Введите y=",y(i)

45 next i

50 d=x(2)-x(1):e=(y(2)-y(1))/d

60 for k=2 to n-1

65 h=d:d=x(k+1)-x(k)

70 f=e:e=(y(k+1)-y(k))/d:l(k)=d/(d+h)

75 r(k)=1-l(k):s(k)=6*(e-f)/(h+d)

80 next k

85 for k=2 to n-1

90 p=1/(r(k)*l(k-1)+2):l(k)=-l(k)*p:s(k)=(s(k)-r(k)*s(k-1))*p

95 next k

100 m(n)=0:l(n-1)=s(n-1):m(n-1)=l(n-1)

105 for k=n-2 to 1 step -1

110 l(k)=l(k)*l(k+1)+s(k):m(k)=l(k)

115 next k

120 for k=1 to n

125 print "Коэффициенты сплайна M(";k;")=";m(k)

130 next k

135 print "Провести интерполяцию-экстраполяцию ? (1/0)";

140 input ,t

145 if t=0 then goto 260

150 input "Введите аргумент x=",x:i=0:if x>x(n) then goto 190

155 if x<=x(1) then goto 200

160 i=i+1

165 if x>x(i) then goto 160

170 j=i-1:d=x(i)-x(j):h=x-x(j):r=x(i)-x

175 p=d*d/6:y=(m(j)*r^3+m(i)*h^3)/6/d

180 y=y+((y(j)-m(j)*p)*r+(y(i)-m(i)*p)*h)/d

185 print "Значение функции y(x)=";y:input " Вычислить ещё ? (1/0)",t1

187 if t1=1 then goto 150 else goto 260

190 d=x(n)-x(n-1):y=d*m(n-1)/6+(y(n)-y(n-1))/d

195 y=y*(x-x(n))+y(n): goto 185

200 d=x(2)-x(1):y=-d*m(2)/6+(y(2)-y(1))/2

205 y=y*(x-x(1))+y(1):goto 185

260 print "Работа завершена"

Линейная регрессия

01 cls

03 defdbl a-z

05 print "Линейная регрессия"

10 input " Введите количество пар точек n=",n

15 a=0:b=0:c=0:d=0

20 print " Введите попарно x(i),y(i)"

25 for i=1 to n

27 locate 4,1:print "Текущий номер точки i=";i

28 locate 5,1

30 input "x(i)=",x:input "y(i)=",y

33 locate 5,1:print " "

34 locate 6,1:print " "

35 a=a+x:b=b+y:c=c+x^2:d=d+x*y

40 next i

45 b1=(a*b-n*d)/(a^2-n*c)

50 b0=(b-b1*a)/n

100 print "y(x)=";b0;"+";b1;"*x";

110 end

Гиперболическая регрессия

01 cls

03 defdbl a-z

05 print "Гиперболическая регрессия"

10 input " введите количество пар точек n=",n

15 a=0:b=0:c=0:d=0

20 print "введите попарно x(i),y(i)"

25 for i=1 to n

27 locate 4,1:print "Номер точки i=";i

28 locate 5,1

30 input "x(i)=",x:input "y(i)=",y

33 locate 5,1:print " "

34 locate 6,1:print " "

35 a=a+1/x:b=b+1/(x^2):c=c+y:d=d+y/x

40 next i

43 e=n*b-a^2:f=c*b-d*a

45 k=n*d-a*c:f=f/e:k=k/e

100 print "y(x)=";f;"+";k;"/x";

110 end

Степенная регрессия

01 cls

03 defdbl a-z

05 print " Степенная регрессия"

10 input " Введите количество точек n=",n

15 a=0:b=0:c=0:d=0

20 print " Введите попарно x(i),y(i)"

25 for i=1 to n

27 locate 4,1:print "i=";i

28 locate 5,1

30 input "x(i)=",x:input "y(i)=",y

33 locate 5,1:print " "

34 locate 6,1:print " "

35 a=a+log(x):b=b+log(y):c=c+log(x)*log(y):d=d+(log(x))^2

40 next i

43 e=(a*b-n*c)/(a^2-n*d):f=exp((b-e*a)/n)

100 print "y(x)=";f;"*x^";e;

110 end

Показательная регрессия

01 cls

03 defdbl a-z

05 print " Показательная регрессия"

10 input " Введите количество точек n=",n

15 a=0:b=0:c=0:d=0

20 print " Введите попарно x(i),y(i)"

25 for i=1 to n

27 locate 4,1:print "i=";i

28 locate 5,1

30 input "x(i)=",x:input "y(i)=",y

33 locate 5,1:print " "

34 locate 6,1:print " "

35 a=a+x:b=b+x^2:c=c+log(y)/log(10):d=d+x*log(y)/log(10)

40 next i

43 e=(n*b-a^2):f=c*b-d*a

45 k=n*d-a*c:f=10^(f/e):k=10^(k/e)

100 print "y(x)=";f;"*";k;"^x";

110 end

Экспоненциальная регрессия

01 cls

03 defdbl a-z

05 print " Экспоненциальная регрессия"

10 input " Введите количество точек n=",n

15 a=0:b=0:c=0:d=0

20 print " Введите попарно x(i),y(i)"

25 for i=1 to n

27 locate 4,1:print "i=";i

28 locate 5,1

30 input "x(i)=",x:input "y(i)=",y

33 locate 5,1:print " "

34 locate 6,1:print " "

35 a=a+x:b=b+log(y):c=c++x^2:d=d+x*log(y)

40 next i

43 b1=(a*b-n*d)/(a^2-n*c):b0=exp((b-b1*a)/n)

100 print "y(x)=";b0;"*exp(";b1;"*x)";

110 end

Логарифмическая регрессия.

01 cls

03 defdbl a-z

05 print " Логарифмическая регрессия"

10 input " введите количество точек n=",n

15 a=0:b=0:c=0:d=0

20 print " Введите попарно x(i),y(i)"

25 for i=1 to n

27 locate 4,1:print "i=";i

28 locate 5,1

30 input "x(i)=",x:input "y(i)=",y

33 locate 5,1:print " "

34 locate 6,1:print " "

35 a=a+log(x)/log(10):b=b+(log(x)/log(10))^2

37 c=c+y:d=d+y*log(x)/log(10)

40 next i

43 e=n*b-a^2:f=c*b-d*a

45 k=n*d-a*c:f=f/e:k=k/e

100 print "y(x)=";f;"+";k;"lg(x)";

110 end

Параболическая регрессия

01 cls

03 defdbl a-z

05 print " Параболическая регрессия"

10 input " введите число точек n=",n

15 print " Введите попарно x(i),y(i)"

20 data 0,0,0,0,0,0,0

23 read b,c,f,m,p,r,s

24 a=n

25 for i=1 to n

27 locate 4,1:print "i=";i

28 locate 5,1

30 input "x(i)=",x:input "y(i)=",y

33 locate 5,1:print " "

34 locate 6,1:print " "

35 b=b+x:c=c+x^2:f=f+x^3:m=m+x^4:p=p+y:r=r+x*y:s=s+y*x^2

40 next i

45 d=b:e=c:k=c:l=f:q=d/a:e=e-q*b:f=f-q*c:r=r-q*p:q=k/a:l=l-q*b

50 m=m-q*c:s=s-q*p:q=l/e

55 b2=(s-r*q)/(m-f*q):b1=(r-f*b2)/e

60 b0=(p-b*b1-c*b2)/a

100 print "y(x)=";b0;"+";b1;"*x+";b2;"*x^2";

110 end

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]