求积分方法总结(转载总结)
2008-12-23 12:10
211 查看
1、随机落入点法(蒙特卡罗法)
下面程序是求x平方在0-1积分的小例子,原理就是向一个定积分规定的区域内随机投入无数点,统计投入在函数曲线与坐标轴之间的点数比总点数乘此块区域面积就是积分。针对复杂积分,需要扩展的地方还是很多的,例如,函数不单调(统计总区域面积就麻烦多了),函数跨越上下象限(需要对坐标求下绝对值就可以)。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Jifen
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
double jieguo = jifen(0, 1, Convert.ToInt32(textBox1.Text));//求0到1的积分,textBox1.Text是投点个数,默认是999999就比较准确了
textBox2.Text = Convert.ToString(jieguo);
}
private double jifen(int x, int y, int count)
{
double a;
double b;
int fenzi=0;
Random rd = new Random();//随机对象
for (int i = 0; i < count; i++)
{
a = x+(y-x)*rd.NextDouble();//得到随机投入的横坐标
b = (y * y) * rd.NextDouble();//得到随机投入的纵坐标
if (b < a * a)//求x平方积分,这里判断投点是否在其函数曲线下面
fenzi++;//是的话计数
}
return (double)fenzi / count * (y - x) * (y * y);//落入函数曲线下面的点数比总点数乘此块区域面积就是积分
}
}
}
下面程序是求x平方在0-1积分的小例子,原理就是向一个定积分规定的区域内随机投入无数点,统计投入在函数曲线与坐标轴之间的点数比总点数乘此块区域面积就是积分。针对复杂积分,需要扩展的地方还是很多的,例如,函数不单调(统计总区域面积就麻烦多了),函数跨越上下象限(需要对坐标求下绝对值就可以)。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Jifen
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
double jieguo = jifen(0, 1, Convert.ToInt32(textBox1.Text));//求0到1的积分,textBox1.Text是投点个数,默认是999999就比较准确了
textBox2.Text = Convert.ToString(jieguo);
}
private double jifen(int x, int y, int count)
{
double a;
double b;
int fenzi=0;
Random rd = new Random();//随机对象
for (int i = 0; i < count; i++)
{
a = x+(y-x)*rd.NextDouble();//得到随机投入的横坐标
b = (y * y) * rd.NextDouble();//得到随机投入的纵坐标
if (b < a * a)//求x平方积分,这里判断投点是否在其函数曲线下面
fenzi++;//是的话计数
}
return (double)fenzi / count * (y - x) * (y * y);//落入函数曲线下面的点数比总点数乘此块区域面积就是积分
}
}
}
相关文章推荐
- [转载]网友总结的活用支付宝跳过ATM费用的方法。
- (转载)ASP.NET页面刷新方法总结
- [转载]Matlab中使用Plot函数动态画图方法总结
- [转载]海量数据处理:十道面试题与十个海量数据处理方法总结
- 八种常见的防盗链方法总结及分析(我转载的,写的真好,收藏了)
- Sql Server 生成连续日期的方法总结 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/GRANDTREE/archive/2009/06/16/4273129.aspx
- [转载]寻找第K大的数的方法总结
- C++操作mysql方法总结(3)[转载]
- <转载>DIV+CSS position定位方法总结
- 两种图片延迟加载的方法总结jquery.scrollLoading.js与jquery.lazyload.js---转载
- (转载)php数组删除元素各种方法总结
- [转载]八种常见的防盗链方法总结及分析
- LoadRunner出现error问题及解决方法总结[转载]
- C#发送Email邮件方法总结 (转载)
- 【转载】Android开发中,那些让你相见恨晚的方法、类或接口(第二弹,神总结)
- <转载>DIV+CSS position定位方法总结
- Java_类和对象(完美总结)_转载_覆盖和隐藏的区别,覆盖就不能使用了,而隐藏提供全局方法名或者全局变量名还可以使用
- 转载各种数据库的连接串(总结DSN的使用方法)http://hi.baidu.com/netwalker/home
- 【转载】MVC巧用枚举做权限管理 | NET开发中你可能会用到的常用方法总结 |学习 ASP.NET MVC
- Eclipse 闪退方法总结,转载只是为了收藏分享