本文内容来自于学习麻省理工学院公开课:单变量微积分-数值积分-网易公开课

用python解方程组_星-耀的博客-CSDN博客_python解方程组

做功_百度百科

开发环境准备:CSDN

目录

一、概率的经典问题,投飞标问题, 问如果一个人向靶心投飞镖,击中的次数与 ​ (c是常数,假设为1)成正比,


首先老师阐释了这个: 热量 = 能量 = 做功

热量的单位有千卡(kcal) 能量的单位有 千瓦时( kwh ) 做功的单位有焦耳( j )

一、概率的经典问题,投飞标问题, 问如果一个人向靶心投飞镖,击中的次数与 (c是常数,假设为1)成正比,

有多大的概率会射到靶子旁边的人。至于这个计算有没有实际意义呢?这里老师提到,二战时有人研究德国的V-2导弹瞄准伦敦发射,会击中哪里,用的就是这个函数(结果相近!)。

这里击中的概率与距离靶心的长度 r 相关,类正态分布

from sympy import *
import numpy as np
from scipy.optimize import fsolve
import matplotlib.pyplot as plt fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.set_aspect(1) def DrawXY(xFrom,xTo,steps,expr,color,label,plt):yarr = []xarr = np.linspace(xFrom ,xTo, steps) for xval in xarr:yval = expr.subs(x,xval)yarr.append(yval)y_nparr = np.array(yarr) plt.plot(xarr, y_nparr, c=color, label=label)    def DrawInt(xFrom,xTo,steps,expr,color,plt, label=''):if(xFrom < 0 and xTo < 0):DrawIntNegative(xFrom,xTo,steps,expr,color,plt, label)else:if(xFrom > 0 and xTo > 0):DrawIntPostive(xFrom,xTo,steps,expr,color,plt, label)else:DrawIntNegative(xFrom,0,steps,expr,color,plt, label)DrawIntPostive(0,xTo,steps,expr,color,plt, label)def DrawIntNegative(xFrom1,xTo1,steps,expr,color,plt, label=''):xFrom = 0 - xTo1xTo = 0 - xFrom1width = (xTo - xFrom)/stepsxarr = []yarr = []area = 0xprev = xFromyvalAll =  0xarr.append(0)yarr.append(0)for step in range(steps):yval = expr.subs(x,xprev)area += width * yvalxarr.append(0-xprev)yarr.append(0-area)xprev= xprev + widthplt.plot(xarr, yarr, c=color, label =label)def DrawIntPostive(xFrom,xTo,steps,expr,color,plt, label=''):width = (xTo - xFrom)/stepsxarr = []yarr = []area = 0xprev = xFromyvalAll =  0xarr.append(0)yarr.append(0)for step in range(steps):yval = expr.subs(x,xprev)area += width * yvalxarr.append(xprev)yarr.append(area)xprev= xprev + widthplt.plot(xarr, yarr, c=color, label =label)def DrawParabola(xFrom,xTo,steps,expr,color,plt, label=''):width = (xTo - xFrom)/stepsxarrRect = []yarrRect = []area = 0xprev = xFromyvalAll =  0for step in range(int(steps/2)):x1 = xprevx2 = xprev+widthx3 = xprev+width+widthy1 = expr.subs(x,x1) y2 = expr.subs(x,x2)y3 = expr.subs(x,x3)def solveFuncsInDrawParabola(paramlist):a,b,c =paramlist[0],paramlist[1],paramlist[2]return [a*x1**2+b*x1+c-y1,a*x2**2+b*x2+c-y2,a*x3**2+b*x3+c-y3]s=fsolve(solveFuncsInDrawParabola,[0,0,0])a,b,c = s[0],s[1],s[2]expr1 = a*x**2+b*x+cDrawXY(x1,x3,20,expr1,color,'',plt)xarrRect.append(x1)xarrRect.append(x1)xarrRect.append(x3)xarrRect.append(x3)yarrRect.append(y1)yarrRect.append(0)yarrRect.append(0)yarrRect.append(y3)area += 2*width * (y1+4*y2 + y3)/6plt.plot(xarrRect, yarrRect, c=color)    xprev = x3print('============================')    if len(label)!=0:print(label)    print('============================')print('width = ', width)print('area = ',area)areaFinal = (integrate(expr, (x,xFrom,xTo)))print ('area final = ',areaFinal)print ('ave final = ', areaFinal / (xTo - xFrom))def DrawTrapezoidal(xFrom,xTo,steps,expr,color,plt, label=''):width = (xTo - xFrom)/stepsxarrRect = []yarrRect = []area = 0xprev = xFromyvalAll =  0for step in range(steps):yval1 =expr.subs(x,xprev) yval2 = expr.subs(x,xprev + width)xarrRect.append(xprev)xarrRect.append(xprev)xarrRect.append(xprev + width)xarrRect.append(xprev + width)xarrRect.append(xprev)yarrRect.append(0)yarrRect.append(yval1)yarrRect.append(yval2)yarrRect.append(0)yarrRect.append(0)area += width * (yval1+yval2)/2plt.plot(xarrRect, yarrRect, c=color)    xprev= xprev + widthprint('============================')    if len(label)!=0:print(label)    print('============================')print('width = ', width)print('area = ',area)areaFinal = (integrate(expr, (x,xFrom,xTo)))print ('area final = ',areaFinal)print ('ave final = ', areaFinal / (xTo - xFrom))def DrawRects(xFrom,xTo,steps,expr,color,plt, label=''):width = (xTo - xFrom)/stepsxarrRect = []yarrRect = []area = 0xprev = xFromyvalAll =  0for step in range(steps):yval = expr.subs(x,xprev + width)xarrRect.append(xprev)xarrRect.append(xprev)xarrRect.append(xprev + width)xarrRect.append(xprev + width)xarrRect.append(xprev)yarrRect.append(0)yarrRect.append(yval)yarrRect.append(yval)yarrRect.append(0)yarrRect.append(0)area += width * yvalplt.plot(xarrRect, yarrRect, c=color)    xprev= xprev + widthyvalAll += yvalprint('============================')    if len(label)!=0:print(label)    print('============================')print('width = ', width)print('ave = ', yvalAll / steps)print('area = ',area)areaFinal = (integrate(expr, (x,xFrom,xTo)))print ('area final = ',areaFinal)print ('ave final = ', areaFinal / (xTo - xFrom))def TangentLine(exprY,x0Val,xVal):diffExpr = diff(exprY)x1,y1,xo,yo = symbols('x1 y1 xo yo')expr = (y1-yo)/(x1-xo) - diffExpr.subs(x,x0Val)eq = expr.subs(xo,x0Val).subs(x1,xVal).subs(yo,exprY.subs(x,x0Val))eq1 = Eq(eq,0)solveY = solve(eq1)return xVal,solveYdef DrawTangentLine(exprY, x0Val,xVal1, xVal2, clr, txt):x1,y1 = TangentLine(exprY, x0Val, xVal1)x2,y2 = TangentLine(exprY, x0Val, xVal2)plt.plot([x1,x2],[y1,y2], color = clr, label=txt)def Newton(expr, x0):ret = x0 - expr.subs(x, x0)/ expr.diff().subs(x,x0)return retdef DrawText(x,y, text, fsize=9, clr = 'black'):plt.text(x,y, text, fontsize=fsize, color=clr)c = 1
x = symbols('x')
expr = c*((np.e)**(-x**2))DrawXY(-2,2,100,expr,'blue','c*((np.e)**(-x**2))',plt)
plt.plot([1,1],[0,expr.subs(x, 1)], 'red', label='r1')
plt.plot([1.5,1.5],[0,expr.subs(x, 1.5)], 'green', label='r2')plt.legend(loc='lower left')
plt.show()

上图蓝色曲线围绕 y 轴旋转一周可以形成击中靶子的概率模型,而我们需要考虑的则是r1到r2之间的部分。

看看顶视图(从上向下看)

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.set_aspect(1)
x = symbols('x')expr = (1 - x**2)**0.5DrawXY(-1,1,100,expr,'red','r1',plt)expr = -(1 - x**2)**0.5
DrawXY(-1,1,100,expr,'red','',plt)expr1 = (1.5*1.5 - x**2)**0.5DrawXY(-1.5,1.5,100,expr1,'green','r2',plt)expr1 = -(1.5*1.5 - x**2)**0.5
DrawXY(-1.5,1.5,100,expr1,'green','',plt)plt.legend(loc='lower left')
plt.show()

想象蓝色曲线绕y轴旋转, 左侧前视图,右侧顶视图

使用壳层法计算r1到r2之间的体积:

这里老师一眼看出答案:

显然这个c确实被削掉了。

同时,把所有的半径都考虑进去,那击中的概率为:

这时老师添加了新的假设:

这个投掷标箭的人在7岁时, 靶子的半径为 a , 他中靶的概率为 0.5

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.set_aspect(1)
x = symbols('x')a = 1
expr = (a - x**2)**0.5DrawXY(-a,a,100,expr,'red','r = a',plt)expr = -(a - x**2)**0.5
DrawXY(-a,a,100,expr,'red','',plt)r = symbols('r')
xminExpr = r*cos(-30*2/180*np.pi)expr2 = -((2*a)**2 - x**2)**0.5
x1Min = float(xminExpr.subs(r,2*a))
DrawXY(x1Min,2*a,100,expr2,'gray','area where the people stand',plt)xminExpr = r*cos(-30*2/180*np.pi)
expr3 = -((3*a)**2 - x**2)**0.5
x2Min=float(xminExpr.subs(r,3*a))
DrawXY(x2Min,3*a,100,expr3,'gray','',plt)plt.plot([2*a, 3*a],[0,0], 'gray', '')
plt.plot([x1Min, x2Min],[expr2.subs(x,x1Min),expr3.subs(x,x2Min)], 'gray', '')DrawText(3.2*a, 0, '3 o"clock',12)
DrawText(x1Min, expr3.subs(x,x2Min) - 0.2, '5 o"clock',12)plt.legend(loc='upper left')
plt.show()

由于上图灰色这段环占整个完整的圆环 (....类似2个小时比12个小时...),所以有

本问题就是求

由已知:

再添加了各种预设后,这个题目的解, 站在标靶旁的小人被击中的概率约等于 1%

这个问题是讨论加权的平均值或带权重的积分

, 而当 r=0时,权重为0。

第三单元 用python学习微积分(二十二)功、平均值、概率(下)和 数值积分(1)相关推荐

  1. 第三单元 用python学习微积分(十七)微积分第一基本定理

    本文内容来自于学习麻省理工学院公开课:单变量微积分-微积分第一基本定理-网易公开课 开发环境准备:CSDN 目录 一.微积分基本定理(FTC1) 1.例子: (1)  ​ (2)  求曲线 f(x) ...

  2. 第一单元 用python学习微积分(六) 指数和对数(下)- 对数

    本文内容来自学习麻省理工学院公开课:单变量微积分-指数与对数函数导数.对数微分法-网易公开课 开发环境准备:CSDN 目录 一.对数 1.对数的定义 2.恒定公式 3.图像 4.对a的x次幂求导 5. ...

  3. 第二单元 用python学习微积分(十)曲线构图下和最值问题

    本文内容来自于学习麻省理工学院公开课:单变量微积分-最值问题-网易公开课 开发环境准备:CSDN 目录 一.曲线构图例子 二.曲线构图总结: 1.描点 a 找到函数的不连续点(尤其是函数值趋向于无穷的 ...

  4. 第四单元 用python学习微积分(二十七)积分-部分分式-分部积分

    本文内容来自于学习麻省理工学院公开课:单变量微积分-分部积分-网易公开课 开发环境准备:CSDN 目录 一.多项式部分分式方法求积分 1.效果 2.步骤 (1)  长除法 (2)  分解因式 (fac ...

  5. 第一单元 用python学习微积分(五) 隐函数微分法和逆函数导数(上)- 隐函数微分

    本文内容来自学习麻省理工学院公开课:单变量微积分-隐函数微分法和逆函数导数-网易公开课 开发环境准备:CSDN 目录 一. ​ 公式推导 二. 例子求导 ​ 三.公式推导 一. 公式推导 由链式法则: ...

  6. 第一单元 用python学习微积分(三) 求导四则运算及三角函数(上)- 三角函数

    本文内容来自学习麻省理工学院公开课:单变量微积分-求导四则运算及三角函数导数-网易公开课 开发环境准备:CSDN 目录 一.需要用到的公式: 二.求导特殊三角函数 1.​ 2. ​ 三.三角函数基础公 ...

  7. 第四单元 用python学习微积分(二十四)三角函数的积分以及三角替换

    本文内容来自于学习麻省理工学院公开课:单变量微积分-三角函数的积分及三角替换-网易公开课 开发环境准备:CSDN 目录 一.三角学中的基本知识 1.三角学公式: (1) ​倍角公式 (2) ​ 半角公 ...

  8. 第四单元 用python学习微积分(二十六)积分-部分分式-掩盖法及它的组合应用

    本文内容来自于学习麻省理工学院公开课:单变量微积分-部分分式-网易公开课 开发环境准备:CSDN 部分分式方法(Partial Fractions) = 有理函数(rational function) ...

  9. 第一单元 用python学习微积分(三) 求导四则运算及三角函数(下)- 三角函数

    本文内容来自学习麻省理工学院公开课:单变量微积分-求导四则运算及三角函数导数-网易公开课 开发环境准备:CSDN 目录 三.三角函数基础公式的几何意义 1.(sinx)' = cosx 四.通用公式 ...

最新文章

  1. git用户文档1 — git基础
  2. shell命令卸载mysql_centos8中的MySQL卸载和安装
  3. 最近python为什么这么火-现在为什么 Python 这么火?
  4. jQuery 时间控件推荐(1)
  5. how is object structure really created - when the child equipment is downloaded
  6. java学习(14):java命名规范
  7. c# wpf 面试_【远程面试】九强通信 | 九洲电器集团全资子公司
  8. uploader什么意思_【已解决】请问下uploader上传失败是什么原因
  9. linux内核那些事之 VMA Gap
  10. fpga烧写bin文件_Altera FPGA烧写步骤及注意事项_骏龙科技
  11. python scikit库
  12. 操作系统——I/O设备
  13. 电信机顶盒,废弃机顶盒复活,华为电信定制机顶盒,固件。设置关闭限制apk选项。安装自己所需的apk软件。
  14. 小程序的学习资料收集
  15. 向日葵深度linux,完美使用向日葵远程软件
  16. Axure RP 8 获取焦点的应用
  17. c语言循环丘比特之箭,《我的世界》用两条指令驾驭命令方块 发射爱心骑筋斗云无所不能...
  18. Java之对象转型(casting)
  19. Zero Requiem
  20. NMOS管和PMOS管做开关控制电路

热门文章

  1. linux操作 防火墙
  2. python比较重要的模块_python中重要的模块--asyncio 转载
  3. python gpl_详细介绍 GPL 协议
  4. 鸟枪换炮,Android Studio的初体验——Android Studio系列(一)
  5. VisualStudio更改项目名字
  6. Supervised Descent Method(人脸对齐之SDM论文解析)
  7. OSChina 周一乱弹 ——程序员已经习惯熬夜了吧
  8. 数据还原(recover)
  9. 恋爱纪念日(日期问题)
  10. zabbix 监控-华为路由器(ASG2100)