目录 1、题目描述 2、代码实现 3、运行结果 1、题目描述 令f(x)=-x^2+2x,用python编程求解y≤f(x)和y≥0的交集所形成的区域S的面积。方法是:把区间[0,2]分成n个
目录
1、题目描述
2、代码实现
3、运行结果
1、题目描述
令f(x)=-x^2+2x,用python编程求解y≤f(x)和y≥0的交集所形成的区域S的面积。方法是:把区间[0,2]分成n个长度相同的小区间,用小区间的矩形的面积近似代表相应原图形的面积,如在区间[a,b]上高为(f(a)+f(b))/2的矩形代表f(x)在区间[a,b]的曲面。所有这些小矩形的面积之和S(n)可作为S的近似值。当n足够大时,其误差足够小。用迭代法,随着n的增大,当|s(n+1)-s(n)|<0. 000001时,即认为s(n+1)等于S。
要求:不能用积分公式直接计算。
输入:(无)
输出:面积是:1.333333
提示:
1. n可从20开始,n每增加1,S(n)都要重新计算。原理是当S(n+1)对S(n)的改善足够小时(此处为0. 000001),认为找到了所求面积。
2.使用绝对值函数abs前,需执行语句from math import *
函数图像
2、代码实现
#!/usr/bin/env python# -*- coding:utf-8 -*-
# 定积分函数,可以修改
def fx(x):
return -x ** 2 + 2 * x
# 定义第i个区间的中点值,即定义积分变量
def middle(a, b, n, i):
return a + i * (b - a) / n;
# 定义每个小区间的间隔差,即将范围分成n个等区间
def cha(a, b, n):
return (b - a) / n;
# 函数体
def fun():
# 抛物线与x轴相交于a(0, 0), b(0, 2)
a = 0
b = 2
# 执行次数,次数越大,结果越近真实数值
n = 100000
sum = 0
e = cha(a, b, n)
for i in range(20, n):
x = middle(a, b, n, i)
sum += fx(x)
print("面积是:%f" % (sum * e))
if __name__ == '__main__':
fun()