想着来个大新闻 所以今天晚上把这几天的存货都发了好吧其实是我懒

今天看到一个有意思的题目.大概意思是兔子在狼的正西方100米处,兔子的窝在其正北50m处,当t=0时狼开始追兔子并且兔子开始逃跑,问能否追到兔子

明显解微分方程题目

mathematica 代码如下

a = NDSolve[{x'[t] == 
     2*(-100 - x[t])/Sqrt[(-100 - x[t])^2 + (t - y[t])^2], 
    y'[t] == 2*(t - y[t])/Sqrt[(-100 - x[t])^2 + (t - y[t])^2], 
    x[0] == 0, y[0] == 0}, {x[t], y[t]}, {t, 0, 66.68}];
ParametricPlot[{{x[t] /. a // First, y[t] /. a // First}, {-100, 
   t}}, {t, 0, 66.68}, PlotRange -> All]

蓝线为狼的轨迹, 橙线为兔子轨迹

显然追上时y超过50 兔子已经安全逃离

类似一个虫子的题目,有个边长为a的正方形ABCD,四个顶点有四只虫子,由初始位置出发,A追B,B追C,C追D,D追A,运动速度的大小均为v,问最后他们走过的路程。

a = NDSolve[{(x2[t] - x1[t]) == 
    x1'[t] Sqrt[(x2[t] - x1[t])^2 + (y2[t] - y1[t])^2], (y2[t] - 
      y1[t]) == 
    y1'[t] Sqrt[(x2[t] - x1[t])^2 + (y2[t] - y1[t])^2], (x3[t] - 
      x2[t]) == 
    x2'[t] Sqrt[(x3[t] - x2[t])^2 + (y3[t] - y2[t])^2], (y3[t] - 
      y2[t]) == 
    y2'[t] Sqrt[(x3[t] - x2[t])^2 + (y3[t] - y2[t])^2], (x4[t] - 
      x3[t]) == 
    x3'[t] Sqrt[(x4[t] - x3[t])^2 + (y4[t] - y3[t])^2], (y4[t] - 
      y3[t]) == 
    y3'[t] Sqrt[(x4[t] - x3[t])^2 + (y4[t] - y3[t])^2], (x1[t] - 
      x4[t]) == 
    x4'[t] Sqrt[(x1[t] - x4[t])^2 + (y1[t] - y4[t])^2], (y1[t] - 
      y4[t]) == y4'[t] Sqrt[(x1[t] - x4[t])^2 + (y1[t] - y4[t])^2], 
   x1[0] == 1, y1[0] == 1, x2[0] == 1, y2[0] == 0, x3[0] == 0, 
   y3[0] == 0, x4[0] == 0, y4[0] == 1}, {x1[t], y1[t], x2[t], y2[t], 
   x3[t], y3[t], x4[t], y4[t]}, {t, 0, 1}]

ParametricPlot[{{First@(x1[t] /. a), 
   First@(y1[t] /. a)}, {First@(x2[t] /. a), 
   First@(y2[t] /. a)}, {First@(x3[t] /. a), 
   First@(y3[t] /. a)}, {First@(x4[t] /. a), First@(y4[t] /. a)}}, {t,
   0, 1}, PlotRange -> All]


四虫轨迹.
mathematica大法好!!

另外….前些天写的没有更上来的也写上来
一个画旋转图形

我们知道对一个
x^2 + (-2 + y)^2 == 1
的式子 要求其对X轴旋转一周的图形

只需要把Y变换为Sqrt[y^2 + z^2]

所以有了x^2 + (-2 + Sqrt[y^2 + z^2])^2 == 1
于是对这样的函数可以直接用contourplot3d来画

ContourPlot3D[
 x^2 + (-2 + (y^2 + z^2)^(1/2))^2 == 1, {x, -Pi, Pi}, {y, -Pi, 
  Pi}, {z, -Pi, Pi}]


这样画似乎不太好看 用区间画法

DiscretizeRegion@
 ImplicitRegion[x^2 + (-2 + (y^2 + z^2)^(1/2))^2 == 1, {x, y, z}]

软绵绵的麦圈…

最后对于旋转图像有一个特定的函数revolutionplot3D

RevolutionPlot3D[{Cos[t] + 2, Sin[t]}, {t, 0, 2 Pi}]

话说最近写的都是用mathematica, 对matlab确实无感啊= = 一些参数太复杂看不动…用了过几天就忘记了.

python也可以 但是现在用的还不熟, 一些函数还是mathematica好用.
现在基本python可以代替C++使用了,好用的多.