做了一个画f(x,y)=0函数图像的算法,果断codeplex之
代码上传到了http://vlpp.codeplex.com/的Candidate\Games\FunctionVisualizer文件夹下面,VS2010,.NET 4.0。做这个的目的只要是前几天看到了batman equaltion,然后浑身不舒服,因此就想起了这片新闻(http://news.cnblogs.com/n/106212/)里面的东西。就花了一个晚上和一个早上的时间做了出来。当然这里面有点瑕疵,不过大概还是好的。
在Candidate\Games\FunctionVisualizer\FvCalculation\RawExpression.cs里面可以看到用来表达函数的语法树。旁边的ExpressionParser.cs有一个用unsafe+char**写的语法分析器。当我得到了语法树之后,就求f(x,y)的偏微分(RawExpression.Different函数),然后按照下面的步骤进行:
1:从屏幕的所有点(a,b)开始
2:用牛顿迭代发求f(x,b)=0的解x'
3:用牛墩迭代法求f(a,y)=0的解y'
4:每个点(a,b)就变换成了(a,y')和(x',b)
5:如果Bitmap的大小是100*100的话,那么现在我就获得了两万个(double, double)点,将他们Math.Round之后画到Bitmap里面就成为函数图像了。
为了加速,我做了下面的几件事情
1:用unsafe把string转成char*,然后做语法分析器(方法基本上就是我写的这篇文章http://www.cppblog.com/vczh/archive/2008/06/15/53373.html)。
2:绘图的时候Bitmap.Lock得到指向Bitmap的颜色的缓冲区,unsafe强制转换成byte*,然后填颜色。
3:在得到f(x,b)和f(a,y)之后,对他们求微分f'x(x,b)和f'y(a,y),然后把这些函数从RawExpression编译到System.Linq.Expression再Compile成Func<double, double>。
下面就放几个截图。由于|x|我还没想到好方法去支持,所以我只画了上面提到的那片新闻的一半的图。
做了一个画f(x,y)=0函数图像的算法,果断codeplex之相关推荐
- 妙笔生画:用desmos在线绘制y=f(x)或z=f(x,y)数学函数图像
有的时候,我们想看一看数学函数y=x2+6xlogxy=x^2+6xlogxy=x2+6xlogx或z=x3+y2z=x^3+y^2z=x3+y2到底长什么样,想画出这个数学函数,方便观察这个函数的某 ...
- matlab求x对应y值,matlab已知f(x,y)=0,已知一组x如何求对应的y值? - 计算模拟 - 小木虫 - 学术 科研 互动社区...
不知道你是怎么画的,ezplot中x的范围取得太大了吧,,.我画出来的图是一致的啊. 不知道怎么不能上传图片了,你自己运行下吧 clc; clear all; close all; x=[0, 0. ...
- 上海交大:我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用
机器之心报道 作者:魔王.张倩 上海交大研究人员创建新型开放医疗图像数据集 MedMNIST,并设计「MedMNIST 分类十项全能」,旨在促进 AutoML 算法在医疗图像分析领域的研究. 项目地址 ...
- 我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用
作者|魔王.张倩 来源|机器之心 上海交大研究人员创建新型开放医疗图像数据集 MedMNIST,并设计「MedMNIST 分类十项全能」,旨在促进 AutoML 算法在医疗图像分析领域的研究. 在 A ...
- 7-38 支票面额 (15 分) 一个采购员去银行兑换一张y元f分的支票,结果出纳员错给f元y分。采购员用去n分后发觉有错,余额有2y元2f分,问支票面额?PTA:中M2021春C、Java入门练习I
7-38 支票面额 (15 分) 一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分.采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少? 输入格式: 输 ...
- JS_小工具_自己写了一个画像素画的小工具
自己抽空做了一个画像素画的小工具,界面比较简单,但也可以画着玩.呵呵. 有意思的地方在于可以把画的内容保存为一个数组,可以很方便地还原成图案... 主要的JS代码: //画板表格 var iconTa ...
- c语言计算机图形来画八分画圆,计算机图形学:中点画圆算法
在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2 ...
- 为什么 sin(x²)+sin(y²)=1 的图像这么复杂?
其原因有两条:一是看似简单的数学公式可以生成十分复杂的图像图形,二是看似十分复杂的图像图形可以由简单的数学公式实现. 显然这两句话是一个意思,也并没有什么营养. 不如先给大家讲个段子: 妹妹看到哥哥在 ...
- 用python画数学函数图像教程_Python 绘制你想要的数学函数图形
Python 非常热门,但除非工作需要没有刻意去了解更多,直到有个函数图要绘制,想起了它.结果发现,完全用不着明白什么是编程,就可以使用它完成很多数学函数图的绘制. 通过以下两个步骤,就可以进行数学函 ...
最新文章
- TensorFlow基础9-多层神经网络
- 配置git 账户密码时bash:$:command not found
- NET 知识体系结构
- 图像像素灰度内插(Matlab实现)
- Web Service 基本概念和技术应用
- 机器学习笔记(4):多变量线性回归
- 跳过DOSBox映射的方法
- android怎么长按一张图片保存到相册_好看的微信朋友圈背景图片下载 让你的朋友圈封面个性起来...
- ssm架构 开源项目_如何为您的开源项目选择正确的品牌架构
- 浅谈自来水综合管理信息系统的建设
- Error writing to registry key: RegSetValueEx failed; code 5
- C++ DOM读写xml(msxml6)
- coremail服务器无响应,icoremail邮箱系统 邮件收发常见问题|创思Chance
- 微积分-求导必背公式
- 位置不可用无法访问介质受写入保护 chkdsk无法修复. 不知道怎样找到呢?
- 《MIT科技评论》“35位35岁以下科技创新青年”名单出炉!AI领域有5人入选 | 2020中国区...
- cleanmymac是怎么进行Mac的深度清理的
- php 生成文件出错,php生成excel文件打开报错?!!!
- 726. 原子的数量
- AD19 编译报错:has only one pin 和 floating net label