猫史档案馆


Function_函数计算器

用户:小小小嘟嘟小小小嘟嘟查看:433 回复:16 评论:138 创建时间:2021-10-02T17:53:51


由于喵管喵,我的这个作品参赛后不能评论了……

我很无奈,以前的三页评论都没了……

只好创建一个帖子弥补一下……


回复

上一页第 1 页 / 共 1 页下一页
小小小嘟嘟小小小嘟嘟

就当这是评论区吧!

点赞2


评论


小小小嘟嘟小小小嘟嘟

我计划更新一下。更新内容:增加隐函数的图像绘制功能

点赞2


评论


小小小嘟嘟小小小嘟嘟

有趣的函数:

点赞1


评论

f(x)=x-x^3/3!+x^5/5!-x^7/7!+......-x^15/15! \n f(x)=1-x^2/2!+x^4/4!-x^6/6!+......-x^14/14! \n f(x)=1+x+x^2/2!+x^3/3!+x^4/4!+......+x^15/15!


沈传翔沈传翔

这评论区是真的热闹

点赞1


评论

是的


沈传翔沈传翔

y=-2(x-1)^2+2怎么是朝上的??

点赞0


评论

我用的是[数学运算()]积木,是编程猫的问题,改成-2*(x-1)^2+2就可以了,这种情况我也出现过,就是它把前面的-2也算在平方里面了,就变成了4

喵=学 计

?啥意思

f(x)=x^2,∨x∈R-U{0},f(x)≤0?

你数学不好


L_EL_E

请问能否考虑增添极坐标的模式?某些函数还是用极坐标来表达更方便,如果完全用直角坐标系,终究还是有些麻烦。

点赞0


评论

早就有了,去年就更新了那个玩意儿。输入函数时输入“S”(大写S)就可以了。

因为字数限制,更新的说明都写在评论区了

还有一点,绘制极坐标函数时要手动停止,即长按屏幕

我去缩短一下原来的操作说明,将极坐标的部分挤进去

ρ=8*sin(3*θ)

ρ^2=8*cos(2*θ)


x的11次方减1等于0x的11次方减1等于0

f(x)=x!

点赞0


评论

由于编程猫自带的数学运算只能运算自然数的阶乘,不是自然数就会报错

数学 运算

我不明白为什么这也是屏蔽词

屏蔽词?


x的11次方减1等于0x的11次方减1等于0

x^2-y^2=1怎么画?

点赞0


评论

隐函数暂时画不了

但你可以动用你的聪明才智画一条双曲线。化简一下可以得到:y = ±(x^2-1)^(1/2)

也就是说你画x^2-y^2=1需要画两个函数:y = (x^2-1)^(1/2) 和 y = -(x^2-1)^(1/2)


蒟蒻OIer1048576蒟蒻OIer1048576

默默地问一句:您是OIer吗?

点赞0


评论

什么意思


x的11次方减1等于0x的11次方减1等于0

f(x)=∫(u^x/e^u*du,0,+∞)

点赞0


评论

ye s

一个反常积分

这就是我的Factorial的封面

f(x)=lim(z→+inf)((1+1/z)^(z*x))


L_EL_E

有关于隐函数画法的一点不成熟想法:

       对于隐函数,我们总可以把x代入,使之成为一个形如 f(y)=0  (前提是你要先要求用户在输入隐函数时输入形如:f(x,y)=0 的式子)的方程。例如:x^2+y^2-1=0 ,代入x=1,得:1+y^2-1=0.

       接下来,可以用几种方法来求解,如二分法,切线法,割线法(这些方法取自于《高等数学 第七版 上册》的第177页)。

       二分法无疑是最容易实现,且效率较高的,然而它有其局限性,要使解必须在其选定范围内;而切线法要利用导数f'(x) ,这是几乎不可能求出来的。所以,唯一的办法就是割线法,利用微分公式 f(x)≈f(x0)+f'(x0)(x-x0) 得到的f'(x0)≈(f(x)-f(x0))/(x-x0)来近似代替f'(x).

      然而,若方程没有解,那么此时割线法就会不断循环,所以我们还要设置一个程序来判断该方程有没有解。具体可以通过看多次迭代求出来的解是否趋近于某一个值。

      最终求出来的值就可以近似看作y了,偏差不会很大。

      不过大多数这种方程都是有多个解的,因此要多次代入不同的x0的值(可以用随机数),最后再去掉重复的解(不去也行),就大概可以得到所有的解了(可能还是会遗漏,所以一定要多次代入)。

点赞1


评论

什么?二分法是效率最低的好吗?我从来没想过二分,唯一想到的就是用牛顿迭代法

谁说导数难求?自己查一下中心差分法。还有,我的作品里按住屏幕就会出现某个x值对应的切线了,这不是表明导数很容易求吗?

其实好像画隐函数图像就是类似画等高线,而我用matplotlib(在python里)画等高线是特别快的。说明一定有比你这(也是我想过)的方法更快的算法

其实你没有考虑到一点,就是绘图。就算求出来了很多点,那要怎么连线?这个我都没想到要怎么做才能实现快速选出应该相连的点。这就是我一直不更的原因(其实最主要原因是迷上了python)

让我猜猜matplotlib画等高线的方法:先算出一个网格(可以调整疏密以调整绘制精度)上的点 (x, y) 的函数值 f(x, y) ,然后找到这些函数值中从负数转变到正数的一些位置(至于找的算法,可以后面再想),最后再将这些相邻点一一连接起来。

看不懂

是我表述能力差,你的理解能力应该是能理解我所说的

……我这里说的导数难求是指的难求出准确的式子,而不是数值。还有,我看了一下你说的中心差分法,它实际运用时也是一种近似,我说的弦割法中已经提到了利用微分的方法来近似取值求导。至于二分法,我也从没想过用二分法,所以它第一个就被我排除了。不过,就事论事,二分法确实是最容易实现的算法。

至于绘图,我也有考虑到,实际上并不用连成线,只用描点就行了。点够多人眼看起来就跟线没太大区别。这样做只是计算量会大一些。

实际上,我已经自己做了一个程序,可以实现画隐函数(本来想直接用你的程序打底来设计的,结果因为参加活动买不了,害得我只好自己又做了一个新的),当然,因为我算法的原因,它画起来有些慢。

哦?原来是因为参加了活动?别人也问过我这个问题

不是的,虽然牛顿迭代法比二分法的计算量略微大一点,但是收敛速度可是快得一批啊!这是没法比的

你这个思想是错的,不应该用喵的方法解决问题,要用高效的算法。 你试试输入 x^3-x^2+y^2 = 0,看看结果怎么样?如果用打点的方法,我用 python 做过,靠近中间的交叉的位置会有一块区域的点,而两条延长出去的线则打的点会很稀疏,连不成线。你再在 https://www.de喵os.com/calculator 里面试试,反差就很大

这是之前给 De喵os 反馈的一个错误,就是 |x^2+y^2-1| = 0 的图像应该是单位圆,但是输入到 de喵os 画出来的是什么都没有。 De喵os给我的回复是:

我们的隐式绘图器的工作原理是,在平面上对f(x,y)进行采样和递归子采样,试图接近它为正值和为负值的区域之间的边界,因为这个边界形成了解集。但为了可靠地检测到这一点,我们需要你的函数在该边界处真正改变符号。或者换句话说,我们需要这个曲面在z=0处正确地与平面相交,而不是简单地与它相切。因此,我们永远不会根据一个隐式方程对一个区域进行着色。

如果一个隐式方程(不是不等式)在某个区域内为0,就意味着该区域与平面相切。 我们这样做是因为对视口中的每一个点进行采样并检查是否与0完全相等而不至于慢得无法忍受是不可行的。即使我们能做到,我们最终也会在所有的时间里绘制出一个非常糟糕的边界,因为这些比较会因为浮点舍入误差而在数值上非常不稳定。 这是我们在数值系统中做出的N个妥协之一,其中N是很大的。

这个回复太长了,分了两次发

由此可见,De喵os 都是通过检测 F(x, y) 符号的改变来作图的,他说的很清楚了(是翻译的,所以有点奇怪),这是他们对数值分析做的一个权衡,为了快速同时精度高,可以对大部分图像得到一个满意的输出,但对于特殊的函数,绘图会出现问题,但好过对普遍的函数都画得慢,他也说了对每一个点采样并且判断是否等于0是慢得无法忍受的。

有很多算法不是通过完全正确的数学公式得来的,是要考虑到计算时间、精度等因素,甚至要考虑到浮点数的舍入误差(比如三体系统的模拟就让我摸索出了舍入误差带来的不可忽视的影响,即把时间间隔调得特别小,模拟不但慢,结果也很奇怪,比时间间隔大的时候模拟的差太远了,但当时我还不知道舍入误差,是后来看知乎别人写的数值分析的文章讲到的)

很多算法是很巧妙的,同一个问题也有很多解决的算法,各种算法都有各自的优点,当然我们也要选情况挑选计算速度和精度都均衡的算法。

啊,确实,遍历然后求解的方法确实很慢,而且往往为了时间而牺牲了精度后速度依旧慢的一批(天知道我画一个单位圆就用了多少分钟),并且有时候确实会出现画不出来的情况,譬如笛卡尔的叶形线,我在画的时候就会出现图像残缺的现象。

我想这是求解的问题,毕竟牛顿法很依靠代入的初始值,因而总是出现重复的解,或者说是解方程不到位。

但我想,在编程猫中,想要实现更精妙的算法恐怕有些难。

所以也只能被迫用这种算法了

关于符号计算微分,有学者发表过论文:dl.acm.org/doi/pdf/10.1145/367766.368195

打不开……不过我估计就算知道了相关知识,也很难在编程猫里复现吧。但是,说实在的,如果真想求也不是不行,不过我现在早没了那个时间和耐心了。

只是一个假期少到可怜的普通学牲而已

哦,对了,我看了你发的那道几何题,用解析几何的方法很快吧,属于看几眼出答案的那种(某位深陷解析几何痛苦到无法自拔的学生评价。天知道为什么会有用解析几何做平面几何题的章节)

不到啊,内心的坐标表示复杂的一批(或者你说的是其他的方法)

同是天涯沦落人

这个嘛,可以看看,就当长见识。(这文献是英语的,要的话邮箱发我,我给你发过去,我还有符号计算不定积分的,MIT的一个研究人员做的,国内研究符号计算的人都没什么),真的搞工业软件或者原理复杂的软件还是PY吧。

我翻了一下,我还有一个计算机代数和清华大学一个团队写的关于符号计算的书的电子版,第一本没看过,不知道怎么样,甚至还有一些其他奇奇怪怪的研究思路喵p/102257127

zhuanlan.zhihu.com/p/102257127

至于画隐函数...这东西属于吃力不讨好系列。

半年不见,没想到你们聊的这么嗨a

为什么突然聊起符号计算呢?

唉,半年后一登录进来,评论与回复33,赞与被购买233,我真的是23333,粉丝翻了一倍

这是个很有研究意义的课题,有很广泛的应用。


L_EL_E

@Fancy_You老鸽子了,这是你九月前的评论:

Fancy_You

我计划更新一下。更新内容:增加隐函数的图像绘制功能

结果你现在还未更新。

 

点赞1


评论

抱歉,因为迷上python了,现在都不想拼积木了。python在各方面真是碾压Kitten。


我要上首页我要上首页

大佬,我也作了一个函数编辑器(未发布),原创未抄袭,能给点意见吗(去多人创作看)

点赞1


评论

本人六年级(真的)

或者加个好友

自从迷上python后,我都好久没用过Kitten搭积木了,我也建议你学一下python,绝对碾压Kitten,你会发现你在Kitten花尽心思做的作品,在python里几十行甚至几行(用numpy库和matplotlib库)代码就能解决!

不过我还是看看你的作品吧,毕竟你一定是费了很久才做出来的,就像我以前

不过我好像不会什么多人创作……

现在都什么kitten4了,我还是停留在kitten3

而且Python运算速度也绝对碾压Kitten,几十倍甚至上百倍

要真正学编程还是学Python或JavaScript、C++等语言吧!——我的真诚建议

编程猫也开了一个Python的课程啊!你可以考虑报

不知你知不知道,原创作品也是可以抄袭的,而且不用重新拼积木,我记得是可以收藏一段积木,然后粘贴到作品里的

怎么不回我消息

或者加个好友

我连你的代码都没看

https://kitten4.codemao.cn/?invite_code=ZRBIUY邀请条:ZRBIUY我在编程猫发起了一个协作项目,点击链接即可加入一起创作!

对不起,没看到。我不常驻,特别是开学后,可能会半个月不看一次。而且四个小时前我在上课(就是你发这几个评论时)

https://kitten4.codemao.cn/?invite_code=ZRBIUY链接已失效?

它说要你重新发链接

美30分钟就会刷新

加个好友,我发视频

你能回复我已经很高兴了

我也不能常驻

https://kitten4.codemao.cn/?invite_code=9FX4CA邀请:9FX4CA我在编程猫发起了一个协作项目,点击链接即可加入一起创作!

哈哈哈😂……好吧,,,我又错过了……………………我好方……………………………

可不可以约定约个时间,比如今晚6:00发

加好友还能发视频??

好吧,你现在又没看到……我又要上课了,6:30 到 9:30

不过你也很难抄袭,因为你用Kitten4而我的是Kitten3

不过我想先问问,你这个作品有没有bug?如果有的话那是什么程度的?

还有,你为什么要我看你的作品呢?

其实只要别人问的是我会的问题或是我有能力帮助的困难,我都会尽力帮助的。因为这样的人很难得(我们年级就没有编程好或能跟我讨论数学的人,我唯一的地方就是在饭堂吃午饭或晚饭时和几个高中生讨论数学),而且我不知道为什么能回答我都会积极回答,教别人的过程中我也会感到快乐。

我的电脑坏了,时不时就会用不了

可能不能常回你

有,但好像也算不上bug,就是tanx的图像,就是正切,左边的图像不对

加微信好友

我也在学python(自学),但不熟

毕竟我知道的函数只有一次、二次和三角,其他的函数我不知道程序能不能识别

想改善一下

虽然你的作品开源了,但我不能进入你的程序里面(我也不知道为什么),自然看不了你的程序

我没有微信啊……

我想问你,你识别输入的公式是用什么方法?

约个时间呗,我大概只有下午6:00才是一定能用上我的iPad的(因为6:30有网课)。你不一定要用电脑啊!手机之类的可以在浏览器的设置里调访问桌面网站还是移动网站(手机默认是移动网站,电脑就是桌面网站,所以有些网站用手机和电脑打开的界面是不一样的,甚至功能都会有受限,比如你现在访问的这个网站)

先把公式的每一个字符串 弄到列表里然后识别列表里“x“在第几个位置,用数字代替他,然后数学运算。

https://kitten4.codemao.cn/?invite_code=FX4LF7邀请:FX4LF7我在编程猫发起了一个协作项目,点击链接即可加入一起创作!

和我方法一模一样!

我进到去了!以后都可以进去了吗?

不过我现在要上课了,可能很少时间可以看你的

这么巧??!!(我真的没抄你的,看都没看)

。。。。。。。。。不行

在吗

抱歉,忘了

在编程猫的“数学计算”里面,计算三角函数是用角度值的。而我们一般画三角函数的图像都是用弧度制的。角度制转换到弧度制,就是*pi/180的事,所以我的挽救方法,就是……我也忘了,我看一下我陈旧的积木……

我知道了,我没有进行挽救……我是让玩家自行修改,就是输入三角函数时写成:sin(x*180/pi)。没错,就是*180/pi而不是*pi/180,你自己想想。

如果是输入反三角函数,那就是 asin(x)*π/180

因为我懒得弄一个判断表达式有没有三角函数,再添加*180/pi了,因为实际操作中输入的函数有可能很复杂,可能会出现添加到错误位置的情况

还有,我建议你在出现“x”的地方,左右添加小括号,变成“(x)”。因为这样可以无脑处理一些特殊情况(如输入“-x^2”),你也想不到在哪里“数学运算”这个积木会给你错误的结果,方法就是多加括号。

还有,你这个x值的范围太大了……

调成-10到10还好,你竟然弄个-500到500???我当时看到就震惊了。

还有你的界面。可以用画笔画上网格,还有你的那些字体太大了……。我看你-300和300都是用角色解决的……个人建议能用画笔的都用画笔。

我的作品你看过吧?里面我大概只用了6个角色

都是不得不用角色的情况,因为角色可以任意移动而不改变后面(或前面)的画笔画的东西。

之前用了

我没看(看不了)

我知道,我是说你有没有运行过我的作品。你难道打都打不开作品吗?你不是只是不能再创作吗?

不能

他说购买失败

看多看不了

我要下了,拜拜

我不是说购买,你连运行都不可以吗?就是在我的作品https://shequ.codemao.cn/work/55070968这里运行哦,这都不给你运行吗?

只是不能在创作

能运行

你也是学数学奥赛的吗?同感。

啊,大概在编程猫只能通过这样的方式来实现了,方法重复实在是太正常了。


可仁KR可仁KR

能输入根号吗?

点赞0


评论

用0.5次方代替不就行了

好的 谢谢


_伪装__伪装_

我也有一个函数作品,你来评一下

点赞0


评论


_伪装__伪装_

你的作品怎么不能再创作了

点赞0


评论