python勒让德函数 python 函数def
勒让德函数为什么正交
Legendre多项式
目前创新互联已为上1000家的企业提供了网站建设、域名、网页空间、网站托管运营、企业网站设计、鄠邑网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
勒让德方程的解可写成标准的幂级数形式。当方程满足 |x| 1 时,可得到有界解(即解级数收敛)。并且当n 为非负整数,即n = 0, 1, 2,... 时,在x = ± 1 点亦有有界解。这种情况下,随n 值变化方程的解相应变化,构成一组由正交多项式组成的多项式序列,这组多项式称为勒让德多项式(Legendre polynomials)。1
定义
数学上,勒让德函数指以下勒让德微分方程的解:
为求解方便一般也写成如下施图姆-刘维尔形式(Sturm-Liouville form):
上述方程及其解函数因法国数学家阿德里安-马里·勒让德而得名。勒让德方程是物理学和其他技术领域常常遇到的一类常微分方程。当试图在球坐标中求解三维拉普拉斯方程(或相关的其他偏微分方程)时,问题便会归结为勒让德方程的求解。
勒让德方程的解可写成标准的幂级数形式。当方程满足 |x| 1 时,可得到有界解(即解级数收敛)。并且当n为非负整数,即n= 0, 1, 2,... 时,在x= ± 1 点亦有有界解。这种情况下,随n值变化方程的解相应变化,构成一组由正交多项式组成的多项式序列,这组多项式称为勒让德多项式(Legendre polynomials)。
勒让德多项式Pn(x)是n阶多项式,可用罗德里格公式表示为:
正交性
勒让德多项式的一个重要性质是其在区间 −1 ≤x≤ 1 关于L内积满足正交性,即:1
其中 δmn为克罗内克δ记号,当m=n时为1,否则为0。 事实上,推导勒让德多项式的另一种方法便是关于前述内积空间对多项式{1,x,x, ...}进行格拉姆-施密特正交化。之所以具有此正交性是因为如前所述,勒让德微分方程可化为标准的Sturm-Liouville问题:
其中本征值 λ 对应于原方程中的n(n+1)。
其他性质奇偶性
当阶数k为偶数时, 为偶函数;当阶数k为奇数时, 为奇函数,即:2
递推关系
相邻的三个勒让德多项式具有三项递推关系式:
另外,考虑微分后还有以下递推关系:
其中最后一个式子在计算勒让德多项式的积分中较为有用。
移位多项式
移位勒让德多项式的正交区间定义在[0,1]上,即:
其显式表达式为:
相应的罗德里格公式为:
分数阶多项式
分数阶勒让德多项式通过将分数阶微分(定义参见分数微积分理论)和通过Γ函数定义的非整数阶乘代入罗德里格公式中来定义。
极限关系
大Q勒让德多项式→勒让德多项式
令大q雅可比多项式中的c=0,即勒让德多项式
令连续q勒让德多项式q-1得勒让德多项式
小q勒让德多项式→勒让德多项式
本词条内容贡献者为:
王伟 - 副教授 - 上海交通大学
责任编辑:科普云
精彩推荐
这个技术很有来头——三维GIS
你不知道的航天新知识——立方体卫星技术
双乙酸钠对人体有害吗?
蚝油瓶的设计为什么一直不改进?
你知道吗?水下也有三角洲
你听说过农业气象灾害监测预测技术吗?
如下的用matlab进行编程的勒让德函数,求解释,看不懂什么意思。如:p和t分别代表什么?p(1,:)是什么意思
找本数学物理方法的书,弄好两件事:
1.勒让德函数与缔合勒让德函数,MATLAB的legendre函数是后者。
2.顺便找一下勒让德函数的递推公式。
我刚才粗看了一下,可能P(2,:),t(2,:)的表达式有点问题。
ang应当是角度(弧度制),nmax是勒让德多项式的最高次项(它是无穷多项的)
chpt.3 补充——勒让德变换(Legendre transform))
在数学中,我们经常会将一个函数 表示为关于其导数 的函数形式。如果令 ,函数 则是我们变换后的函数;它是函数 的勒让德变换。
勒让德变换是自身的逆变换。
勒让德变换是一个求最大值的过程。
只有当目标函数本身是凸函数时( )变换才有明确定义。
勒让德变换点和线之间二象关系的应用。即, 的函数关系也可以被等价地表示成点集 或者有确定斜率和截距的切线家族。
推广: 勒让德-芬切尔变换(Legendre-Fenchel transform) 。
定义一
其中 表示对变量 的最小上界。(当存在最大值时,即为最大值)
定义二
将 最大化,需:
所以最值的条件为:
因为 为 凸函数(convex function) ,该值亦是最大值:
根据最值条件,求变量 关于 的反函数 ,再代入 得到:
这是定义一的具体表述。
定义三
如果函数 和 的一阶导互为反函数:
它们被称为彼此的勒让德变换。其中 是微分算符。
该定义很好验证,
结合最值条件,就可以得到
根据上式不难看出, 与 的唯一性只精确到一个可加常数,所以常数的确定通常需要额外的约束条件:
(i)标准型
(ii)非标准型
后者多用于热力学。
表达式 是一条经过原点并与原函数在点 相切的直线。最大化 意味着我们要寻找在原函数上一点 ,使得
最大,因此切线与 轴的截距必须位于最下方。
点 在函数上,设切线方程为
利用斜率表达式,反求
代入切线方程,求解截距
其中 是 的勒让德变换。
可将切线表示为含有参数 的形式:
或者隐性地写成:
定义
条件
证明
对等式两边求从 到 的积分:
左边根据微积分基本原理得到
做代换
于是
对右边使用分部积分法
进一步整理得到
观察,等式左边是仅依赖 的表达式,而右边是仅依赖 的表达式,两者相等只可能双方均为常数:
令 ,整理后便可得到
并且
在热力学中,我们经常将一些物理量(内能,自由能等)用新的变量来表示。
一般技巧如下:
1. 找出新变量。根据勒让德变换的定义,新变量是原函数对其某原变量的偏导。
2. 反求原变量关于新变量的表达式。
3. 写出函数原变量与新变量的乘积。
4. 将的得到的积与原函数做差。
(例)
内能通常可被写成关于系统的熵(或常规熵),体积以及微粒个数的函数
根据压强的定义
所以当系统的熵和微粒数固定时,存在从函数 到函数 的勒让德变换(非标准型)。新变量是体积 。
利用压强定义反求 ,再执行步骤 3,4 便可得到
物理学家将该函数称为系统的 焓(enthalpy) 。
连带勒让德函数和球函数的关系
球函数
球函数 (spherical function)通常指连带勒让德方程的解,亦即连带勒让德函数。有时也把面调和函数称为球函数。在球坐标系中用分离变量法解拉普拉斯方程或亥姆霍兹方程时可出现这些函数。
基本信息
外文名 spherical function
定义 指连带勒让德方程的解
领域 数学
学科
函数
基本介绍
在现代数学中,球函数及其推广已被广泛应用于拓扑群的酉表示。
连带勒让德方程
连带勒让德方程是数学物理中常见的常微分方程之一。其形式为:
作变换:
又可写成:
此方程有三个奇点(),且均为正则奇点,故可化为超几何方程。
在球坐标系下将拉普拉斯方程或亥姆霍兹方程分离变量时,可出现连带勒让德方程。
调和函数
称定义在R 的开集U上的复值函数f是调和的,如果它在U上二次连续可微,且它经拉普拉斯算子作用后为零:。
可以证明,U上的分布T满足,则T是解析且调和的函数。为使在U上局部可积的函数f是调和的,必须且只须对U的任一点a及对任一使以a为中心、α为半径的闭球含于U中的正实数α,等于f在球B上的平均值。或等于f在以a为中心、α为半径的球面上的平均值。由此容易推出:定义在连通开集U上、使 |f|在U的一点达到其极大值的调和函数是常值函数(极大值原理)。
C之开集U上的所有全纯函数是调和的,它们的实部与虚部也是调和的。反之,如果U是C的单连通开集,则对任一实值调和函数f,存在U上的全纯函数g,使。
极大值原理可推广到称为次调和函数的更一般的函数类;这是一些定义在U上、在中取值的上半连续函数,而对U的任一点a及对任一使以a为中心、α为半径的闭球B含在U中的正实数α,小于f在B上的平均值。
R的开区间上的次调和实值函数正好是这一区间上的凸函数。
对C之开集U上的任一全纯函数f,函数是次调和的。因而C之开集U上的次调和函数的研究能应用于全纯函数的研究。将这种方法推广于研究之开集U上的全纯函数情况,导致引入一个函数类,称为多元次调和函数类;这是一些定义在U上,在中取值的上半连续函数,且对C的任一直线D,f在上的限制是次调和函数。
分离变量法
求偏微分方程定解问题显式解的基本方法。在解线性偏微分方程的混合问题或边值问题时,先求满足边界条件的变量分离的特解,再利用叠加原理,做这些特解的线性组合,得到定解问题的解,这就是分离变量法。
区分线性与非线性的一条基本准则。令x为系统的输入变量,y为系统的输出变量,为输出对输入的响应函数。该系统满足叠加原理,指以下两个条件同时成立:
1.可加性。。
2.齐次性。 (k为任何常实数)。
凡同时满足可加性和齐次性要求的是线性系统,至少一个要求不满足的是非线性系统。
如何用python实现含有虚拟自变量的回归
利用python进行线性回归
理解什么是线性回归
线性回归也被称为最小二乘法回归(Linear Regression, also called Ordinary Least-Squares (OLS) Regression)。它的数学模型是这样的:
y = a+ b* x+e
其中,a 被称为常数项或截距;b 被称为模型的回归系数或斜率;e 为误差项。a 和 b 是模型的参数。
当然,模型的参数只能从样本数据中估计出来:
y'= a' + b'* x
我们的目标是选择合适的参数,让这一线性模型最好地拟合观测值。拟合程度越高,模型越好。
那么,接下来的问题就是,我们如何判断拟合的质量呢?
这一线性模型可以用二维平面上的一条直线来表示,被称为回归线。
模型的拟合程度越高,也即意味着样本点围绕回归线越紧密。
如何计算样本点与回归线之间的紧密程度呢?
高斯和勒让德找到的方法是:被选择的参数,应该使算出来的回归线与观测值之差的平房和最小。用函数表示为:
这被称为最小二乘法。最小二乘法的原理是这样的:当预测值和实际值距离的平方和最小时,就选定模型中的两个参数(a 和 b)。这一模型并不一定反映解释变量和反应变量真实的关系。但它的计算成本低;相比复杂模型更容易解释。
模型估计出来后,我们要回答的问题是:
我们的模型拟合程度如何?或者说,这个模型对因变量的解释力如何?(R2)
整个模型是否能显著预测因变量的变化?(F 检验)
每个自变量是否能显著预测因变量的变化?(t 检验)
首先回答第一个问题。为了评估模型的拟合程度如何,我们必须有一个可以比较的基线模型。
如果让你预测一个人的体重是多少?在没有任何额外信息的情况下,你可能会用平均值来预测,尽管会存在一定误差,但总比瞎猜好。
现在,如果你知道他的身高信息,你的预测值肯定与平均值不一样。额外信息相比平均值更能准确地预测被预测的变量的能力,就代表模型的解释力大小。
上图中,SSA 代表由自变量 x 引起的 y 的离差平方和,即回归平方和,代表回归模型的解释力;SSE 代表由随机因素引起的 y 的离差平方和,即剩余平方和,代表回归模型未能解释的部分;SST 为总的离差平方和,即我们仅凭 y 的平均值去估计 y 时所产生的误差。
用模型能够解释的变异除以总的变异就是模型的拟合程度:
R2=SSA/SST=1-SSE
R2(R 的平方)也被称为决定系数或判定系数。
第二个问题,我们的模型是否显著预测了 y 的变化?
假设 y 与 x 的线性关系不明显,那么 SSA 相对 SSE 占有较大的比例的概率则越小。换句话说,在 y 与 x 无线性关系的前提下,SSA 相对 SSE 的占比越高的概率是越小的,这会呈现一定的概率分布。统计学家告诉我们它满足 F 分布,就像这样:
如果 SSA 相对 SSE 占比较大的情况出现了,比如根据 F 分布,这个值出现的概率小于 5%。那么,我们最好是拒绝 y 与 x 线性关系不显著的原始假设,认为二者存在显著的线性关系较为合适。
第三个问题,每个自变量是否能显著预测因变量的变化?换句话说,回归系数是否显著?
回归系数的显著性检验是围绕回归系数的抽样分布(t 分布)来进行的,推断过程类似于整个模型的检验过程,不赘言。
实际上,对于只有一个自变量的一元线性模型,模型的显著性检验和回归系数的检验是一致的,但对于多元线性模型来说,二者就不能等价了。
利用 statsmodels 进行最小二乘回归
#导入相应模块
In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: import statsmodels.api as sm
#将数据导入 pandas 的 dataframe 对象,第一列(年份)作为行标签
In [4]: df=pd.read_csv('/Users/xiangzhendong/Downloads/vincentarelbundock-Rdatasets-1218370/csv/datasets/longley.csv', index_col=0)
#查看头部数据
In [5]: df.head()
Out[5]:
GNP.deflator GNP Unemployed Armed.Forces Population Year \
1947 83.0 234.289 235.6 159.0 107.608 1947
1948 88.5 259.426 232.5 145.6 108.632 1948
1949 88.2 258.054 368.2 161.6 109.773 1949
1950 89.5 284.599 335.1 165.0 110.929 1950
1951 96.2 328.975 209.9 309.9 112.075 1951
Employed
1947 60.323
1948 61.122
1949 60.171
1950 61.187
1951 63.221
#设置预测变量和结果变量,用 GNP 预测 Employed
In [6]: y=df.Employed #结果变量
In [7]: X=df.GNP #预测变量
#为模型增加常数项,即回归线在 y 轴上的截距
In [8]: X=sm.add_constant(X)
#执行最小二乘回归,X 可以是 numpy array 或 pandas dataframe(行数等于数据点个数,列数为预测变量个数),y 可以是一维数组(numpy array)或 pandas series
In [10]: est=sm.OLS(y,X)
使用 OLS 对象的 fit() 方法来进行模型拟合
In [11]: est=est.fit()
#查看模型拟合的结果
In [12]: est.summary()
Out[12]:
#查看最终模型的参数
In [13]: est.params
Out[13]:
const 51.843590
GNP 0.034752
dtype: float64
#选择 100 个从最小值到最大值平均分布(equally spaced)的数据点
In [14]: X_prime=np.linspace(X.GNP.min(), X.GNP.max(),100)[:,np.newaxis]
In [15]: X_prime=sm.add_constant(X_prime)
#计算预测值
In [16]: y_hat=est.predict(X_prime)
In [17]: plt.scatter(X.GNP, y, alpha=0.3) #画出原始数据
#分别给 x 轴和 y 轴命名
In [18]: plt.xlabel("Gross National Product")
In [19]: plt.ylabel("Total Employment")
In [20]: plt.plot(X_prime[:,1], y_hat, 'r', alpha=0.9) #添加回归线,红色
多元线性回归(预测变量不止一个)
我们用一条直线来描述一元线性模型中预测变量和结果变量的关系,而在多元回归中,我们将用一个多维(p)空间来拟合多个预测变量。下面表现了两个预测变量的三维图形:商品的销量以及在电视和广播两种不同媒介的广告预算。
数学模型是:
Sales = beta_0 + beta_1*TV + beta_2*Radio
图中,白色的数据点是平面上的点,黑色的数据点事平面下的点。平面的颜色是由对应的商品销量的高低决定的,高是红色,低是蓝色。
利用 statsmodels 进行多元线性回归
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: import statsmodels.api as sm
In [4]: df_adv=pd.read_csv('g.csv',index_col=0)
In [6]: X=df_adv[['TV','Radio']]
In [7]: y=df_adv['Sales']
In [8]: df_adv.head()
Out[8]:
TV Radio Newspaper Sales
1 230.1 37.8 69.2 22.1
2 44.5 39.3 45.1 10.4
3 17.2 45.9 69.3 9.3
4 151.5 41.3 58.5 18.5
5 180.8 10.8 58.4 12.9
In [9]: X=sm.add_constant(X)
In [10]: est=sm.OLS(y,X).fit()
In [11]: est.summary()
Out[11]:
你也可以使用 statsmodels 的 formula 模块来建立多元回归模型
In [12]: import statsmodels.formula.api as smf
In [13]: est=smf.ols(formula='Sales ~ TV + Radio',data=df_adv).fit()
处理分类变量
性别或地域都属于分类变量。
In [15]: df= pd.read_csv('httd.edu/~tibs/ElemStatLearn/datasets/SAheart.data', index_col=0)
In [16]: X=df.copy()
利用 dataframe 的 pop 方法将 chd 列单独提取出来
In [17]: y=X.pop('chd')
In [18]: df.head()
Out[18]:
sbp tobacco ldl adiposity famhist typea obesity alcohol \
row.names
1 160 12.00 5.73 23.11 Present 49 25.30 97.20
2 144 0.01 4.41 28.61 Absent 55 28.87 2.06
3 118 0.08 3.48 32.28 Present 52 29.14 3.81
4 170 7.50 6.41 38.03 Present 51 31.99 24.26
5 134 13.60 3.50 27.78 Present 60 25.99 57.34
age chd
row.names
1 52 1
2 63 1
3 46 0
4 58 1
5 49 1
In [19]: y.groupby(X.famhist).mean()
Out[19]:
famhist
Absent 0.237037
Present 0.500000
Name: chd, dtype: float64
In [20]: import statsmodels.formula.api as smf
In [21]: df['famhist_ord']=pd.Categorical(df.famhist).labels
In [22]: est=smf.ols(formula="chd ~ famhist_ord", data=df).fit()
分类变量的编码方式有许多,其中一种编码方式是虚拟变量编码(dummy-encoding),就是把一个 k 个水平的分类变量编码成 k-1 个二分变量。在 statsmodels 中使用 C 函数实现。
In [24]: est=smf.ols(formula="chd ~ C(famhist)", data=df).fit()
In [26]: est.summary()
Out[26]:
处理交互作用
随着教育年限(education)的增长,薪酬 (wage) 会增加吗?这种影响对男性和女性而言是一样的吗?
这里的问题就涉及性别与教育年限的交互作用。
换言之,教育年限对薪酬的影响是男女有别的。
#导入相关模块
In [1]: import pandas as pd
In [2]: import numpy as np
In [4]: import statsmodels.api as sm
#导入数据,存入 dataframe 对象
In [5]: df=pd.read_csv('/Users/xiangzhendong/Downloads/pydatafromweb/wages.csv')
In [6]: df[['Wage','Education','Sex']].tail()
Out[6]:
Wage Education Sex
529 11.36 18 0
530 6.10 12 1
531 23.25 17 1
532 19.88 12 0
533 15.38 16 0
由于性别是一个二分变量,我们可以绘制两条回归线,一条是 sex=0(男性),一条是 sex=1(女性)
#绘制散点图
In [7]: plt.scatter(df.Education,df.Wage, alpha=0.3)
In [9]: plt.xlabel('education')
In [10]: plt.ylabel('wage')
#linspace 的作用是生成从最小到最大的均匀分布的 n 个数
In [17]: education_linspace=np.linspace(df.Education.min(), df.Education.max(),100)
In [12]: import statsmodels.formula.api as smf
In [13]: est=smf.ols(formula='Wage ~ Education + Sex', data=df).fit()
In [18]: plt.plot(education_linspace, est.params[0]+est.params[1]education_linspace+est.params[2]0, 'r')
In [19]: plt.plot(education_linspace, est.params[0]+est.params[1]education_linspace+est.params[2]1, 'g')
以上两条线是平行的。这是因为分类变量只影响回归线的截距,不影响斜率。
接下来我们可以为回归模型增加交互项来探索交互效应。也就是说,对于两个类别,回归线的斜率是不一样的。
In [32]: plt.scatter(df.Education,df.Wage, alpha=0.3)
In [33]: plt.xlabel('education')
In [34]: plt.ylabel('wage')
#使用*代表我们的回归模型中除了交互效应,也包括两个变量的主效应;如果只想看交互效应,可以用:代替,但通常不会只看交互效应
In [35]: est=smf.ols(formula='Wage ~ Sex*Education', data=df).fit()
In [36]: plt.plot(education_linspace, est.params[0]+est.params[1]0+est.params[2]education_linspace+est.params[3]0education_linspace, 'r')
In [37]: plt.plot(education_linspace, est.params[0]+est.params[1]1+est.params[2]education_linspace+est.params[3]1education_linspace, 'g')
参考资料:
DataRobot | Ordinary Least Squares in Python
DataRoboe | Multiple Regression using Statsmodels
AnalyticsVidhya | 7 Types of Regression Techniques you should know!
分享名称:python勒让德函数 python 函数def
标题路径:http://pwwzsj.com/article/docdogi.html