代码上传到了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之相关推荐

  1. 妙笔生画:用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到底长什么样,想画出这个数学函数,方便观察这个函数的某 ...

  2. matlab求x对应y值,matlab已知f(x,y)=0,已知一组x如何求对应的y值? - 计算模拟 - 小木虫 - 学术 科研 互动社区...

    不知道你是怎么画的,ezplot中x的范围取得太大了吧,,.我画出来的图是一致的啊. 不知道怎么不能上传图片了,你自己运行下吧 clc; clear all;  close all; x=[0, 0. ...

  3. 上海交大:我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用

    机器之心报道 作者:魔王.张倩 上海交大研究人员创建新型开放医疗图像数据集 MedMNIST,并设计「MedMNIST 分类十项全能」,旨在促进 AutoML 算法在医疗图像分析领域的研究. 项目地址 ...

  4. 我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用

    作者|魔王.张倩 来源|机器之心 上海交大研究人员创建新型开放医疗图像数据集 MedMNIST,并设计「MedMNIST 分类十项全能」,旨在促进 AutoML 算法在医疗图像分析领域的研究. 在 A ...

  5. 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分,问该支票面额是多少? 输入格式: 输 ...

  6. JS_小工具_自己写了一个画像素画的小工具

    自己抽空做了一个画像素画的小工具,界面比较简单,但也可以画着玩.呵呵. 有意思的地方在于可以把画的内容保存为一个数组,可以很方便地还原成图案... 主要的JS代码: //画板表格 var iconTa ...

  7. c语言计算机图形来画八分画圆,计算机图形学:中点画圆算法

    在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2 ...

  8. 为什么 sin(x²)+sin(y²)=1 的图像这么复杂?

    其原因有两条:一是看似简单的数学公式可以生成十分复杂的图像图形,二是看似十分复杂的图像图形可以由简单的数学公式实现. 显然这两句话是一个意思,也并没有什么营养. 不如先给大家讲个段子: 妹妹看到哥哥在 ...

  9. 用python画数学函数图像教程_Python 绘制你想要的数学函数图形

    Python 非常热门,但除非工作需要没有刻意去了解更多,直到有个函数图要绘制,想起了它.结果发现,完全用不着明白什么是编程,就可以使用它完成很多数学函数图的绘制. 通过以下两个步骤,就可以进行数学函 ...

最新文章

  1. TensorFlow基础9-多层神经网络
  2. 配置git 账户密码时bash:$:command not found
  3. NET 知识体系结构
  4. 图像像素灰度内插(Matlab实现)
  5. Web Service 基本概念和技术应用
  6. 机器学习笔记(4):多变量线性回归
  7. 跳过DOSBox映射的方法
  8. android怎么长按一张图片保存到相册_好看的微信朋友圈背景图片下载 让你的朋友圈封面个性起来...
  9. ssm架构 开源项目_如何为您的开源项目选择正确的品牌架构
  10. 浅谈自来水综合管理信息系统的建设
  11. Error writing to registry key: RegSetValueEx failed; code 5
  12. C++ DOM读写xml(msxml6)
  13. coremail服务器无响应,icoremail邮箱系统 邮件收发常见问题|创思Chance
  14. 微积分-求导必背公式
  15. 位置不可用无法访问介质受写入保护 chkdsk无法修复. 不知道怎样找到呢?
  16. 《MIT科技评论》“35位35岁以下科技创新青年”名单出炉!AI领域有5人入选 | 2020中国区...
  17. cleanmymac是怎么进行Mac的深度清理的
  18. php 生成文件出错,php生成excel文件打开报错?!!!
  19. 726. 原子的数量
  20. AD19 编译报错:has only one pin 和 floating net label

热门文章

  1. 【C/C++】递归算法
  2. 理解Storm Metrics
  3. 结对编程项目---四则运算
  4. Windows 8 中取消的功能特性
  5. JS左右无缝滚动(一般方法+面向对象方法)
  6. 关于Socket通信服务的心跳包(转)
  7. 法拍房数量激增数百倍!来看看这里面的数据...
  8. 为什么数字中台是企业应用新基建?
  9. 我30岁了。现在开始编程,会不会太晚?
  10. thinkphp mysql save_新增Save · ThinkPHP5+数据库和模型 · 看云