/* yl. 1 - ln(1+x) Maclaurini osasummad */ taylor(log(1+x), x, 0, 10); f(x,n) := sum((-1)**(k+1) * x**k/k, k, 1, n); load("draw"); draw2d( explicit(f(x,2), x, -1, 2), color="red", explicit(log(1+x), x, -1, 2), color="blue", explicit(f(x,5), x, -1, 2), color="green", explicit(f(x,15),x,-1,2), yrange=[0,3]); /* yl. 2 - sin(x) Maclaurini osasummad */ taylor(sin(x), x, 0, 10); f(x,n) := sum((-1)**k * x**(2*k+1)/factorial(2*k+1), k, 0, n); load("draw"); draw2d(explicit(f(x,2), x, -30, 30), color="red", explicit(sin(x), x, -30, 30), color="black", explicit(f(x,5), x, -30, 30), color="green", explicit(f(x,15),x,-30,30), yrange=[-5,5] ); /* ül. 3 - Lagrange interpolatsioon absoluutväärtuse jaoks lõigus [-1,1]*/ /* võrgu punktid x_0=-1, x_{2n}=1, üldiselt Delta x_k = 1/n*/ /* seega siis x_k = -1+k/n, k = 0,...,2n */ /* valem: P(x) = sum f(x_k) * korrutis (x-x_j) / (x_k-x_j), kus k\ne j */ /* esimene ja viimane vaja eraldi leida! */ P(x,n) := abs(-1)*product((x-(-1+j/n))/((-1)-(-1+j/n)), j, 1,2*n)+ abs(1)*product((x-(-1+j/n))/(1-(-1+j/n)), j, 0,2*n-1)+ sum( abs(abs(-1+k/n))* product((x-(-1+j/n))/((-1+k/n)-(-1+j/n)), j, 0,k-1)* product((x-(-1+j/n))/((-1+k/n)-(-1+j/n)), j, k+1,2*n), k, 1, 2*n-1 ); load("draw"); draw2d(explicit(P(x,2), x, -1, 1), color="red", explicit(abs(x), x, -1, 1), color="black", explicit(P(x,5), x, -1, 1), color="green", explicit(P(x,15),x,-1,1), yrange=[0,2] ); /* Teine variant: */ /* võrgu punktid x_0=-1, x_{2n-1}=1, üldiselt Delta x_k = 2/(2*n-1)*/ /* seega siis x_k = -1+2*k/(2*n-1), k = 0,...,2n-1 */ /* valem: P(x) = sum f(x_k) * korrutis (x-x_j) / (x_k-x_j), kus k\ne j */ /* esimene ja viimane vaja eraldi leida! */ P(x,n) := abs(-1)*product((x-(-1+2*j/(2*n-1)))/((-1)-(-1+2*j/(2*n-1))), j, 1,2*n-1)+ abs(1)*product((x-(-1+2*j/(2*n-1)))/(1-(-1+2*j/(2*n-1))), j, 0,2*n-2)+ sum( abs(abs(-1+2*k/(2*n-1)))* product((x-(-1+2*j/(2*n-1)))/((-1+2*k/(2*n-1))-(-1+2*j/(2*n-1))), j, 0,k-1)* product((x-(-1+2*j/(2*n-1)))/((-1+2*k/(2*n-1))-(-1+2*j/(2*n-1))), j, k+1,2*n-1), k, 1, 2*n-2 ); load("draw"); draw2d(explicit(P(x,2), x, -1, 1), color="red", explicit(abs(x), x, -1, 1), color="black", explicit(P(x,5), x, -1, 1), color="green", explicit(P(x,15),x,-1,1), yrange=[0,2] ); /* ül. 4. f(x)=-1, kui x\in[-\pi,0], =0, kui x\in(0,\pi]. */ /* Fourier' rea osasummad */ 1/%pi*integrate((-1),x,-%pi,0); 1/%pi*integrate((-1)*cos(n*x),x,-%pi,0); 1/%pi*integrate((-1)*sin(n*x),x,-%pi,0); /* saadud info põhjal koostame Fourier' osasummad */ f(x,n) := -1/2 + 1/%pi*sum(1/k*(1-(-1)**k)*sin(k*x), k, 1, n); load("draw"); draw2d( explicit(-1, x, -%pi, 0), explicit(0, x, 0, %pi), color="red", explicit(f(x,2), x, -5, 5), color="black", explicit(f(x,10), x, -5, 5), color="green", explicit(f(x,100),x,-5,5) ); /* ül. 6 - Fourier' rea osasummade silumine aritmeetiliste keskmistega (Fejer) */ /* sinisega on osasummad ise, punasega nende aritmeetilised keskmised (Gibbsi efekt on kadunud) */ g(x,n) := 1/(n+1)*sum(f(x,k), k, 0, n); draw2d( explicit(-1, x, -%pi, 0), explicit(0, x, 0, %pi), explicit(f(x,2), x, -5, 5), color=red, explicit(g(x,2), x, -5, 5) ); draw2d( explicit(-1, x, -%pi, 0), explicit(0, x, 0, %pi), explicit(f(x,10), x, -5, 5), color=red, explicit(g(x,10), x, -5, 5) ); draw2d( explicit(-1, x, -%pi, 0), explicit(0, x, 0, %pi), explicit(f(x,100),x,-5,5), color=red, explicit(g(x,100),x,-5,5) );