关于画方程图像的一些思考
22/12/13:
目的:画出方程的图像(即画出f(x,y)=0的图像)
由基本函数组成的非无穷级数的非分段复合方程在任意有限的定义区间上所得到的图像由有限条连续封闭或延伸至定义区间外的曲线构成。(这句是错的,详见后文)
现在的问题是上述命题的证明(这不重要)和如何求出定义区间内曲线的条数以及如何快速求得在曲线上的点。
有几个大方向:解复方程、找到若干分段函数、找到若干参数方程、找到特殊曲线并构建曲线系(特指三角方程)。
坚决反对把每一点求出来是否等于0然后连线的这种做法,因为时间复杂度为O(n^2),太高了。
22/12/16:
我打算加入复数的概念,这样解复方程就成为正式要解决的问题。
因为我之前忽略了恒等式,即sqrt(1-x^2-y^2)-sqrt(1-x^2-y^2) =0就表示单位圆,是一个二维的面。
这样,方程f(x,y)=0可以表示由多个点、多条曲线、多个曲面构成的图形(平方相加等于零即取交集,乘积等于零即取并集);
又因三角与反三角可以用复变函数来解决(而无需引入无穷级数),
因此,现在只有参数方程这条路能走得通,即进行消参的逆过程。
或者是,再搞几个新方向?
22/12/21
不是,真要那么复杂吗?我还指望不用到sin和arctan。


其他函数至少还能用无穷级数(傅立叶变换)来处理(好比说取整函数、符号函数),但是阶跃函数我连它的定义都看不懂。
这样的话,只好把三角函数、反三角函数用无穷级数来算,一是精确度是大量的缺失,二是时间复杂度的突增。
我现在再试想有没有什么算法能直接用CPU计算sin和arcsin。
附:但是,用CPU计算对数很简单:先用换底公式转换成自然对数,事先准备好整数的对数表(双精度浮点数只需要准备ln2^1024<710个数),再转换成lna(b<a<b+1, b为整数),再计算1/x从b到a的积分(累加即得),最后经过转换得到原值。
FPU?对不起,我不认。
至于坐标轴和网格,可以分别采用xy=0和sin(kπx)*sin(kπy)=0并作图,即无需额外的代码来实现。
整理一下现在需要做的事:
一、(重要)对方程试图增加一个参数并映射到单位圆(闭合曲线)上,精度中间大两头小(可根据采样的分散或密集来调整曲线的精确度)。
二、对于限制图像的不等式/方程分离出来,使之变成新的限制条件。
三、(重要)对于三角函数、反三角函数,思考不用无穷级数如何计算(不包括取无穷级数前几项,随后根据周期映射到[-2π,2π)上),同时思考对于符号函数、取整函数、狄利克雷函数等不通过傅立叶变换如何表示(不包括使用简单的分段函数)。
四、对于复方程,通过Re(x,y)和Im(x,y)来使得与实方程类似的解法。
五、思考如何通过隐函数的导数来判断在原方程一点的偏移(即通过对隐函数求导,已知f(a,b)=0如何得到f(a+,b')=0时b'的值)。(这样的话也是只用一层循环。)
六、试图将方程变换为一个周期内经过若干次平移、伸缩、旋转等简单函数变换或反函变换来使方程转换为函数。
七、(最重要)如何使用其他方法(时间复杂度小于等于O(nlogn))来画方程的图像。
本文允许任何人转载或复制