在python中把方程参数设置为任意方程?def(self,f)

作者&投稿:东野朋 (若有异议请与网页底部的电邮联系)
使用python的sympy解符号方程组后,如何将结果带入之后的符号表达式~

Sympy是python中非常强大的符号运算库,可以以书写习惯表示数学表达式。下面介绍用Sympy求方程数值解的方法。
下面代码全部在
from sympy import *
init_printing(use_unicode=True) # 按书写习惯输出

下运行。
数学表达式的输入
首先声明符号:
x = symbols('x')

即计算机中的变量x代表数学表达式中的x。在后文输出中所有的x会显示为x。如果x=symbols('x0'),则输入的方程中所有x将在输出中以x0表示。
如果需要希腊字母
l, r = symbol('lambda rho')

l, r将分别以λ,ρ表示。可以在一个表达式中同时声明多个符号。
或者使用var()声明:
var('x')

与上面等效。
声明表达式:
f = (5/x)*(exp(x)-1)-exp(x)

此时若输出f可以看到书写习惯的表达式。由于表达式在markdown下显示不正常,在此不放置示例。注意f的类型是class 'sympy.core.add.Add'
求f(x)=0数值解
因为有的函数零点不止一个,因此在Sympy中解的输出为一个list。使用solve(表达式,自变量符号)可以解析地解方程:
s, = solve(f, x)

这里根据上面f的赋值,得到s为
LambertW(-5e**-5)+5

其中用了特殊函数表达。
我们需要求这个结果的数值近似,则输出
s.evalf()

得到输出
4.96511423174428

就是方程f(x)=0的数值解。

求给定自变量x值时函数f(x)的值 | 将表达式转化为函数
f.evalf(subs = {x:4.96})

得到f(4.96)的数值
0.141885450782171

如果需要以计算机函数的形式定义函数f(x),则可以使用lambdify()进行转化:
f_func = lambdify(x, f)

之后可以调用
f_func(4.96)

输出
0.141885450782

利用这个方法可以测试方程的数值算法,如使用sympy接口写牛顿法等。

def aaa(): s = 5 return sprint aaa() 或者:
def aaa(): global s s = 5aaa()print s要在函数外部访问函数的内部变量,要么使用return将其返回到外部,要么用global定义为全局变量。推荐前一种。
def只是定义函数,你还没有调用和执行该函数。此外,要在控制台输出,你可以在函数内部写上print s+3 ,然后调用函数aaa()。

或者定义一个类:
class aaa: s = 5b = aaa #初始化一个类的实例print b.s #当然,你也可以直接使用aaa.s

我的理解为:

方程参数》》把函数作为参数向一个函数传递

把函数当作参数直接用就可以,完全没有问题。

class paraFun():
    def fun1(self, f):
        p = [12,23,34]
        for i in range(len(p)):
            f(p[i])
            
    def fun2(self, num):
        print "fun2:", num
obj = paraFun()
obj.fun1(obj.fun2)
#fun2: 12
#fun2: 23
#fun2: 34


if __name__ == '__main__':
print(eval("12 * 23 +34"))
print(eval("12 - 23 / 34"))
print(eval("12 ** 23"))
可以用eval()函数,里面直接写string类型的表达式即可,放到函数里就是拼接字符串
附一个其他方法的小例子
# 函数的默认参数
def arithmetic(x=1, y=1, operator="+"):
result = {
"+": x + y,
"-": x - y,
"*": x * y,
"/": x / y
}
return result.get(operator) # 返回计算结果
print(arithmetic(1, 2))
print(arithmetic(1, 2, "-"))
print(arithmetic(y=3, operator="-"))
print(arithmetic(x=4, operator="-"))
print(arithmetic(y=3, x=4, operator="-"))


python一元一次方程
2、解释性 一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。运行程序的时候,连接\/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码...

python解一元二次方程
python解一元二次方程如下:我们先要了解一元二次方差的求法,然后逐步编写程序。方程为:ax^2+bx+c=0。我们先编写一个最简单的版本,我们成功的计算除了数值。但是先别觉得自己学会了,实际上,一个非常简单的一元二次方程求解,其实蕴含了大学问。如果我们把方程的系数进行变化,假设a=1,b=3,c...

python如何计算方程?
计算器算方程的方式如下:一、计算方式 打开计算器,确保它处于代数模式(algebraic mode)。输入方程,例如:3x + 5 = 14。按下等号键,计算器将把方程的左侧显示在屏幕上。按下solve键,然后输入未知数的值。按下等于键,计算器将显示方程的解。在Python中,我们也可以使用sympy库来解方程。例如,...

Python中的面向对象(进阶)
一、实例方法,类方法,静态方法 我们首先写一个类,里面包含这三种方法。可以看到,我们用到了两个装饰器。我们用类和实例分别调用下类方法 我们用类和实例分别调用下静态方法 静态方法其实就是把一个普通的函数写在类里,与直接在外层写一个函数是一样的,本质上是一个函数。为了方便理解,我们分别...

在Python中面向对象该如何编程
一.如何定义一个类在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法。1.什么是面向对象面向对象(oop)是一种抽象的方法来理解这个世界,世间万物都可以抽象成一个对象,一切事物都是由对象构成的。应用在编程中,是一种开发程序的方法,它将对象作为程序的基本...

python中,面向对象有哪些机制有利于代码复用?
在这个例子中,我们创建了一个包含两个不同类型的对象的列表,并使用循环对它们进行操作。由于它们都实现了 area 方法,所以我们可以使用相同的方式调用它们的方法,以计算它们的面积。3.组合(Composition):组合是将一个类作为另一个类的属性,从而实现代码复用的一种方法。例如,一个汽车类可以包含多个...

Python 魔法方法解析
本期,我们将学习Python中拥有一个很帅气的名称魔法方法,Letsgo~~1.魔法方法概述什么叫魔法方法?在Python中,定义以__双下划线开头结尾的方法,行内内部大家都统称为“magicmethod”。比如我们常见的构造方法、析构方法都是属于魔法方法中。在Python官方文档中,魔法方法分布比较分散,并且介绍时也无案例...

python输出由*组成的正方形
3、foriinrange(1,11):print(i)拓展:如果要输出1到100,可以使用for循环,将range()函数中的参数设置为(1,101)即可。4、在Python中,求1~10的平方和可以使用循环来实现,常见的循环有for循环和while循环。下面分别介绍这两种循环的实现方法。请问用python制作一个程序,使得你输入某一个数字a,便...

python中的列表中常用的方法有哪些,分别是什么作用?
首先,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型。创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。以下是列表最常用的方法:1.append() --- 向列表的...

python中**代表什么
很多标准库和第三方库也都是用C写的,运行速度非常快。5、免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。以上内容参考百度百科-Python ...

常宁市19759817866: 在python中把方程参数设置为任意方程?def(self,f) -
赖怡小儿: 我的理解为:方程参数》》把函数作为参数向一个函数传递 把函数当作参数直接用就可以,完全没有问题.class paraFun(): def fun1(self, f): p = [12,23,34] for i in range(len(p)): f(p[i]) def fun2(self, num): print "fun2:", num obj = paraFun() obj.fun1(obj.fun2)#fun2: 12#fun2: 23#fun2: 34

常宁市19759817866: eclipse 怎么调试python代码 -
赖怡小儿: 步骤 1、配置Eclipse 1.1、Run -> Debug Configurations1.2、右键Python Run -> New 1.3、配置新实例 1.3.1、选择Main标签,设置参数 设置Name为:fw; 选择Project为:fw工程; 选择Main Module为:manage.py :1.3.2、选择Arugment标签,...

常宁市19759817866: python中pow(x,y[,z])函数的使用 -
赖怡小儿: 你的语法有错误. 内置函数power(x, y[, z])中的x和y是必选参数,z是可选参数;如果使用了参数z,中括号必须去掉,即power(x,y,z),其结果是x的y次方再对z求余数,但是这种方式比power(x,y) % z的执行效率要高.你可以使用power(2, 4)或者power(2,4,3). power(2,4)=2的4次方=16; power(2,4,3)=2的4次方再模上3=16 % 3=1.

常宁市19759817866: python 中的range返回的是什么列表 -
赖怡小儿: # python # range(stop) 函数解析 # range(start, stop[, step])# 参数说明如下: # 首先参数必须都是整数 # start :如果没有设置该参数,默认值为0. # stop : # step :如果没有设置该参数,默认值为1.step 一定不能为0.# 返回一个纯数字列表list...

常宁市19759817866: 参数方程 x=1+4/5t y= - 1 - 3/5t (t在分数后面) t为参数 把它化成直线普通方程参数方程 x=1+4/5t y= - 1 - 3/5t (t在分数后面) t为参数 把它化成直线普通方程 要详细过程 -
赖怡小儿:[答案] 方法:消去参数t x=1+4/5t ,3x=3+12/5t y=-1-3/5t ,4y=-4-12/5t 两式相加得:3x+4y+1=0 答:

常宁市19759817866: Ulipad写python输入遇到问题了,总是把数据全输进去,才会有显示.是编辑器的问题吗,新手求指点啊 -
赖怡小儿: 按菜单“python-->设置参数...”,在参数窗口中,在Parameters处填入: -u(负U)

常宁市19759817866: 如何用python计算三元方程 -
赖怡小儿: 假如都是一次方程,且方程数量和未知数数量相等(都是3个),那么可以用消元法解决. 1. 将方程式格式化成 x + by + cz + d = 0:假如 x 的系数不是1,那么就都除以 x 的系数转换成1. 2. 于是三个方程组可以记成一个二维数组: [[1, b1, c1, d1], [1, b2, c2, d2], [1, b3, c3, d3],3. 剩下的就是如何把数学中的消元法翻译成 py 代码了,应该很简单.

常宁市19759817866: python中怎么在自定义函数调用另外一个函数中的参数 -
赖怡小儿: 有几种方法:1. 在写函数的时候传参进去,然后返回该参数.2. 在写函数里面将变量命名为global就可以全局调用了.

常宁市19759817866: python怎么实现方程组的解随参数变化 -
赖怡小儿: 不是很明确你需要做到什么程度,但基本可以通过以下两个手段得到:1. 手工解方程得到解析解,然后套入公式 2. 使用一些工具包例如numpy可以自动求解 以下都给出例子 import numpy as np import matplotlib.pyplot as pltplt.axis("equal")a...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网