初中的时候老师便教我们拿着直尺和圆规作图,那时候恐怕还没几个人会用电脑,直到初中毕业,我才第一次见电脑。那时候画曲线怎样画呢?记得就是在某个x区间上取一系列点,然后计算y = f(x),把这些点描在笛卡尔坐标系中,然后用铅笔手工连起来。这个办法很笨很原始,但很有效,奇怪的是,到计算机如此发达的今天,仍然有人不断问如何用软件画曲线,仿佛中学时学的东西都还给数学老师了。例如,若干天前,有人问我如何用R画这个曲线:
$$f(x)=(\sqrt{2}*\Gamma(x/2)*2)/(\sqrt{x-1}*\Gamma(x-1))$$
我只好提醒他回忆中学的描点法。R里面的gamma()和curve()函数是现成的,把数学公式写成相应的代码就可以了:
curve((sqrt(2) * gamma(x/2) * 2)/(sqrt(x - 1) * gamma(x - 1)), 2, 50)
# 当然,如果你非要按照x = seq(2, 50, ...)然后计算f(x)然后plot(x, f(x),
# type = "l")那也可以,只不过curve()就是干这事的,不必麻烦分两步走了

如同某些网文说人一辈子的守则在幼儿园都已经教完了,就看你长大还记不记得。所以每当面对一个貌似复杂的问题时,首先要想想幼儿园有没有学过。
“武功再高,也怕菜刀”绝对是真理,哈哈。
赞赏
作为一名没有固定工作的自由职业者,我非常感谢您通过捐赠的方式来支持我的写作和开源软件开发。当然,捐赠纯属自愿。无论金额多少,都是一片诚挚的心意。支付方式如下:
| 微信 | ← 奋力支开它俩 → | 支付宝 |
|---|---|---|
![]() |
其它爱心通道 ↓ Venmo: @yihui_xie Zelle: xie@yihui.name PayPal: xie@yihui.name |
![]() |
若使用 Venmo/Zelle/Paypal,请添加备注“gift”或“donation”,以免捐赠被视为我的可税收入。若使用 Paypal,支付类型请选 Family and Friends,而不要选 Goods and Services。
在不影响生活的前提下,我会将收到的捐赠以尽量大的比例回馈给开源社区和慈善机构。作为参考,2024-25 年间我共收到约三万美元捐赠,完税后我转手捐出了一万五千美元。

