开始Mathematica 之旅

本文介绍了使用Mathematica软件绘制1/4椭圆在各方格点内地面积的过程,并展示了通过不同参数设置得到的效果图。此外,还分享了作者对Mathematica的兴趣起源及其对Lisp编程语言的看法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天画1/4 椭圆在各方格点内地面积时想起 Mathematica。试了一下,果然强大!

  1. {a, b} = {40, 10};
  2. anti[y_] := a/b Sqrt[b^2 - y^2]
  3. ellipse[s_, 
  4.   t_] := (a b)/2 (ArcSin[t/a] - ArcSin[s/a]) + (a b)/
  5.    4 (Sin[2 ArcSin[t/a]] - 
  6.      Sin[2 ArcSin[s/
  7.         a]])(*the integration of a quarter ellipse from s to t.*)
  8. data = Table[
  9.    Which[x^2/a^2 + y^2/b^2 < 1 && (x + 1)^2/a^2 + (y + 1)^2/b^2 > 1, 
  10.     ellipse[Max[x, anti[y + 1]], Min[x + 1, anti[y]]] - 
  11.      y (Min[x + 1, anti[y]] - Max[x, anti[y + 1]]) + (Max[x, 
  12.         anti[y + 1]] - x), (x + 1)^2/a^2 + (y + 1)^2/b^2 < 1, 1, 
  13.     x^2/a^2 + y^2/b^2 > 1, 0], {x, 0, a}, {y, 0, b}];
  14. ListPlot3D[data, Mesh -> None, InterpolationOrder -> 0, 
  15.  ColorFunction -> "SouthwestColors"]
  16. data2 = Table[
  17.    Which[x^2/a^2 + y^2/b^2 < 1 && (x + 1)^2/a^2 + (y + 1)^2/b^2 > 1, 
  18.     Round[ellipse[Max[x, anti[y + 1]], Min[x + 1, anti[y]]] - 
  19.       y (Min[x + 1, anti[y]] - Max[x, anti[y + 1]]) + (Max[x, 
  20.          anti[y + 1]] - x)], (x + 1)^2/a^2 + (y + 1)^2/b^2 < 1, 1, 
  21.     x^2/a^2 + y^2/b^2 > 1, 0], {x, 0, a}, {y, 0, b}];
  22. ListPlot3D[data2, Mesh -> None, InterpolationOrder -> 0, 
  23.  ColorFunction -> "SouthwestColors"]

效果图:























不由得去找了 Wolfram 的简历来看看,牛人啊!
刚上离散课的时候,看到一切都基础都是集合,就想写一个基于序偶的语言。可是也就想想,直到知道有Lisp 这种编程语言才淡了这想法。本来对Mathematica 不感冒的,这学期上数学实验才知道原来Mathematica 的鼻祖就是用纯Lisp 编的 MACSYMA ,一下来了兴趣,学了一下,发现它的格式挺优美的。
     函数一定是:函数名[参数];用()改变运算顺序;用 列表名[[index]] 引用元素……
     还可以用方便的快捷键书写二维表达式:
ctr + ^ 是幂,ctr + 2 是根号,ctr + / 是分数,
ctr + _ 是下标,esc + p + esc 是π ……
    最让我觉得顺手的是它的画图函数,就像用ruby 写小程序一样顺畅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值