TransWikia.com

How can I draw graphs of P_n(x) function?

TeX - LaTeX Asked by user213378 on August 24, 2021

Graphs of iterated functions in Weierstrass’s approximation theorem

I have a problem while drawing the following functions:

enter image description here

Here is my code:

import graph;
size(8cm,6cm,false);

real F(real x){return sin(x)*sin(pi*x);}

typedef real integral(real);

integral G(int n){return new real(real x){
                            return ((1-x^2)^n)/(simpson(new real(real t){return (1-t^2)^n;},-1,1));}; }

integral Pnx(int n){return new real(real x){ // I think it is right!
                            return simpson(new real(real t){return F(t)*G(n)(t-x);},0,1);}; }

draw(Label("$x$",EndPoint),(-2,0)--(2,0),Arrow);
draw(Label("$y$",EndPoint),(0,-2)--(0,4),Arrow);
int smooth=400;
path f=graph(F,0,1,smooth);
draw(f,brown);

pen pe[]={red,green,blue,cyan,magenta,pink,gray};
pe.cyclic=true;
path g;
for (int i : new int[]{5,10,15,20,25,30,35}){
g=graph(G(i),-1,1,smooth);
draw(g,pe[i]);
}

// path h=graph(Pnx(5),0,1,smooth); // can't draw
// draw(h,blue); // can't draw

The output:

cbcb

Question:

Is my computer weak to draw this function?

One Answer

Try this one:

settings.tex="pdflatex";
import math;
import graph;
size(8cm,6cm,false);
real sc=0.05;
add(shift(-3*sc,-2*sc)*scale(sc)*grid(24,13,paleblue+0.2bp));
real xmin=0,xmax=1;
real ymin=0,ymax=0.5;
xaxis(xmin,xmax,RightTicks(Step=0.2,step=0.1),above=true);
yaxis(ymin,ymax,LeftTicks (Step=0.1,step=0.05),above=true);

real F(real x){return sin(x)*sin(pi*x);}
typedef real realFreal(real);
real sqrtPi=sqrt(pi);
realFreal Q(int n){ // int((1-t^2)^n,t=-1..1)
                    //   = sqrt(pi)*gamma(n+1)/gamma(n+3/2) 
  return 
    new real(real x){
      return (1-x^2)^n*gamma(n+3/2)/gamma(n+1)/sqrtPi;
    }; 
}
realFreal FPn(int n, real x){
  real c=gamma(n+3/2)/gamma(n+1)/sqrt(pi);
  return new real(real t){return c*sin(t)*sin(pi*t)*(1-(t-x)^2)^n;};
}
realFreal Pn(int n){
  return new real(real x){return simpson(FPn(n,x),0,1);};
}

int smooth=400;
pen pe[]={red,green,blue,cyan,magenta,pink,gray}; pe.cyclic=true;

path g;
for (int ni : new int[]{5,10,15,20,25,30,35}){
  g=graph(Pn(ni),0,1,smooth);
  draw(g,pe[ni]);
}

enter image description here

Correct answer by g.kov on August 24, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP