函数的图像

试使用SageMath进行函数图像的绘制。例如:对于复变函数 \(f(z) = cos(-2 \alpha ) + isin(-2 \alpha )\)

上面函数,可以使用SageMath绘制出在复平面上的图像:

sage: f(z) = cos(-2arg(z)) + Isin(-2*arg(z))
sage: complex_plot(f, (-5,5), (-5,5), plot_points=50)

其中的complex_plot()和plot()相似,只是声明为在复平面上进行绘图。后面的第一个(-5,5)指实坐标范围从-5到+5,第二个(-5,5)指的是虚数坐标、也就是复平面上的纵坐标、从-5i到+5i。

绘制出来的图像比较“抽象”,大概能看出来是通过彩色的衔接来表达是否连续,但这五颜六色的色彩对我而言还是比较陌生、一时难以理解的。

生成的图像是:

上面的图象太模糊了,改变参数,调整为plot_points=500,可以得到更清晰、精致的图像:

以前上学的时候觉得所有的知识都挺容易理解的,现在也许是年龄大了,即便是对已经已经熟练掌握了的知识,再看的时候,都会感觉是“一头雾水”,唯有继续艰难的、一点点的重新理解,才能让自己感觉有所收获。

Related Posts

使用MT3608进行升压备忘

一、备忘与准备 MT3608是一颗SOT-23-6封装的DCDC升压芯片,这个封装尺寸对我而言非常小、不易进行焊接操作。当完成升压电路的学习和尝试之后,也许会再寻找其它芯片替换当前的芯片以方便后期的焊装操作(PS:最近几天一直在关注更大尺寸的IC,但直到此刻,还没有找到比SOT-23-6更大封装的类似芯片)。 因为MT3608的封装实在小、在表面上并没有Pin1的标记,而是默认从顶面看下去时,丝印文字的左下角(Lower Left)是Pin1,并且按照逆时针完成其余脚位的定义。 它的输入电压可以是2V-24V,输出最大可以提升到28V的输出电压。 我当前的需求是:输入电压是3.7-4.4V之间(锂电池供电)、或者是5V(通过带有初级升压的电源管理芯片供电),而输出电压需要通过配置电阻实现5V-12V的输出、以便通过输出电压的调整实现对蜂鸣器音量的控制。 这个需求看上去利用MT3608是可以实现的,按照它的技术手册推荐的电路设计方案,将5引脚输入上述的3.7V-5V电压,然后通过引脚4的使能信号决定芯片是否工作:如果引脚4使能低电平,则芯片不工作,这个时候输出电压将与输入电压相同;如果引脚4使能,则芯片工作,按照配置电阻完成升压给定,输出就是目标电压了。 但是这个推荐方案和我的需求是不一样的:我期望的是输出或者有电压、或者没有电压,原因是如果MT3608工作输出一个预期的电压、蜂鸣器是工作的;但是当MT3608不工作时,输出电压虽然没有升压、但依然与输入电压相同,此时蜂鸣器将一直在工作。所以我期望的是MT3608不工作、不升压时,输出电压也完全没有。因而我的电路结构如下: 输入引脚4和使能引脚5同时与电压源连接,当电压源存在时,则芯片工作、输出预期的电压;当电压源不存在时自然也就没有输出电压了。 接下来将按照上面的思路,将电路搭建起来,完成这个测试。 二、初步搭建出来的电路有问题 2025年4月11日下午,完成了上面电路的搭建,但是并不顺利:最终结果是得不到预期的升压效果。 1、起初完成电路的搭建之后,输出电压十分混乱:或者是没有输出电压、或者就是输出电压和输入电压几乎相同;在输出电压几乎和输入电压几乎相同时,消耗的电流却十分巨大、高达上百毫安——经过反复的尝试也没有找到明确的原因,最终我将原因假定在使用的面包板质量太差、存在内部缺陷。直接扔掉、更换了一个新的面包板; 2、更换完新的面包板之后依然只能得到与输入电压一样的输出电压,这意味着芯片并没有进行工作,通过使用示波器也发现芯片的确没有起振、工作。但是偶然发现如果将输入电压设置在6V以上时,芯片是可以开始工作的,但是输出电压的建立需要大约1-2秒才能完成; 3、上面的第2个问题原因是我没有引入C1和C2两处的电容:当初以为这两个地方的电容只是稳波用的,实际上C2的输出电容更主要的目的是建立输出电压;而C1处的电容是稳定输入电压以确保芯片能够正常工作,所以这两处的电容不能忽略。在C1处引入3颗10uF的电容并联、在C2处同样引入3颗10uF的电容并联,芯片大概就能正常工作了; 4、在完成了上面第3点的调整之后,芯片的确可以正常工作了:给入5V的电压,输出大约是10V;给如3.7V的电压,输出大约是6V;给入8V的电压,输出大约是15V。但是这个表现与MT3608应该具备的表现是完全不一样的:MT3608应该是通过R1和R2配置电阻的设置,得到一个不随输入电压变化的输出电压,例如我设定R1=20K、R2=1K,此时的输出电压应该一直稳定在12.6V,而实际上我的输出电压却一直是与输入电压相关的; 5、更离谱的是:输出电压带不动负载,即便只接入一个很轻的负载,输出电压也会立刻掉下去、掉到与输入电压一样; 6、上面的第4、5两点,昨晚想到今天,感觉最可能的是我使用的二极管选型存在着问题:我使用的是1N5819,这颗二极管的反向恢复时间(Trr)大约是75-150ns,因为它的Trr在肖特基二极管中属于较慢的,所以它适合于500kHz以下的工作频率;而对于MT3608这种高频开关芯片,反向恢复时间过长意味着倒灌发生的多、也就无法有效的建立起能量输出了。所以如果插件1N5822(Trr=35-50ns);如果贴片SK34或SS34(Trr=25-35ns)应该是更适合的; 7、基于上面第6点,所以又购买了SK34二极管,用于将现在使用的1N5819替换下来,看下是否能够将第4、5两个问题解决掉(现在感觉猜测方向应该靠谱,大概率能够解决问题)。 三、二极管还在运送途中 2025年4月14日晚6:40。上面的故障现象和可能的原因我怀疑是在自己使用的1N5819二极管的关断时间太长,所以无法有效的完成能量输出和电压建立,所以便又重新网购了一些SK34二极管,这些新网购的二极管现在还在路上。 同时,因为自己手中也没有合适的电容,之前只能用一些小容量的电容并联搭建电路,所以又网购了10uF和22uF的电容,这些电容今天已经到了,但是因为SK34还没有到手,所以也不急着测试。 在购买上面的IC时,我实在是有些不放心——也说不定自己对MT3608的理解不对呢?所以我便又购买了两块成品DCDC电路,这两块电路一来可以对比观察一下别人做出来的效果;二来万一自己搭建的电路还是无法工作,也可以有个参考的机会。这两块现成的DCDC今天也已经送到了,所以一会儿如果精力体力够用,就先测试一下这两块现成的DCDC电路板的效果。 我要测试的其实很简单:就是看一下输出电压是否能够稳定、带上负载之后是否依然有效。 四、问题越搞越不明朗 1、成品升压芯片的配置电阻不理解:这个成品的电路图看上去应该是和我使用的电路图完全一样的(大概率是一样的),但是它的R1=17K、R2=2K时,得到的输出电压并不是预期的5.1V,而是9V,这是什么原因呢? 2、成品输出电压是9V时,输入电压无论怎么改变,例如输入电压无论是3V、5V还是7V,输出都是9V,这是符合预期的。但是当我将SS34放到自己的电路中之后,依然无法得到恒定的输出电压,输出电压始终是输入电压的两倍。所以我还要继续替换自己电路中的IC,现在想着电容先不替换,而是将电感改成与成品一致的试一下;…

微信小程序開發備忘

小程序開發已經用三脚貓功夫做了一些粗略的實現,接下來就是學習這個技術框架中的細節,并且返工之前粗略、粗糙的地方。今天學習了一下幾個技術技巧: 一、子控件向父控件發送帶參數事件消息 頁面上的button按鈕是我做的一個子控件、這個按鈕是放在panel控件中的。現在我想點擊button按鈕的時候,button按鈕完成響應、并將事件通知給panel,由panel接收並繼續處理事件。 此前的實現非常拙劣,就是只使用panel進行事件的處理: 這樣做的壞處是顯然的:觸摸會發生在整個panel中。而我希望的是觸摸僅由裏面的button受理。改造過程如下: 1、首先panel的頁面層,調整代碼如下: 這樣調整之後,panel不再接受bind:tap消息,而是會接收名爲customEvent的事件,一旦接收到customEvent事件,則進行running執行。此時的customEvent事件將由button發出,所以button的代碼寫成下面的形式: 這樣只要點擊了button,就會運行sendEvent方法,這個方法内實現向父層發出消息的過程,具體js代碼是: 通過triggerEvent發出了一個customEvent事件,父控件因爲綁定了這個事件、接收到並開始處理就可以了。 二、動態成員訪問的方法 類似如下的PHP代碼: 在JavaScript中的實現方式是: 三、控件數據初始化 微信小程序的components控件,似乎沒有(我不確定)如pages頁面那樣的onLoad()方法,儅加載了一個小控件之後,向這個控件中傳入一些初始變量,便沒有辦法找到一個Init()或onLoad()的地方,對這些傳進來的變量進行預處理、以被在頁面上使用。 此時可以使用控件的observers監聽服務,對傳遞進來的變量進行監控,一旦傳遞進來的變量生效,observers服務啓動,以便進行數據的預處理操作。具體代碼如下: 四、頁面中的if/else流控方式 此前頁面中一直是這麽寫: 現在有了更好的方法: 雖然在頁面上的if/else流控寫法我已經瞭解了,但感覺并不如C/C++那樣直觀,總感覺有些奇怪,擔心它的嵌套不準確。不過也不重要,總之今天掌握的,就是這些。

闷热的三伏天

每年最闷热的日子到了,这段日子称为“三伏天儿”,“伏”大概是“藏”的意思,指的是地表阴气因为骄阳而隐藏到地表以下。整个地表都被烈日烘烤得阳气十足、再无阴凉。 也有人喜欢用“桑拿天”称呼这段日子,因为城市人不再做农事、可却喜欢泡“桑拿”,因而对他们来说,“桑拿”是个更形象的词汇、是随着新生事物诞生的新词。这个词来源于芬兰,芬兰语中的浴室或浴池称为“sauna”。 说起来估计在芬兰,人们去sauna也顶多就是冲冲水、洗洗澡吧。可城里人并不满足这样简单的洗浴形式,他们找到了更有妙趣的洗浴方式——蒸汽浴,同时再配上一个芬兰词,看上去更加的高大上、又有舶来味道。 坐在高温蒸汽房间中,借着热气腾腾的水汽将皮肤慢慢沁润、烘开汗腺,好似能够洗的更彻底、更干净、更通透、更过瘾。当然结账的时候花销也会更大一些。可是对于喜欢沉浸在体验中的城市人,这笔钱花的值得。只要体验好、感觉妙,花钱就是理所应当且无需吝啬的。 但若是让你在烈日的烘烤、高温的环抱中“享受一次免费桑拿”,恐怕很少有人乐意,哪怕免费也不会有人觉得这是享受。这着实是种煎熬。浑身不住的出汗,脖子上的汗渍反复被蒸干,从汗液中析出的盐分附着在因烈日灼伤的皮肤表面,瘙痒疼痛。 千万不要用手去抓,已经灼伤的皮肤经不住这样的力道,只会越抓越痒、如果忍受不住瘙痒而尽管解痒、解气的去抓挠,皮肤会被指甲划伤、进而瘙痒转成疼痛。这样的话即便是晚上回到家中,汗水已经洗净,白天抓过的地方依然又痒又痛、甚至红肿热辣,辗转在床上难以入睡。 所以三伏天,任谁都不大想出门免费蒸场桑拿,除非迫不得已。明智的人都会躲在房间中、最好躲在空调房中,享受着清凉,如果能再吃上一口冰镇西瓜,那才叫一个享受呢。 我便闷热的房间中苦苦煎熬,我的房间中并没有空调,仅有的风扇吹出来的都是35摄氏度的热气。不敢开窗、因为窗外吹进来的只会是更高温的热浪。只有不住的喝水、再偶尔将水拍打在头发上,三不五时的看看窗外,期待着一场雨水到来。 我在这间闷热的房间中,无所事事的 “忙碌”着手中的“电脑工作”。 这句话有些矛盾是吧?既然是无所事事、为什么要说是忙碌呢?这句话还有一些空洞无物,究竟什么是“电脑工作”?能够说出这种既矛盾又空洞的话,显然是因为我想自欺欺人。我没有任何的工作,但又不想承认自己闲着,所以就不断地在电脑上写字,写这篇文字,目的是让自己看上去似乎是个“作家”,我可没偷闲,我在创作呢。

《普林斯顿微积分》第8章学习备忘

这一章很简短,只有2个话题:如何进行隐函数求导、隐函数求导能够完成相关变化率的求解。这两个话题看的我是“一头雾水”,全都能够看懂、给出的例题也都会做,但其中的细节是没有一点儿能搞清楚的,总结就是这一章看的是“似懂非懂”。 一、隐函数求导: 1、什么是隐函数?这就是摆在我面前的第一个困惑,《普》几乎是很快就引入了隐函数求导的方法,而没有说明什么是“隐函数”,它是否是个更基础的、无需多说的知识呢?不得而知; 2、隐函数求导的具体过程。这一点对应着书中的§8.1,不费力气就看明白了。我在阅读这个章节的时候,对“链式求导法则”有了更豁然的理解,这个“豁然”要趁着现在还没有忘记、尽快花时间详细记录一下。否则一旦过段时间,很可能又会忘记掉; 3、具体的隐函数求导例题。没有什么难度,书中给出的例题都能跟着做出来。但诚如上面提到的,因为我不知道什么是“隐函数”,所以例题能做出来是没有意义的,原因在于:如果放在陌生的问题中,我可能很难一眼看出“这是一个隐函数”、“这里应该用隐函数求导去解决问题”; 4、隐函数求二阶导。同样的也可以将例题做出来,但是这里也存在着一个问题:我不理解二阶导的微分符号中,它的“分子”和“分母”中的上标位置区别的具体含义,或者说二阶导的上标符号具体是什么含义我不清楚。虽然能够隐约感觉到答案,但并不明确,所以这里也要再额外花时间推敲一下,形如下面的二阶导微分公式中,上标“2”的位置和具体含义: 二、相关变化率 1、§8.2章节是《相关变化率》的现实应用,以及利用隐函数求导方法求解。能知道说的是什么事情、能完成书中的例题的求解。 2、但是这些例题我自己却不会构建。不会自己构建例题说明自己完全不理解什么是“相关变化率”,不会自己构建例题意味着现实中即便遇到了“相关变化率”的问题或现象,也很难认识他们,知道他们,看得清他们,联想到使用隐函数求导的方式去解决他们; 3、相关变化率的具体概念要再花时间了解、学习。直到自己能够构建出例题、不费力气的就能信口举出例子、自己能够构建出应用场景和应用例题,才算是了解了这个话题。我现在能想到的比较感性的生活场景是人的吃饭、排泄,以及与体重的关系。这样一个生动的例子,如果能够随心所欲的构建出各类例子,并通过隐函数求导解决,应该就算是了解了。 三、小结 1、如上,就是这一章节的学习心得。可见这一章当前只是囫囵吞枣地阅读了、了解了,并不理解; 2、接下来将继续阅读第九章:指数函数和对数函数。

一道有趣的几何题

从网上看到的,试着做了做,没有做出来。所以记录在这里,等以后有时间了再重新尝试。 这道题我用绘图工具重新绘制了一遍题目,用的绘图工具是一个web工具,地址如下: https://www.geogebra.org

《普林斯顿微积分读本》阅读备忘(2)

一、前六章学习小结 已经将第六章看完了,现在开始阅读第7章的内容。前六章的内容实际上讲解的非常缓慢,都是在介绍什么是极限、什么是导数、什么是微分。我阅读、理解的更慢,断断续续好几个月才看完。却至今还是没有十分明白。 什么是极限? 极限是指某一个函数如,当自变量趋近于某一个定点时,这个函数的结果、也就是因变量将会趋近于的结果。极限是一个明确的结果、是一个明确的数值、是一个明确的“结果数值”。 什么是导数? 导数和上面的极限不同,相对于“极限”而言,导数并不是一个明确的结果数值,而是因变量的变化量与自变量的变化量的比值,也就是当在某一个明确的点(如)上时,的比值。所以它是“比值”、而非“数值”。 什么是微分? 微分是我仍然不理解的概念,上学时不理解、如今重学微分课程还是不理解。微分似乎既不像是上面的数值、也不像是上面的比值,微分什么都不是,微分只是一个“求导的过程”、“求导的方法”、“求导的思想”。微分是一种“细分思想”,利用这种“细分思想”或“微分思想”完成求导的思维方式。 同时,微分还是一个“符号”,使用“导数符号”表示的是比值结果,使用微分符号表现的是求出”比值“之前的”心路历程“。而且使用微分符号因为能够更多的展现出”求导的心路历程和动机目的“,所以在更复杂的求导过程中,利用微分符号可以更明确的将计算细节展现出来,进而使用各种”微分技巧“进行化简、转换、运算,以完成最终的求导、得到想要得出的比值来。 大概就是上面这个印象。也许还要再多花一些时间继续学习,才能有更透彻的理解。 二、额外的与模电联想 在模电中也经常会提到“微分电路”和“积分电路”,这里的两个名词具体含义也整理一下,也许过几天会用到。 微分电路:电路的输出信号与输入信号的导数成正比。换言之,微分电路输出的是输入信号的变化率。 积分电路:输出信号与输入信号的积分成正比。换言之,积分电路输出的是输入信号的累计值。 三、开始学习第七章的内容 接下来的第7章还是进一步对极限、导数、微分进行更多的例题讲解。只不过其中的例题都不再是多项式函数,而是三角函数。 大概翻看了一下后面的章节目录,后面的不同章节中,仍然是对极限、导数、微分进行更多的例题讲解,和第7章的大概方向是一样的,唯有不同的是,后面章节分别再对指数函数、对数函数、双曲函数……等进行求导、微分。 之所以简单的“极限、导数、微分”要如此一轮又一轮的重复,我猜也许是有如下2个原因: 1、不同的函数类型,微分思想虽然都是一样的,但用到的技巧各不相同,所以要区分讲解,从而不断地引入各种新的微分技巧或定理; 2、不同的工科应用领域中,用到的函数不同,例如在计算机行业中,也许就会经常用到三角函数、但很少用到双曲函数,所以不同专业的人可以有取舍的仅对自己行业频繁用到的函数类型进行微分思想练习。 如上是当前的学习小结。