热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一段C#学习代码(实现通过积分的几何意义计算积分)

2019独角兽企业重金招聘Python工程师标准1.本段程序实现的功能1)通过积分的几何意义计算积分:计算函数曲线与坐标轴围成部分的面积ÿ

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.本段程序实现的功能

1)通过积分的几何意义计算积分:计算函数曲线与坐标轴围成部分的面积,方法为将面积分为小块的矩形,依次计算矩形的面积并相加

2)程序通过Integration函数计算积分,该函数有三个参数:attr、left、right,分别代表:选用哪个函数进行计算、积分下界和积分上界。写一个函数,参数和返回值都是double类型,只要在其上加上[RemarkAttribute("函数标识")],并将“函数标识”字符串传入到attr参数中,Integration函数就可以自动选择这个函数进行积分计算了

2.函数实现

/// 


/// 示例函数1:f(x)=x*2
/// 

/// 自变量x
/// 因变量f(x)
[RemarkAttribute("Double")]
public static double Function1(double x)
{return x * 2;
}/// 
/// 示例函数2:f(x)=x^2
/// 

/// 自变量x
/// 因变量f(x)
[RemarkAttribute("Square")]
public static double Function2(double x)
{return x * x;
}/// 
/// 示例函数3:(x-1)^2+y^2=1 (y>=0)
/// 

/// 自变量x
/// 因变量f(x)
[RemarkAttribute("HalfCircle")]
public static double Function3(double x)
{double result = 1 - (x - 1) * (x - 1);return Math.Sqrt(result >= 0 ? result : 0);
}/// 
/// 特性 RemarkAttribute,用在函数上,其 Remark 属性决定了
/// 积分函数 Integration 应该选择程序中的哪个函数进行计算
/// 

[AttributeUsage(AttributeTargets.Method)]
public class RemarkAttribute : Attribute
{string remark;public string Remark {get { return remark; }}//构造函数public RemarkAttribute(string comment) {remark = comment;}
}/// 
/// 计算积分
/// 

/// 原函数RemarkAttribute特性名
/// 积分下界
/// 积分上界
/// 
public static double Integration(string attr, double left, double right)
{//1.找到 RemarkAttribute 特性为 attr 的方法&#xff08;需要 using System.Reflection;&#xff09;MethodInfo[] mi &#61; typeof(Program).GetMethods();MethodInfo mthd &#61; null;foreach (MethodInfo m in mi){Type t2 &#61; typeof(RemarkAttribute);RemarkAttribute ra &#61; (RemarkAttribute)Attribute.GetCustomAttribute(m, t2);if (ra !&#61; null && ra.Remark &#61;&#61; attr){mthd &#61; m;break;}}//2.如果没有找到 RemarkAttribute 特性为 attr 的方法则报出异常if (mthd &#61;&#61; null){throw new Exception("没有特性为 " &#43; attr &#43; " 的方法");}//3.调用找到的方法&#xff0c;通过积分的几何意义求解面积double result &#61; 0;for (double i &#61; left; i < right; i &#43;&#61; 1E-6){result &#43;&#61; (double)mthd.Invoke(null, new object[] { i &#43; 5E-7 }) * 1E-6;}return result;
}

3.Main函数调用

static void Main(string[] args)
{Console.WriteLine("f(x)&#61;x*2 在 [0,2] 的积分&#xff1a;");Console.WriteLine(Integration("Double", 0, 2).ToString("#0.000"));Console.WriteLine("f(x)&#61;x^2 在 [0,2] 的积分&#xff1a;");Console.WriteLine(Integration("Square", 0, 2).ToString("#0.000"));Console.WriteLine("(x-1)^2&#43;y^2&#61;1 (y>&#61;0) 在 [0,2] 的积分&#xff1a;");//即函数 f(x)&#61;1-(x - 1)*(x-1) (0<&#61;x<&#61;2) 在 [0,2] 的积分Console.WriteLine(Integration("HalfCircle", 0, 2).ToString("#0.000"));Console.ReadLine();
}

4.运行示例

140839_fY9n_1425762.png


转载于:https://my.oschina.net/Tsybius2014/blog/264190


推荐阅读
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
author-avatar
蓝颜知己Alice
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有