2017-04-07 9 views
-2

今では積分計算機で作業しています.yをx ** 2 + x * 2 + 2それは動作を停止します。私のプログラムは、y = x ** 2 + 2で動作するようにプロンプ​​トを出しますが、y = x ** 2 + x * 2 + 2では動作しません。数式に1 x以上の与えられた数式が与えられたときに積分計算機が動かない

import math as math 

x0 = 0                      
x1 = 0                      

def func(y, x):                    
    return eval(y) 

def func2(z, x):                    
    return eval(z) 

def func3(c, d):   
    a = 0.0                     
    for i in range(1, n+1):                 
     x0 = a + (i-1) * dx                  
     Ai = dx * (c + d)/ 2.               
     a = a + Ai                  
    return a 

y = str(raw_input("Function 1: "))              
z = str(raw_input("Function 2: "))           

a = float(input("Left boundary: "))              
b = float(input("Right boundary: "))              
dx = float(input("Trapezoid width: "))              

n = int((b - a)/dx)                

Area2 = func3(func(y, x0), func(y, x1))                    
Area3 = func3(func2(z, x0), func2(z, x1)) 

Area4 = Area2 - Area3 
if Area4 < 0: 
    Area4 = Area3 - Area2 

print "Area = ", Area4                 
+0

必要なものは不明ですので、改訂してください。 –

+0

どの意味で不明ですか?私はy = x \ ** 2 + 2 z = x \ ** 2に対して正しい結果をもたらす理由を理解する人を尋ねていますが、y = x \ ** 2 + 2x + 2 z = xではそうではありません\ ** 2 – Meh

+0

@Mehあなたのコードをデバッグしようとしましたか? – nemo

答えて

0
import math as math 

x0 = 0                      
x1 = 0                 

def f(function, x): 
    function = eval(function) 
    return function 

def func3(b, a, func):   
    area = 0.0 
    dx = (b - a)/n             
    for i in range(1, n+1):                 
     x0 = a + (i-1) * dx 
     x1 = a + i*dx 
     Ai = dx * (f(func, x0) + f(func, x1))/ 2.               
     area = area + Ai                  
    return area 

y = str(input("Function 1: "))              
z = str(input("Function 2: "))           

a = float(input("Left boundary: "))              
b = float(input("Right boundary: "))              
n = int(input("Trapezoid width: "))              


Area2 = func3(b, a, y)                    
Area3 = func3(b, a, z) 

Area4 = Area2 - Area3 
if Area4 < 0: 
    Area4 = Area3 - Area2 

print "Area = ", Area4 

は、この多かれ少なかれ、あなたがやりたいことですか?

関連する問題