Python积分计算器不显示值

如何解决Python积分计算器不显示值

我制作了一个计算器,可以近似任何给定的函数作为输入。他们后来我想让它计算一个积分,但是在写完之后:

function    = str(input("The function that must be expanded and integrated: "))

它不打印数字,而是一个值。这是我的代码:

from sympy.functions import sin,cos,tan
from sympy.abc import x
from sympy import *
from sympy import series
from math import *
function    = str(input("The function that must be expanded and integrated: "))
x0          = int(input("Point of development: "))
n           = int(input("Amount of expressions: "))

print(series(function,x,x0,n))

N = int(input("Amount of summs (Bigger number is more accurate but takes longer time): "))
a = int(input("Integrate from: "))
b = int(input("Integrate to: "))

# We will use the midpoint method to integrate the function

def integrate(N,a,b):
    def f(x):
        return series(function,n)
    value=0
    value=2
    for n in range(1,N+1):
        value += f(a+((n-(1/2))*((b-a)/N)))
    value2 = ((b-a)/N)*value
    return value2

print("...................")
print("Here is your answer: ")
print(integrate(N,b))

我认为是因为我的输入是字符串。但是我不能选择输入为整数,因为exp(-x**2)不是整数。如果是这种情况,如何在计算器中输入任何函数并仍然获得值?

解决方法

您的代码中存在一些重大问题:

  • integrate内,您正在使用局部变量n,但是在f(x)内,您认为它是全局变量n(但是使用了局部变量,这就是只需在n内打印f(x))。 x作为f(x)中的全局变量和参数也是如此。如果要在同一范围内使用全局变量和局部变量,请不要使用相同的名称。
  • f(x)的返回值是sympy形式,而不是单个值,这就是为什么要获得所得到的输出的原因。

经过重构并使用subsremoveO

from sympy.functions import sin,cos,tan
from sympy.abc import x
from sympy import series

function    = str(input("The function to be expanded and integrated: "))
x0          = int(input("Point of development: "))
n           = 1 + int(input("Degree: "))
# input 0 -> n=1 -> constant  (1 term,constant)
# input 1 -> n=2 -> linear    (2 terms,constant + linear)
# input 2 -> n=3 -> quadratic (3 terms,constant + linear + quadratic)
# ...

print(series(function,x,x0,n))

N = int(input("Amount of summs (Bigger number is more accurate but takes longer time): "))
a = int(input("Integrate from: "))
b = int(input("Integrate to: "))

# We will use the midpoint method to integrate the function

def integrate(function,n,N,a,b): # using the approach with all variables as parameters
    taylor = series(function,n) # the same expression for the function,create it once
    taylor = taylor.removeO() # do not use O term (may corrups subs below)
    dx = (b-a)/N # also computed just once
    def f(v):
        return taylor.subs(x,v) # taylor is expression,return value is float evaluated with substituted x by v
    return dx * sum(f(a+(i+1/2)*dx) for i in range(N)) # simple sum function,can be rewriten using a for loop

print("...................")
print("Here is your answer: ")
print(integrate(function,b))

x**2x=0集成的x=2的某些输出在x=1处扩展。分析结果为8/3=2.6666666...

x**2,1,5,2 => 2.0 # constant approximation
x**2,2 => 2.0 # linear approximation
x**2,2,2 => 2.64 # quadratic approximation - exact function
x**2,10,2 => 2.66
x**2,100,2 => 2.6666
x**2,1000,2 => 2.666666

您可以使用lambdify to "convert a SymPy expression into a function that allows for fast numeric evaluation"。对于N=1000而言,提速非常重要。

from sympy.utilities.lambdify import lambdify
def integrate(function,b):
    taylor = series(function,n)
    taylor = lambdify(x,taylor.removeO()) # here
    dx = (b-a)/N
    def f(v):
        return taylor(v) # here
    return dx * sum(f(a+(i+1/2)*dx) for i in range(N))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res