Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

All published worksheets from http://sagenb.org

Views: 168703
Image: ubuntu2004
modes = ['等间距模式','任意间距模式'] @interact def _(f_x = float(0.6),f_y = float(0.26) ,a = float(1.48),b= float(8.25),sigma= float(0.025),lamda = float(0.11),dx= float(0.1),l_1 = float(0.8),aspectRatio = [[1,1,1],'automatic'],place_mode=selector(modes, buttons=True),t=input_box(default=None,label='安放位置'),symmetry=("对称排列", True)): dataFile=open(DATA+'result.txt','w') dataFile.write('计算条件:\n') dataFile.write('fx=%f,fy=%f,a=%f,b=%f,sigma=%f,lamba=%f,dx=%f,l1=%f\n'%(f_x,f_y,a,b,sigma,lamda,dx,l_1)) x,y,z = var('x,y,z') z2_1(x,y)=f_x*(x/a)**2-f_y*(y/b)**2+sigma/2 z2_2(x,y)=f_x-f_y*(y/b)**2 p1=plot3d(z2_1, (x,-a,a), (y,-b,b),opacity=0.3) p2=plot3d(z2_2, (x,a,a+lamda), (y,-b,b),color="yellow") p3=plot3d(z2_2, (x,-a-lamda,-a), (y,-b,b),color="yellow") p4=plot3d(z2_1-sigma, (x,-a,a), (y,-b,b),color="red",opacity=0.3) u = var('u') u_1= u*(x*(sqrt(f_x)/a)-y*(sqrt(f_y)/b))==z u_2=x*(sqrt(f_x)/a)+y*(sqrt(f_y)/b)==u tmax = (sqrt(f_x)-sqrt(f_y))/(sqrt(f_x)/a) if(place_mode == '等间距模式'): kmax = int(tmax/dx) print '计算模式:等间距模式' print 'k的取值范围:' + str(range(-kmax,kmax+1)) print '钢筋的间距为%.3f时,单侧的钢筋条数为%d,总共%d条'%(dx,kmax*2+1,kmax*4+2) dataFile.write('计算模式:等间距模式') dataFile.write('钢筋的间距为%.3f时,单侧的钢筋条数为%d,总共%d条'%(dx,kmax*2+1,kmax*4+2)) dataFile.write('k的取值范围:\n' + str(range(-kmax,kmax+1)) + '\n') p51 = None p52 = None generatrix_u = [] generatrix_v = [] p91 = None p92 = None generatrix_fomula_u =[] generatrix_fomula_v =[] ts = [] ts = [] if(place_mode =='等间距模式'): for k in range(-kmax,kmax+1): ts.append(k*dx) elif(t == None and place_mode =='任意间距模式'): print '请输入间距' return elif(type(t) is int or type(t) is float or type(t)==type(1) or type(t) == type(0.1)): ts.append(t) print '请最少输入2个点' return else: for tx in t: if(type(tx) == type(1) or type(tx) is float or type(tx) == type(0.1)): if(not tx in ts and (tx<tmax and tx>-tmax)): ts.append(tx) if(symmetry and tx!=0): ts.append(-tx) if(place_mode =='任意间距模式'): print '计算模式:任意间距模式' print 't的范围为[%.2f,%.2f],您输入的有效的钢筋位置:%s'%(-tmax,tmax,str(ts)) dataFile.write('计算模式:任意间距模式') dataFile.write('t的范围为[%.2f,%.2f],您输入的有效的钢筋位置:%s'%(-tmax,tmax,str(ts)) +'\n') if(len(ts)==0): print '请输入钢筋的位置' return for tx in ts: if(not (type(tx) == type(1) or type(tx) is float or type(tx) == type(0.1))): continue solns = solve([u_1,u_2],x,y,u) solns2 = solve([u_1,u_2,u==tx*sqrt(f_x)/a ],x,z,u,solution_dict=True) #show(solns) #show(solns2) ####################绘制u族母线####################### p51= p51 + parametric_plot3d([solns2[0][x],y,solns2[0][z]],(y,-b-l_1,b+l_1),color='blue') ####################绘制v族母线####################### p52= p52 + parametric_plot3d([-solns2[0][x],y,solns2[0][z]],(y,-b-l_1,b+l_1),color='blue') generatrix_fomula_u.append([x==solns2[0][x], z==solns2[0][z]]) generatrix_fomula_v.append([x==-solns2[0][x], z==solns2[0][z]]) #直母线上任取两点算坐标 solns10 = solve([solns2[0][x]==x,solns2[0][z]==z,y==0],x,y,z,solution_dict=True) solns11 = solve([solns2[0][x]==x,solns2[0][z]==z,y==1],x,y,z,solution_dict=True) u10 = vector([solns10[0][x],solns10[0][y],solns10[0][z]]) u11 = vector([solns11[0][x],solns11[0][y],solns11[0][z]]) u20 = u10 -u11 #直母线的方向向量 generatrix_u.append(u20) #p91 +=arrow3d(u10,u11) #直母线上任取两点算坐标 solns10 = solve([-solns2[0][x]==x,solns2[0][z]==z,y==0],x,y,z,solution_dict=True) solns11 = solve([-solns2[0][x]==x,solns2[0][z]==z,y==1],x,y,z,solution_dict=True) v10 = vector([solns10[0][x],solns10[0][y],solns10[0][z]]) v11 = vector([solns11[0][x],solns11[0][y],solns11[0][z]]) v20 = v10 -v11 #直母线的方向向量 #p92 +=arrow3d(v10,v11) generatrix_v.append(v20) plane1 = y==b+l_1 u_3=z==0 u_4=x*(sqrt(f_x)/a)+y*(sqrt(f_y)/b)==0 solns3 = solve([u_3,u_4,plane1],x,y,z,solution_dict=True) html('过(0,0,0)的母线与平面y=b+l1的交点坐标:$%s$'%latex(solns3)) dataFile.write('过(0,0,0)的母线与平面y=b+l1的交点坐标:\n%s\n'%solns3) P1 = point((solns3[0][x],solns3[0][y],solns3[0][z]) ) A = vector([solns3[0][x],solns3[0][y],solns3[0][z] ]) #过(0,0,0)的母线与平面y=b+l1的交点 #p333 = point3d([solns3[0][x],solns3[0][y],solns3[0][z] ]) B = vector([0,0,0]) AB = B -A; # 锚固面法向 p45 = None ###############第1象限############################ P = vector([x, y, z]) AP = P - A; grapple = AB.dot_product(AP) #grapple = (-sqrt(f_y)/b) *(x+( a*(b+l_1) * sqrt(f_y)/(b*sqrt(f_x)) )) + (sqrt(f_x)*(y-b-l_1)/a) p61 = implicit_plot3d(grapple,(x,-a-l_1,0),(y,b,b+2*l_1),(z,f_y-f_x,f_x-f_y+l_1),opacity=0.7) dataFile.write('第1象限中母线与锚固法线夹角:\n') for gener in generatrix_u: costheta1 = abs(gener.dot_product(AB))/( sqrt(gener.dot_product(gener)) * sqrt(AB.dot_product(AB)) ) theta1 = arccos(costheta1)*180/ pi #print 'theta1=%f'%(theta1.n(30)) dataFile.write('%.2f\t'%(theta1.n(30))) dataFile.write('\n第1象限中母线与锚固面的交点坐标:\n') for gener in generatrix_fomula_u: solns45 = solve([grapple==0,gener[0],gener[1]],x,y,z,solution_dict=True) #show(solns45) p45 +=point3d([solns45[0][x],solns45[0][y],solns45[0][z] ],color = 'yellow',size=7) dataFile.write('%.2f,%.2f,%.2f\n'%(solns45[0][x].n(30),solns45[0][y].n(30),solns45[0][z].n(30))) ###############第2象限############################ P = vector([-x, y, z]) AP = P - A; grapple = AB.dot_product(AP) p62 = implicit_plot3d(grapple,(x,0,a+l_1),(y,b,b+2*l_1),(z,f_y-f_x,f_x-f_y+l_1),opacity=0.7) dataFile.write('第2象限中母线与锚固法线夹角:\n') for gener in generatrix_v: costheta2 = abs(gener.dot_product(AB))/( sqrt(gener.dot_product(gener)) * sqrt(AB.dot_product(AB)) ) theta2 = arccos(costheta2)*180/ pi #print 'theta2=%f'%(theta2.n(30)) dataFile.write('%.2f\t'%(theta2.n(30))) dataFile.write('\n第2象限中母线与锚固面的交点坐标:\n') for gener in generatrix_fomula_v: solns45 = solve([grapple==0,gener[0],gener[1]],x,y,z,solution_dict=True) #show(solns45) p45 +=point3d([solns45[0][x],solns45[0][y],solns45[0][z] ],color = 'yellow',size=7) dataFile.write('%.2f,%.2f,%.2f\n'%(solns45[0][x].n(30),solns45[0][y].n(30),solns45[0][z].n(30))) ###############第3象限############################ P = vector([x, -y, z]) AP = P - A; grapple = AB.dot_product(AP) p63 = implicit_plot3d(grapple,(x,-a-l_1,0),(y,-b-2*l_1,-b),(z,f_y-f_x,f_x-f_y+l_1),opacity=0.7) dataFile.write('第3象限中母线与锚固法线夹角:\n') for gener in generatrix_v: costheta3 = abs(gener.dot_product(AB))/( sqrt(gener.dot_product(gener)) * sqrt(AB.dot_product(AB)) ) theta3 = arccos(costheta3)*180/ pi #print 'theta3=%f'%(theta3.n(30)) dataFile.write('%.2f\t'%(theta3.n(30))) dataFile.write('\n第3象限中母线与锚固面的交点坐标:\n') for gener in generatrix_fomula_v: solns45 = solve([grapple==0,gener[0],gener[1]],x,y,z,solution_dict=True) #show(solns45) p45 +=point3d([solns45[0][x],solns45[0][y],solns45[0][z] ],color = 'yellow',size=7) dataFile.write('%.2f,%.2f,%.2f\n'%(solns45[0][x].n(30),solns45[0][y].n(30),solns45[0][z].n(30))) ###############第4象限############################ P = vector([-x, -y, z]) AP = P - A; grapple = AB.dot_product(AP) p64 = implicit_plot3d(grapple,(x,0,a+l_1),(y,-b-2*l_1,-b),(z,f_y-f_x,f_x-f_y+l_1),opacity=0.7) dataFile.write('第4象限中母线与锚固法线夹角:\n') for gener in generatrix_u: costheta4 = abs(gener.dot_product(AB))/( sqrt(gener.dot_product(gener)) * sqrt(AB.dot_product(AB)) ) theta4 = arccos(costheta4)*180/ pi #print 'theta4=%f'%(theta4.n(30)) dataFile.write('%.2f\t'%(theta4.n(30))) dataFile.write('\n第4象限中母线与锚固面的交点坐标:\n') for gener in generatrix_fomula_u: solns45 = solve([grapple==0,gener[0],gener[1]],x,y,z,solution_dict=True) #show(solns45) p45 +=point3d([solns45[0][x],solns45[0][y],solns45[0][z] ],color = 'yellow',size=7) dataFile.write('%.2f,%.2f,%.2f\n'%(solns45[0][x].n(30),solns45[0][y].n(30),solns45[0][z].n(30))) ####################各母线间的交点############################ dataFile.write('各母线间的交点:\nu-v') p77 = None for j in xrange(len(generatrix_fomula_v)): dataFile.write('\tv%d'%(j)) for i in xrange(len(generatrix_fomula_u)): dataFile.write('\nu%d\t'%(i)) for j in xrange(len(generatrix_fomula_v)): #求母线间的交点 solns88=solve([generatrix_fomula_u[i][0],generatrix_fomula_u[i][1],generatrix_fomula_v[j][0]],x,y,z,solution_dict=True) #show(solns88) p77 +=point3d([solns88[0][x],solns88[0][y],solns88[0][z] ],color = 'yellow',size=7) dataFile.write('(%f,%f,%f)\t'%(round(solns88[0][x].n(30),2),round(solns88[0][y].n(30),2),round(solns88[0][z].n(30),2)) ) p7 = point3d((0,0,0),color = 'yellow') show(p1+p2+p3+p4+p51+p52+p61+p62+p63+p64+p7+p77+p45,aspect_ratio=aspectRatio, figsize=5) dataFile.close()
f= open(DATA + 'result.txt','r') for line in f: print line
WARNING: Output truncated!
计算条件: fx=0.600000,fy=0.260000,a=1.480000,b=8.250000,sigma=0.025000,lamba=0.110000,dx=0.100000,l1=0.800000 计算模式:等间距模式钢筋的间距为0.100时,单侧的钢筋条数为11,总共22条k的取值范围: [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5] 计算模式:任意间距模式t的范围为[-0.51,0.51],您输入的有效的钢筋位置:[-0.5, -0.40000000000000002, -0.30000000000000004, -0.20000000000000001, -0.10000000000000001, 0.0, 0.10000000000000001, 0.20000000000000001, 0.30000000000000004, 0.40000000000000002, 0.5] 过(0,0,0)的母线与平面y=b+l1的交点坐标: [{z: 0, y: 181/20, x: -277293991/259461588}] 第1象限中母线与锚固法线夹角: 1.839978 1.472166 1.104229 0.736208 0.368115 0.000000 0.368115 0.736208 1.104229 1.472166 1.839978 第1象限中母线与锚固面的交点坐标: [-1.5618516, 8.9917663, 0.35934577] [-1.4632270, 9.0034131, 0.27682111] [-1.3646023, 9.0150598, 0.19962420] [-1.2659777, 9.0267065, 0.12775505] [-1.1673531, 9.0383533, 0.061213649] [-1.0687285, 9.0500000, 0.00000000] [-0.97010387, 9.0616467, -0.055885897] [-0.87147925, 9.0732935, -0.10644404] [-0.77285464, 9.0849402, -0.15167443] [-0.67423002, 9.0965869, -0.19157707] [-0.57560539, 9.1082337, -0.22615196] 第2象限中母线与锚固法线夹角: 13.592696 13.548641 13.514261 13.489643 13.474846 13.469910 13.474846 13.489643 13.514261 13.548641 13.592696 第2象限中母线与锚固面的交点坐标: [1.5618516, 8.9917663, 0.35934577] [1.4632270, 9.0034131, 0.27682111] [1.3646023, 9.0150598, 0.19962420] [1.2659777, 9.0267065, 0.12775505] [1.1673531, 9.0383533, 0.061213649] [1.0687285, 9.0500000, 0.00000000] ... [-1.3646023, -9.0150598, 0.19962420] [-1.4632270, -9.0034131, 0.27682111] [-1.5618516, -8.9917663, 0.35934577] 第4象限中母线与锚固法线夹角: 1.839978 1.472166 1.104229 0.736208 0.368115 0.000000 0.368115 0.736208 1.104229 1.472166 1.839978 第4象限中母线与锚固面的交点坐标: [0.57560539, -9.1082337, -0.22615196] [0.67423002, -9.0965869, -0.19157707] [0.77285464, -9.0849402, -0.15167443] [0.87147925, -9.0732935, -0.10644404] [0.97010387, -9.0616467, -0.055885897] [1.0687285, -9.0500000, 0.00000000] [1.1673531, -9.0383533, 0.061213649] [1.2659777, -9.0267065, 0.12775505] [1.3646023, -9.0150598, 0.19962420] [1.4632270, -9.0034131, 0.27682111] [1.5618516, -8.9917663, 0.35934577] 各母线间的交点: u-v v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 u0 (0.000000,-4.234003,-0.068481) (-0.050000,-3.810603,-0.054785) (-0.100000,-3.387203,-0.041088) (-0.150000,-2.963802,-0.027392) (-0.200000,-2.540402,-0.013696) (-0.250000,-2.117002,0.000000) (-0.300000,-1.693601,0.013696) (-0.350000,-1.270201,0.027392) (-0.400000,-0.846801,0.041088) (-0.450000,-0.423400,0.054785) (-0.500000,0.000000,0.068481) u1 (0.050000,-3.810603,-0.054785) (0.000000,-3.387203,-0.043828) (-0.050000,-2.963802,-0.032871) (-0.100000,-2.540402,-0.021914) (-0.150000,-2.117002,-0.010957) (-0.200000,-1.693601,0.000000) (-0.250000,-1.270201,0.010957) (-0.300000,-0.846801,0.021914) (-0.350000,-0.423400,0.032871) (-0.400000,0.000000,0.043828) (-0.450000,0.423400,0.054785) u2 (0.100000,-3.387203,-0.041088) (0.050000,-2.963802,-0.032871) (0.000000,-2.540402,-0.024653) (-0.050000,-2.117002,-0.016435) (-0.100000,-1.693601,-0.008218) (-0.150000,-1.270201,0.000000) (-0.200000,-0.846801,0.008218) (-0.250000,-0.423400,0.016435) (-0.300000,0.000000,0.024653) (-0.350000,0.423400,0.032871) (-0.400000,0.846801,0.041088) u3 (0.150000,-2.963802,-0.027392) (0.100000,-2.540402,-0.021914) (0.050000,-2.117002,-0.016435) (0.000000,-1.693601,-0.010957) (-0.050000,-1.270201,-0.005478) (-0.100000,-0.846801,0.000000) (-0.150000,-0.423400,0.005478) (-0.200000,0.000000,0.010957) (-0.250000,0.423400,0.016435) (-0.300000,0.846801,0.021914) (-0.350000,1.270201,0.027392) u4 (0.200000,-2.540402,-0.013696) (0.150000,-2.117002,-0.010957) (0.100000,-1.693601,-0.008218) (0.050000,-1.270201,-0.005478) (0.000000,-0.846801,-0.002739) (-0.050000,-0.423400,0.000000) (-0.100000,0.000000,0.002739) (-0.150000,0.423400,0.005478) (-0.200000,0.846801,0.008218) (-0.250000,1.270201,0.010957) (-0.300000,1.693601,0.013696) u5 (0.250000,-2.117002,0.000000) (0.200000,-1.693601,0.000000) (0.150000,-1.270201,0.000000) (0.100000,-0.846801,0.000000) (0.050000,-0.423400,0.000000) (0.000000,0.000000,0.000000) (-0.050000,0.423400,0.000000) (-0.100000,0.846801,0.000000) (-0.150000,1.270201,0.000000) (-0.200000,1.693601,0.000000) (-0.250000,2.117002,0.000000) u6 (0.300000,-1.693601,0.013696) (0.250000,-1.270201,0.010957) (0.200000,-0.846801,0.008218) (0.150000,-0.423400,0.005478) (0.100000,0.000000,0.002739) (0.050000,0.423400,0.000000) (0.000000,0.846801,-0.002739) (-0.050000,1.270201,-0.005478) (-0.100000,1.693601,-0.008218) (-0.150000,2.117002,-0.010957) (-0.200000,2.540402,-0.013696) u7 (0.350000,-1.270201,0.027392) (0.300000,-0.846801,0.021914) (0.250000,-0.423400,0.016435) (0.200000,0.000000,0.010957) (0.150000,0.423400,0.005478) (0.100000,0.846801,0.000000) (0.050000,1.270201,-0.005478) (0.000000,1.693601,-0.010957) (-0.050000,2.117002,-0.016435) (-0.100000,2.540402,-0.021914) (-0.150000,2.963802,-0.027392) u8 (0.400000,-0.846801,0.041088) (0.350000,-0.423400,0.032871) (0.300000,0.000000,0.024653) (0.250000,0.423400,0.016435) (0.200000,0.846801,0.008218) (0.150000,1.270201,0.000000) (0.100000,1.693601,-0.008218) (0.050000,2.117002,-0.016435) (0.000000,2.540402,-0.024653) (-0.050000,2.963802,-0.032871) (-0.100000,3.387203,-0.041088) u9 (0.450000,-0.423400,0.054785) (0.400000,0.000000,0.043828) (0.350000,0.423400,0.032871) (0.300000,0.846801,0.021914) (0.250000,1.270201,0.010957) (0.200000,1.693601,0.000000) (0.150000,2.117002,-0.010957) (0.100000,2.540402,-0.021914) (0.050000,2.963802,-0.032871) (0.000000,3.387203,-0.043828) (-0.050000,3.810603,-0.054785) u10 (0.500000,0.000000,0.068481) (0.450000,0.423400,0.054785) (0.400000,0.846801,0.041088) (0.350000,1.270201,0.027392) (0.300000,1.693601,0.013696) (0.250000,2.117002,0.000000) (0.200000,2.540402,-0.013696) (0.150000,2.963802,-0.027392) (0.100000,3.387203,-0.041088) (0.050000,3.810603,-0.054785) (0.000000,4.234003,-0.068481)
a =vector([1,2,3]) print a.inner_product(a) print a.dot_product(a)
14 14
round(1.020334,2)
1.02