翼度科技»论坛 编程开发 python 查看内容

Python工程数学2程序开胃菜(上)

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
2 数学程序开胃菜

在上一章中( https://mp.weixin.qq.com/s/kKenXcEXIeLd_u_2kymF8A ),我们介绍了python的IDE;用numpy实现向量计算;用Matplotlib绘图;用sympy实现微积分和求导;用SciPy实现积分;用VPython实现弹跳球动画。

在本章中,您将了解 Python 命令式编程风格的线性程序结构以及分支和重复结构。面向对象编程和函数式编程的示例描述了使用 Python 编程的更多方法。
使用计算机解决的问题可以通过编程语言以多种方式建模和结构化。在应用计算机科学领域,命令式(过程式)编程、面向对象编程 (OOP) 和函数式编程风格已经确立。Python 支持所有这三种编程风格。
问题的解决方案也与逻辑条件相关联: 预期情况是否适用?此外,根据问题的不同,必须重复执行相同的任务,例如计算数学函数的值表。与其他过程式编程语言一样,Python 支持线性程序结构以及分支和重复结构。
2.1 线性程序结构

2.1.1 线性程序


  • 实例:计算电流
  1. U=230
  2. R=11.8
  3. I=U/R
  4. b="The current is:"
  5. print(b, I, " A")
复制代码
执行:
  1. The current is: 19.491525423728813  A
复制代码
python的整数是没有大小限制的,浮点数的限制如下:
  1. >>> import sys
  2. >>> print(sys.float_info)
  3. sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
复制代码

  • 实例:计算串联电路的功率
  1. #02_linear2.py
  2. U = 230
  3. R1, R2, R3=0.12, 0.52, 228
  4. Rg = R1 + R2 + R3
  5. I= U/Rg
  6. P1 = R1 * I**2
  7. P2 = R2 * I**2
  8. P3 = R3 * I**2
  9. print("Current I={0:6.3f} A " .format(I))
  10. print("P1={0:3.2f} W, P2={1:3.2f} W, P3={2:3.2f} W".format(P1,P2,P3))
复制代码
执行:
  1. Current I= 1.006 A
  2. P1=0.12 W, P2=0.53 W, P3=230.72 W
复制代码

  • 实例:通过使用内置输入函数获取数值:
  1. #02_linear2.py
  2. U = 230
  3. R1, R2, R3=0.12, 0.52, 228
  4. Rg = R1 + R2 + R3
  5. I= U/Rg
  6. P1 = R1 * I**2
  7. P2 = R2 * I**2
  8. P3 = R3 * I**2
  9. print("Current I={0:6.3f} A " .format(I))
  10. print("P1={0:3.2f} W, P2={1:3.2f} W, P3={2:3.2f} W".format(P1,P2,P3))
复制代码
执行:
  1. ---Input---
  2. Voltage: 220
  3. Resistance: 34
  4. ---Output---
  5. Current   6.47 A
  6. Power 1423.53 W
  7. ---Input---
  8. Voltage:
复制代码
参考资料

2.2 函数


  • 实例:使用函数来计算电流、电功率、电功和电能成本:
  1. #04_function1.py
  2. U, R = 230, 460
  3. t = 8
  4. price = 0.3
  5. def current():
  6.     I = U / R
  7.     print("Current: ", I, " A")
  8. def power():
  9.     P = U**2 / R
  10.     print("Power : ", P, " W")
  11. def work():
  12.     P = U**2  /R
  13.     W = P * t
  14.     print("Work: ", W, " Wh")
  15. def cost():
  16.     I = U / R
  17.     W = U * I * t
  18.     c = W * price / 1000.0
  19.     print("Cost: ", c, " Euro")
  20. current()
  21. power()
  22. work()
  23. cost()
复制代码
执行:
  1. Current:  0.5  A
  2. Power :  115.0  W
  3. Work:  920.0  Wh
  4. Cost:  0.276  Euro
复制代码
argument是调用函数时传递的值。该值被分配给函数中的指定参数。parameter是函数中使用的名称。

  • 实例:带返回值的函数
  1. #05_function2.py
  2. def current(U, R):
  3.     return U / R
  4. def power(U, R):
  5.     return U**2/R
  6. def work(U, R, t):
  7.     P = U**2 / R
  8.     W = P*t
  9.     return W
  10. def cost(U, R, t, price):
  11.     I = U / R
  12.     W = U * I * t
  13.     c =W * price / 1000.0
  14.     return c
  15. Uq = 230    #V
  16. RLoad = 23 #ohms
  17. tn = 8      #h, hours
  18. price_actual = 0.3 #euro
  19. print("Current: ", current(Uq, RLoad), " A")
  20. print("Power  : ", power(Uq, RLoad), " W")
  21. print("Work   : ", work(Uq, RLoad,tn), " Wh")
  22. print("Cost   : ", cost(Uq, RLoad,tn,price_actual), " euros")
复制代码

执行:
  1. Current:  10.0  A
  2. Power  :  2300.0  W
  3. Work   :  18400.0  Wh
  4. Cost   :  5.52  euros
复制代码

  • 实例:带有多个返回值的函数:计算出体积、质量、惯性矩和加速力矩
与其他编程语言不同,Python 也允许返回多个值。我们来看一个直径为 1 分米、长度为 10 分米的实心钢圆柱体的例子。只需一个函数,就可以计算出体积、质量、惯性矩和加速力矩。所有四个值都应通过返回语句返回。
加速力矩 Mb 与角加速度 α 和惯性矩 J 成比例增加:

圆柱体的惯性矩 J 与质量m成正比,与半径 r 的平方成正比:

质量m由圆柱体的体积 V 和密度计算得出:

要计算体积 V,需要圆柱体的直径 d 和长度 l:

要完成这项任务,必须在 Python 开发环境的文本编辑器中按照语法规则以相反的顺序输入公式。
  1. #06_function3.py
  2. rho = 7.85   #kg/dm^3, density for steel
  3. alpha = 1.2  #1/s^2, angular acceleration
  4. g = 3        #accuracy
  5. def cylinder(d,l):
  6.     V=round(0.785*d**2*l,g)
  7.     m=round(rho*V,g)
  8.     J=round(0.5*m*(d/2/10)**2,g)
  9.     Mb=round(alpha*J,g)
  10.     return (V,m,J,Mb)
  11.     #return V,m,J,Mb
  12.     #return [V,m,J,Mb]
  13. d1=1  #dm
  14. l1=10 #dm
  15. T=cylinder(d1, l1)
  16. print("Cylinder data: ", T)
  17. print("Volume:             ", T[0]," dm^3")
  18. print("Mass:               ", T[1]," kg")
  19. print("Moment of inertia:  ", T[2]," kgm^2")
  20. print("Acceleration torque:", T[3]," Nm")
复制代码
执行:
  1. Cylinder data:  (7.85, 61.622, 0.077, 0.092)
  2. Volume:              7.85  dm^3
  3. Mass:                61.622  kg
  4. Moment of inertia:   0.077  kgm^2
  5. Acceleration torque: 0.092  Nm
复制代码

  • 实例:函数嵌套调用:
  1. #07_function4.py
  2. rho=7.85    #kg/dm^3, density of steel
  3. def volume(d,l):
  4.     return 0.785*d**2*l
  5. def mass(d,l):
  6.     return rho*volume(d,l)
  7. def moment_of_inertia(d,l):
  8.     return 0.5*mass(d,l)*(d/2/10)**2
  9. def acceleration_torque(d,l,alpha):
  10.     return alpha*moment_of_inertia(d,l)
  11. d1=1 #dm
  12. l1=10 #dm
  13. alpha1=1.2 #1/s^2, angular acceleration
  14. V=volume(d1,l1)
  15. m=mass(d1,l1)
  16. J=moment_of_inertia(d1,l1)
  17. Mb=acceleration_torque(d1,l1,alpha1)
  18. print("Volume: ", V, " dm^3")
  19. print("Mass: ", m, " kg")
  20. print("moment of inertia: ", J, " kgm^2")
  21. print("Acceleration torque: ", Mb, " Nm")
复制代码
执行:
  1. Volume:  7.8500000000000005  dm^3
  2. Mass:  61.6225  kg
  3. moment of inertia:  0.07702812500000002  kgm^2
  4. Acceleration torque:  0.09243375000000002  Nm
复制代码
2.3 分支结构



  • 实例:解一元二次方程


根下的表达式也可以取负值。当出现这种情况时,方程将无法在实数空间内求解。因此,程序必须通过检查 D 是否≥ 0 来捕捉这种情况。对于要解决的问题,可以创建如图 2.3 所示的结构图。
  1. #08_branch1.py
  2. import math as m
  3. p=-8.
  4. q=7.
  5. D=(p/2)**2 - q
  6. if D >= 0:
  7.     x1 = -p/2 + m.sqrt(D)
  8.     x2 = -p/2 - m.sqrt(D)
  9.     print("x1 =",x1,"\nx2 =",x2)
  10.     print("p =",-(x1+x2),"\nq =",x1*x2)
  11. else:
  12.     print("The equation cannot be solved!")
复制代码
执行:
  1. x1 = 7.0
  2. x2 = 1.0
  3. p = -8.0
  4. q = 7.0
复制代码

  • 实例:多重选择
  1. #09_multiple_selection1.py
  2. color=["black", "brown", "red", "orange", "yellow",
  3.        "\ngreen","blue","purple","gray","white"]
  4. code="yellow"       #input
  5. if code==color[0]:
  6.     print("The color black is coded as 0.")
  7. elif code==color[1]:
  8.     print("The color brown is coded as 1.")
  9. elif code==color[2]:
  10.     print("The color red is coded as 2.")
  11. elif code==color[3]:
  12.     print("The color orange is coded as 3.")
  13. elif code==color[4]:
  14.     print("The color yellow is coded as 4.")
  15. elif code==color[5]:
  16.     print("The color green is coded as 5.")
  17. elif code==color[6]:
  18.     print("The color blue is coded as 6.")
  19. elif code==color[7]:
  20.     print("The color purple is coded as 7.")
  21. elif code==color[8]:
  22.     print("The color gray is coded as 8.")
  23. elif code==color[9]:
  24.     print("The color white is coded as 9.")
复制代码
执行:
  1. The color yellow is coded as 4.
复制代码

  • 实例:电费费率
[code]#10_multiple_selection2.pyrate1,rate2,rate3=0.3,0.25,0.2 #eurosconsumption=5500 #kWhif 0 < consumption

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具