热门标签 | 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


推荐阅读
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 在AngularJS中,有时需要在表单内包含某些控件,但又不希望这些控件导致表单变为脏状态。例如,当用户对表单进行修改后,表单的$dirty属性将变为true,触发保存对话框。然而,对于一些导航或辅助功能控件,我们可能并不希望它们触发这种行为。 ... [详细]
  • 本文旨在探讨Swift中的Closure与Objective-C中的Block之间的区别与联系,通过定义、使用方式以及外部变量捕获等方面的比较,帮助开发者更好地理解这两种机制的特点及应用场景。 ... [详细]
  • D17:C#设计模式之十六观察者模式(Observer Pattern)【行为型】
    一、引言今天是2017年11月份的最后一天,也就是2017年11月30日,利用今天再写一个模式,争取下个月(也就是12月份& ... [详细]
  • 本文详细介绍了如何在循环双链表的指定位置插入新元素的方法,包括必要的步骤和代码示例。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 来自FallDream的博客,未经允许,请勿转载,谢谢。一天一套noi简直了.昨天勉强做完了noi2011今天教练又丢出来一套noi ... [详细]
  • Lua字符串1.字符串常见形式字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua语言中字符串可以使用以下三种方式来表示:•单引号间的一串字符。 ... [详细]
  • 本文详细探讨了HihoCoder平台上的1398号问题——最大权闭合子图的求解方法。通过具体实例,深入分析了最大权闭合子图的概念及其算法实现。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • Irish budget airline Ryanair announced plans to significantly increase its route network from Frankfurt Airport, marking a direct challenge to Lufthansa, Germany's leading carrier. ... [详细]
  • Go从入门到精通系列视频之go编程语言密码学哈希算法(二) ... [详细]
  • 本文详细介绍了Elasticsearch中的分页查询机制,包括基本的分页查询流程、'from-size'浅分页与'scroll'深分页的区别及应用场景,以及两者在性能上的对比。 ... [详细]
  • 从键盘输入年、月、日,要求输出当前日期为当年的第多少天。今天凯凯君又去参加了笔试,碰到了这样一个题目,从键盘输入年、月、日,要求输出当前日期为当年的第多少天。面对这个题目你首先想到 ... [详细]
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社区 版权所有