为什么我不能用变量定义代码的上限? - 数值积分法

时间:2018-03-27 16:24:09

标签: python

我对Python比较新,所以我的代码非常简单 我有一个项目来编写使用矩形规则近似积分的代码,然后是梯形规则:

    a = float(input('Lower limit ---> '))

while True:
    b = float(input('Upper limit ---> '))

    if b > a:
        break
    elif a == b:
        print('Integral = 0.')
    else:
        print('Invalid input.')

N = float(input('Number of integral divisions ---> '))

h = float((b - a) / N)

print('For the integral in the range {} to {} with {} divisions, the step size is {}.'.format(a,b,N,h))


def f(x):
    return(np.exp(-x) * sin(x))

summation = (f(a) + f(b))

for points in range(a, N - 1):
    summation = summation + f(a + (points * h))

I = h * summation

print(I)

接近结束时,我尝试使用for循环从初始限制到减1步长数 我已将此定义为浮动,但我不断收到错误

  

TypeError:' float' object不能解释为整数。

任何想法如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

function ajax_genre_filter() { $query_data = $_GET; $genre_terms = ( $query_data[ 'genres' ] ) ? explode( ',', $query_data[ 'genres' ] ) : false; $book_args = array( 'post_type' => 'book', 'posts_per_page' => 2, 'year' => $genre_terms, ); $book_loop = new WP_Query( $book_args ); if ( $book_loop->have_posts() ): while ( $book_loop->have_posts() ): $book_loop->the_post(); get_template_part( 'content' ); endwhile; echo $query_data; else : get_template_part( 'content-none' ); endif; wp_reset_postdata(); die(); } ab是浮点数。 N不允许其参数为浮点数,因此您需要将它们转换为range

int

答案 1 :(得分:0)

错误消息明确指出您正在使用需要整数的浮点数。

阅读range()的文档 - 您认为什么导致能够用浮动做什么?

在1和2之间有无限的浮点数 - 如果你考虑浮点数的分辨率仍然很多 - python应该如何能够将它们全部作为范围给你?

答案 2 :(得分:0)

当您收集aN个变量时,可以在float中对其进行转换:

a = float(input('Lower limit ---> '))
N = float(input('Number of integral divisions ---> '))

然后您尝试从a迭代到N,但我们假设a=0.42n=3.14
你觉得python的表现如何?

print([x for x in range(0.42,3.14)]) # Raise TypeError: 'float' object cannot be interpreted as a

所以你必须将你的浮点转换成整数(a = int(a), N = int(N)):

print([x for x in range(0,3)]) # prints [0, 1, 2]

或者您可以使用numpy,并定义2个浮点值以及它们之间的步骤:

import numpy as np
np.arange(0.0, 1.0, 0.1)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])