import pandas as pd from pandas import DataFrame d = DataFrame(columns=['xi','eta','x']) d.x = np.random.rand(100) d.xi = d.eval('2*x**2') d.eta =1-abs(2*d.x-1) d['h']=d[(d.x<0.5)].eval('eta**2/2') d['h2']=d[(d.x>=0.5)].eval('(2-eta)**2/2') %matplotlib inline d = DataFrame(columns=['xi','eta','x','h','h1','h2']) # 100 random samples d.x = np.random.rand(100) d.xi = d.eval('2*x**2') d.eta =1-abs(2*d.x-1) d.h1=d[(d.x<0.5)].eval('eta**2/2') d.h2=d[(d.x>=0.5)].eval('(2-eta)**2/2') d.fillna(0,inplace=True) d.h = d.h1+d.h2 fig,ax=subplots() ax.plot(d.xi,d.eta,'.',alpha=.3,label='$\eta$') ax.plot(d.xi,d.h,'k.',label='$h(\eta)$') ax.set_aspect(1) ax.legend(loc=0,fontsize=18) ax.set_xlabel('$2 x^2$',fontsize=18) ax.set_ylabel('$h(\eta)$',fontsize=18) fig.savefig('Conditional_expectation_MSE_Ex_005.png') d = DataFrame(columns=['xi','eta','x','h','h1','h2']) # 100 random samples d.x = np.random.rand(100) d.xi = d.eval('2*x**2') d['eta']=(d.x<0.5)*(2*d.x)+(d.x>=0.5)*(2*d.x-1) d.h1=d[(d.x<0.5)].eval('eta**2/2') d.h2=d[(d.x>=0.5)].eval('(1+eta)**2/2') d.fillna(0,inplace=True) d.h = d.h1+d.h2 fig,ax=subplots() ax.plot(d.xi,d.eta,'.',alpha=.3,label='$\eta$') ax.plot(d.xi,d.h,'k.',label='$h(\eta)$') ax.set_aspect(1) ax.legend(loc=0,fontsize=18) ax.set_xlabel('$2 x^2$',fontsize=18) ax.set_ylabel('$h(\eta)$',fontsize=18) fig.savefig('Conditional_expectation_MSE_Ex_005.png')