w13 b, Inżynierskie, Semestr III, Metody obliczeniowe, Wyklady

Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
>
restart:
>
with(plots):with(LinearAlgebra):
Warning, the name changecoords has been redefined
Aproksymacja
Aproksymacja funkcji dyskretnej
>
n:=9;
n
9
>
X:=array(0..n,[0,1,2,3,4,5,6,7,8,9]):
>
Y:=array(0..n,[-1.2,-8,-22.1,-37.6,-49.5,-58.7,-54.0,-39.3,-3.5,
54.1]):
>
plot(zip((x,y)->[x,y],X,Y),style=point,symbol=cross,symbolsize=3
0);
:=
>
pkt:=%:
>
Generowanie i rozwiazanie ukladu równan na wspolczynniki wielomianu aproksymujacego
a
[
j
]
=
∑∑
n
m
S
[
y
a x
j
]
2
k
j k
k
=
0
=
0
>
m:=3; # Digits:=20; # dla m=9
m
3
>
S:=add((Y[k]-add(a[j]*X[k]^j,j=0..m))^2,k=0..n);
:=
S
(
:=
− −
1.2
a
0
)
2
+
(
− − − − −
8
a
0
a
1
a
2
a
3
)
2
+
(
− − − − −
2
a
1
4
a
2
8
a
3
)
2
+
(
− − − − −
37.6
a
0
3
a
1
9
a
2
27
a
3
)
2
+
(
− − − − −
49.5
a
0
4
a
1
16
a
2
64
a
3
)
2
+
(
− − − − −
58.7
a
0
5
a
1
25
a
2
125
a
3
)
2
+
(
− − − − −
6
a
1
36
a
2
216
a
3
)
2
+
(
− − − − −
39.3
a
0
7
a
1
49
a
2
343
a
3
)
2
+
(
− − − − −
8
a
1
64
a
2
512
a
3
)
2
+
>
for i from 0 to m do
(
54.1
a
0
− − − −
9
a
1
81
a
2
729
a
3
)
2
j
22.1
a
0
54.0
a
0
3.5
a
0
r||i:=diff(S,a[i])=0;
end do;
r0
:=
20
a
0
+ + + +
90
a
1
570
a
2
4050
a
3
439.6 0
=
r1
:=
90
a
0
+ + +
570
a
1
4050
a
2
30666
a
3
+
1593.4 0
=
r2
:=
570
a
0
+ +
4050
a
1
30666
a
2
+
241650
a
3
+
4811.8 0
=
r3
:=
4050
a
0
+
30666
a
1
+
241650
a
2
+
1956810
a
3

1595.0 0
=
>
roz:=solve({r||(0..m)},{seq(a[i],i=0..m)});
:=
roz
{
a
2
=
-5.098892774 =
,
a
1
-2.753399378 =
,
a
0
-1.175104895 =
,
a
3
0.6760683761
}
>
assign(roz):
>
g1:=add(a[j]*x^j,j=0..m); # wielomian aproksymujący
:=
g1

1.175104895 2.753399378
x
5.098892774
x
2


+
0.6760683761
x
3
>
p:=plot(g1,x=0..n):
>
display([pkt,p]);
>
S;
4.588004950
ε=

>
epsilon:=evalf(sqrt(S/(X[n]-X[0])));
:=ε 0.7139876244
S
ba
>
a:='a':
Zapis macierzowy ukladu równan
M
=
∑ ∑
x b y x
ij
,
n
i
j k i kk
k
+
=
0
k
=
0
>
>
M:=Matrix(m+1):b:=Vector(m+1):
>
for i from 0 to m do
b[i+1]:=add(Y[k]*X[k]^i,k=0..n):
n
+
i
1, 1
++
1
for j from 0 to m do
M[i+1,j+1]:=add(X[k]^(i+j),k=0..n):
end do:
end do:
>
M,b;

10 45 285 2025
45 285 2025 15333
285 2025 15333 120825
2025 15333 120825 978405


-219.8
-796.7
-2405.9
797.5

,




>
a:=LinearSolve(M,b);
-1.17510489510479842
-2.75339937839944104
-5.09889277389276428
0.676068376068375664
>
g2:=add(a[j+1]*x^j,j=0..m); # wielomian aproksymujący wyznaczony
z układu równan A.a=b
g2
1.175104895 2.75339937839944104
x
5.09889277389276428
x
2


a
:=


:=



+
>
'g1'=g1;
=
0.676068376068375664
x
3
g1

1.175104895 2.753399378
x
5.098892774
x
2


+
0.6760683761
x
3
>
a:='a':b:='b':
Komenda w Maple'u
>
with(CurveFitting);
Warning, the name LeastSquares has been rebound
[
BSpline BSplineCurve Interactive LeastSquares PolynomialInterpolation
,
,
,
,
,
RationalInterpolation Spline ThieleInterpolation
,
,
]
>
type(X,list);
false
>
X:=convert(X,list); Y:=convert(Y,list);
:=
X
[
0123456789
]
:=
Y
[
-1.2 -8 -22.1 -37.6 -49.5 -58.7 -54.0 -39.3 -3.5 54.1
, ,
,
,
,
,
,
,
,
]
>
type(X,list);
true
>
gM:=LeastSquares(X,Y,x,curve=add(a[i]*x^i,i=0..m));
gM
1.175104895 2.75339937839955874
x
5.09889277389273054
x
2
:=



+
>
'g2'=g2;
g2
1.175104895 2.75339937839944104
x
5.09889277389276428
x
2
0.676068376068373222
x
3
=



+
0.676068376068375664
x
3
>
Aproksymacja funkcji okresowej
>
f:=x->piecewise(x<-1,-2-x,x<1,x,2-x);






,,,,,,,,,
f

x
piecewise
(
x
-1 − −
,
2
x
<
,
x
1
x

, ,
2
x
)
>
plot(f,-2..2,scaling=constrained);
>
fokr:=piecewise(x<-3,x+4,x<-1,-2-x,x<1,x,x<3,2-x,-4+x); # kilka
okresow na wykresie

x
4
x
-3
− −
2
x
<
x
-1
fokr
:=

x
x
1
<
2
x
x
3
<
4
x otherwise
>
plot(fokr,x=-5..5,scaling=constrained);

− +
:=
<
+
<


T
2
2
2
π
ix
a
=

f x
( ) cos
dx i
,
=
0,1,...
i
T
T
T

2
T
2
2
2
()sin
π
ix
b
=

f x
dx i
, 1,2,.
=
i
T
T

T
2
>
T:=4;
T
4
:=
>
m:=10; # 5, 10, 15, 25, 50
m
10
:=
>
for i from 0 to m do
a[i]:=2/T*evalf(Int(f(x)*cos(2*Pi/T*i*x),x=-T/2..T/2)):
b[i]:=2/T*evalf(Int(f(x)*sin(2*Pi/T*i*x),x=-T/2..T/2)):
end do:

>
g:=1/2*a[0]+add(a[i]*cos(2*Pi/T*i*x)+b[i]*sin(2*Pi/T*i*x),i=1..m
);
m
gx a a x b x
()
=+
1
( cos
2
π
i
+
sin )
2
π
i
2
0
i
T
i
T
=
1
g
0.8105694690
:=
sin
π
x
2





0.09006327436
sin


3 π
x
2


+
0.03242277876
sin


5 π
x
2



0.01654223406
sin


7 π
x
2


+
0.01000703048
sin


9 π
x
2



0.1000000000 10
-13
sin 5 π
x
(
)
>
plot([fokr,g],x=-5..5,color=[red,blue],scaling=constrained,numpo
ints=200); # porównanie
>
>
i










  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • alter.htw.pl
  • Powered by WordPress, © Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.