首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >未求值函数的线性组合

未求值函数的线性组合
EN

Stack Overflow用户
提问于 2012-02-27 19:08:54
回答 2查看 873关注 0票数 1

我正在构建一个类,用于构造某种类型的近似函数(数学函数)。这个近似函数将是给定数量的基函数的线性组合,我将其存储在一个列表中,它将返回一个标量。该类的方法需要在每次迭代中更新我的近似函数,方法是将每个基函数与标量(不同基函数的不同标量)相乘,并形成和。换句话说,我需要通过形成基函数的线性组合并将我的近似函数设置为这个未计算的函数和来更新我的近似函数。

这个类的默认基数是一个多项式基,这是我用NumPy的poly1d class实现的。我形成线性组合的方式目前是

代码语言:javascript
运行
AI代码解释
复制
sum(self.basis[i]*self.coeffs[i] for i in range(self.dim))

其中(显然) self.basis是基函数列表,self.coeffs是与基函数相乘的标量列表,self.dim是基函数。这适用于poly1d类,但是,例如,如果我使用如下基数,则不起作用:

代码语言:javascript
运行
AI代码解释
复制
basis1 = [lambda x: float(x), lambda y: float(y)**2]

代码语言:javascript
运行
AI代码解释
复制
def x(y):
    return y
def x2(y):
    return y**2
basis2 = [x, x2]

Basis1给了我这个错误

代码语言:javascript
运行
AI代码解释
复制
TypeError: only length-1 arrays can be converted to Python scalars

Basis2给了我这个错误

代码语言:javascript
运行
AI代码解释
复制
TypeError: unsupported operand type(s) for *: 'function' and 'numpy.float64'

同样,使用

代码语言:javascript
运行
AI代码解释
复制
sum(itertools.imap(operator.mul, self.basis, self.lambdas))

适用于poly1d基础,但不适用于上面的其他基础,并给出相同的错误消息。

所以我的问题是:如何在Python语言中形成未计算函数的线性组合(使用或不使用NumPy)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-27 19:18:14

将函数基础与系数相结合的一种快速方法是python字典:

代码语言:javascript
运行
AI代码解释
复制
 f = lambda x : x+1
 g = lambda x : 2*x
 d = { f : 7, g : 3 }
 print(d)
 d[f]=8
 print(d)
 def app (d,x): return  np.sum([ v * k(x) for k,v in d.items() ] )
 print(app(d,0))

这将打印:

代码语言:javascript
运行
AI代码解释
复制
{<function <lambda> at 0x115e7dc08>: 7, <function <lambda> at 0x115e7de60>: 3}
{<function <lambda> at 0x115e7dc08>: 8, <function <lambda> at 0x115e7de60>: 3}
8

然后,您将需要派生Dict子类来处理所需的数学运算。

更简单的方法是将coef和function列表分开,只在coef列表上操作,直到需要计算为止。

票数 2
EN

Stack Overflow用户

发布于 2012-02-27 19:21:07

当数组为空,或者不是数组,或者是空的,或者是NaN,等等,那么可以尝试打印x和x2,并与和中的值进行比较。更难的数学通常可以拆分成原子操作,所以更容易用print调试这个东西,看看前一个操作的结果是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9470760

复制
相关文章
条件表达式的短路求值与函数的延迟求值
延迟求值是 .NET的一个很重要的特性,在LISP语言,这个特性是依靠宏来完成的,在C,C++,可以通过函数指针来完成,而在.NET,它是靠委托来完成的。如果不明白什么是延迟求值的同学,我们先看看下面的一段代码: static void TestDelayFunction() { TestDelayFunton1(true,trueFun3); } static void TestDelayFunton1(bool fla
用户1177503
2018/02/26
9740
条件表达式的短路求值与函数的延迟求值
printf函数的求值顺序问题
printf的参数,函数printf从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有从右边开始处理的。
ccf19881030
2019/04/29
1K0
eager evaluation (及早求值) & lazy evaluation (惰性求值)
及早求值,也被称为贪婪求值(greedy evaluation)或严格求值,是多数传统编程语言的求值策略。
JNingWei
2018/09/27
1.8K0
1453: [蓝桥杯2019初赛]数列求值
给定数列1, 1, 1, 3, 5, 9, 17, …,从第4 项开始,每项都是前3 项的和。求第20190324 项的最后4 位数字。
可爱见见
2020/02/25
8450
表达式求值
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #define ERROR 0 #define OK 1 typedef struct Stack { int *elements; int max_size, top_index; } Stack; void init(Stack *s, int length) { s->elements = (int *)malloc(sizeof(int) * length
小飞侠xp
2021/05/27
3610
Kotlin、Swift、Scala 的延迟求值
Kotlin 当中的 Lazy 想必大家都已经非常熟悉了,它其实承载的功能就是变量的延迟求值。今天我们同样来对比一下其他语言对于类似功能的实现。
bennyhuo
2020/06/16
1.8K0
[编程题] 奇怪的表达式求值代码
常规的表达式求值,我们都会根据计算的优先级来计算。比如*/的优先级就高于+-。但是小易所生活的世界的表达式规则很简单,从左往右依次计算即可,而且小易所在的世界没有除法,意味着表达式中没有/,只有(+, - 和 )。现在给出一个表达式,需要你帮忙计算出小易所在的世界这个表达式的值为多少 输入描述: 输入为一行字符串,即一个表达式。其中运算符只有-,+,。参与计算的数字只有0~9. 保证表达式都是合法的,排列规则如样例所示。
desperate633
2018/08/27
3490
短路求值问题
在昨天的文章中,我们已经提到了优先级与求值顺序无关(C语言运算符优先级),涉及到的还有短路求值(short-circuit evaluation)问题,接下来具体讲一下。
用户6755376
2020/01/16
1.1K0
短路求值问题
【Go】留意 Select 的预求值!
关键在于 recvAndSend 函数的 case ch1 <- <-ch2: 我们希望在一条 case 中从 chan2 中取出数据并放到 chan1 中,但事实上这样会导致死锁,虽然平时谁也不会写出这种神仙代码,但下面这个就很容易被写出来了:
JuneBao
2022/10/26
2110
ts函数可选参数-未使用—ESlint 校验
如果你在 TypeScript 函数中使用了可选参数,但是 ESLint 报错了,你可以通过以下方法进行解决:
程序员王天
2023/10/18
7380
表达式求值
本题主要考察对于数据结构栈的使用。我们可以定义两个栈,操作数栈和操作符号栈,依次扫描输入,处理结果。
用户7447819
2021/07/23
3630
练习7—数组求值
题目 编写程序,实现如下功能:一个学习小组有5个人,每个人有Math,C,Database三门课的考试成绩,求该组各科成绩的平均分及所有成绩的平均分并输出到屏幕。 解题步骤 (1)给出结构体; (2)分析变量; (3)计算总 / 各科成绩平均分; (4)输出结果; Java import java.util.Scanner; public class Demo { static class Student { private float Math; pri
攻城狮杰森
2022/06/03
2670
flink table窗口聚合的open函数未调用的bug分析
今天分析一下,flink table聚合udf AggregateFunction的open函数未被调用的bug。
Spark学习技巧
2019/12/25
2.2K0
C++求值顺序
结果可能是0 1或者是1 1. 因为虽然<<是左结合,但是对于那些没有明确规定运算对象的求值顺序的运算符而言,求值顺序就和优先级,以及结合律无关。 所以上面的式子是未定义的,即如果表达式指向并且修改了同一个对象,这样的行为就是未定义的
Enterprise_
2019/02/21
1.3K0
表达式求值
给一个可包含+、-、*、/运算符和()的四则运算表达式,返回该表达式值(规定所有除都会是整数结果)。
六月丶
2022/12/26
2710
表达式求值
表达式求值(1)
Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min(20,23)的值是20 ,add(10,98) 的值是108等等。经过训练,Dr.Kong设计的机器人卡多甚至会计算一种嵌套的更复杂的表达式。
书童小二
2018/09/03
6480
表达式求值
ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧。 比如输入:“1+2/4=”,程序就输出1.50(结果保留两位小数)
书童小二
2018/09/03
4800
表达式求值(中缀转后缀及后缀表达式求值)
因为比较懒,而刚好在网上看到画的还不错的图,所以就直接贴过来了哦。希望作者不要怪罪哦。。。 遇到a,直接输出:
全栈程序员站长
2022/09/10
7500
表达式求值(中缀转后缀及后缀表达式求值)
栈的应用——表达式求值
表达式求值问题可以说是一个经典问题。具体思路就是首先把输入的中缀表达式转换为后缀表达式,然后再根据后缀表达式进行计算求值。
AI那点小事
2020/04/18
6490
go语言select语句中的求值问题
这…这是欺负我不懂英文么…如此翻译,隐去了太多细节!要想理解这段话,我们用下图来对齐下概念:
跑马溜溜的球
2021/09/23
6660
go语言select语句中的求值问题

相似问题

Python函数未求值

10

Excel Countif函数未求值

25

带未求值参数的SymPy函数

13

指令中的编译函数未正确求值

11

Pandas中的线性组合函数

222
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文