自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 机器学习(Hands on)第二章修正版完整代码

前言最近尝试学习机器学习有关知识,随着Python版本的更新,《Hands-On Machine Learning with Scikit-Learn & TensorFlow》书中部分代码并不适用,根据百度查到的一些改动做了总结(具体改动部分已经忘记,想要了解细节的读者可以去书中自己比较),下面是第二章完整代码:代码import numpy as npimport osimport pandas as pdimport tarfilefrom six.moves import url

2022-04-07 14:37:42 1923

原创 C++养成教程(从入门到精通)

前言最近因工作需要学习C++,决定开创一个养成系的博客,和大家共同进步。之后我会把学习过程中的所有代码写入这篇博客里,由于中途出现的这一想法,所以更新内容会从中间部分开始,之后会陆续补充完善。...

2021-11-28 12:36:53 1605 1

原创 使用8、14、20节点6面体的立方体弹性固体的三维分析(python,有限元)

第十篇 使用8、14、20节点6面体的立方体弹性固体的三维分析引言本篇程序的整体路线基本与第七篇是类似的,所以大家可以以第七篇为参考。程序由8-14-20节点的六面体网格划分而成,其中的内置几何子程序hexahedron_xz产生以yz平面开始向y方向的节点和单元标号,具体可见下图。具体的局部节点单元标号参照下图,以xz平面为顺时针编号,之后向y方向扩展一个20节点六面体单元需要的积分点为27个,为了方便考虑”折减积分“,将积分点减少为8个计算实例节点值为20;网格划分x方向为1,y方

2021-11-23 16:11:41 3513 2

原创 8节点矩形弹性轴对称弹性固体的非轴对称分析(python,有限元)

第九篇 8节点矩形弹性轴对称弹性固体的非轴对称分析介绍本篇讨论一个轴对称或者反轴对称的固体遭受一个非对称的简谐波荷载的情况将引入三个新的参数,lth表示表示承受的对应简谐波荷载的振幅值,iflag值为1表示轴对称,-1表示反向轴对称,chi表示平面所表示的二维图形在轴对称固体中的位置,用度数表示一个通用的轴对称偏导矩阵B为计算实例径向划分为1,竖向网格划分为5轴对称,简谐波荷载为1,所选平面为主视图所在面0度,单元只有一种类型性质为弹性模量E1.0e5,泊松比0.3径向坐标0.0,0

2021-11-04 16:42:16 512

原创 矩形弹性固体的平面或者轴对称应变分析(python,有限元)

第八篇 矩形弹性固体的平面或者轴对称应变分析(python,有限元)引言此部分程序主要用来解决小应变弹性固体的平衡问题。和上一篇相似,当数据输入端提供单元类型和单元编号的放行,节点坐标和序列号会通过子程序产生,矩形结构的子程序为geom_rect,立方体为hexahearon_xz,通过子程序num_to_g由节点号num和每个节点的约束条件nf得到对应的自由度编号,从这部分开始,将提供有限元网格的划分图,包括未变形网格代码mesh,变形网格代码dismsh,位移向量图代码vecmsh。计算实例1

2021-10-31 22:56:11 851 6

原创 4节点矩形平面单元分析-相同单元的均质材料(python,有限元)

第七篇 4节点矩形平面单元分析-相同单元的均质材料(python,有限元)引言从本程序开始接触平面单元,程序种加入一些新的参数值,包括矩形单元的长aa和宽bb,单元厚度th子程序geom_rect的作用是根据已知信息得出每个节点的坐标和对应的自由度序列号,该子程序在下一部分内容中也会广泛使用。计算实例由上可知,x方向分为两端,y方向分为两段,数据类型为1种x方向单元长度为0.25,y方向单元长度为0.25,厚度为1.0单元性质包含弹性模量E,泊松比V,分别为10.92和0.3有8个约束点,

2021-10-30 17:22:45 1106

原创 2节点弹性梁的稳定性分析(弹性基础)(python,有限元)

第六篇 2节点弹性梁的稳定性分析(弹性基础)python介绍此程序计算遭受轴向压缩荷载的基础屈曲荷载和相关联梁的模态形状,本程序与第三篇相似但包括弹性选项,子程序beam_gm产生单元几何矩阵gm,组装几何矩阵储存在向量gv中,梁刚度矩阵由km和mm组装为kv矩阵。子程序stability使用简单迭代去得到最小特征值eval,对应最低的屈曲荷载,和对应的特征向量evec。其他相关联的标量tol为收敛容差,iters为迭代次数,limit为迭代上限。计算实例1第一个例子为单位长度梁,一端固定一端铰接

2021-10-29 18:14:01 698 1

原创 使用2节点梁或梁/杆单元分析弹塑性梁或框架(python,有限元)

第五篇 使用2节点梁或梁/杆单元分析弹塑性梁或框架介绍本程序属于第四篇的改进版,其中对构件能够承受的最大力矩进行了限制,随着结构上荷载的增加,形成塑性铰,结构会变得失稳,该程序目前仅限于荷载主导。这是介绍的第一个非线性程序,假设材料为理想弹塑性,对于这种非线性问题,迭代的策略被使用,迭代法用于在给定的一组外加荷载下求节点位移和单元“作用”力,超过塑性极限的力矩将重新分配给其他仍保留力矩承载能力的铰头,当在公差范围内,构件节点处的力矩不超过其极限塑性值,且内部“作用”力与施加的外部荷载处于平衡状态时,迭

2021-08-31 22:16:45 1220

原创 2节点梁/杆单元的弹性刚接框架(二维、三维)(python,有限元)

第一篇 2节点梁/杆单元的弹性刚接框架(二维、三维)介绍本程序使用的梁-杆单元刚度矩阵是通过叠加之前描述的梁和杆刚度矩阵形成的,可以分析二维或三维的框架结构,其单元刚度矩阵由子程序rigid_jointed生成。计算实例1第一个算例如下图所示,为一个受均布荷载和点荷载作用的二维刚节点框架,在2D中,单元有6个自由度,如下图2所示,每个节点有x和y上两个自由度和一个旋转自由度(按此顺序),自由节点编号包含在向量g,因此,单元1的编号自由度为[0 0 1 2 3 4),单元2的编号自由度为(2 3 4

2021-08-18 11:39:30 1688

原创 2节点梁单元的弹性分析(python,有限元)

第三篇 2节点梁单元的弹性分析介绍此程序与之前程序类似,不同之处在于单元可选择不同的刚度和长度值,而且支撑为弹性基础,受力方式为荷载和力矩。其中有两种性质,分别为梁弯曲刚度EI和弹性刚度k,如果只考虑一种性质的话,将只选择弯曲刚度。计算实例1单元个数=4,单元性质类型=1,性质个数=2,为4.0e4和2.0e4的EI,第一类为4.0e4,第二类为2.0e4;每个单元的性质种类为1,1,2,2;每个单元长度为2.5,2.5,3,2(m);约束点2个,节点1,4x方向的约束;节点2具有y方向荷

2021-08-14 16:17:36 1128 3

原创 2节点杆-弹性铰接框架的分析(2维,3维)(python,有限元)

第二篇 2节点杆-弹性铰接框架的分析(2维,3维)介绍本文程序是在上文程序的基础上做的修改,把一维问题扩展到二维或者三维;一维问题中,节点数始终为比单元数大一,而这种情况在本文中不再适用;单元长度,即杆的长度不再直接读取,将根据坐标值计算;由于问题扩展到二维和三维,所以每个节点的自由度数量也变多。计算实例1(2维)单元个数=10,节点个数=6,2维,单元性质类型=1,为2.0e5;约束点2个,节点1两个方向,节点2y方向;节点6具有y方向荷载-10KN,无位移荷载。代码1(2维)impor

2021-08-13 13:37:25 474

原创 2节点杆受轴向荷载的位移分析(有限元,python)

第一篇 2节点杆受轴向荷载的位移分析介绍有限元法实质上是以‘结构’分析为基础发展的,所以以结构的静态平衡来开启有限元方法与编程的分享这一大块。本部分内容都以计算实例的编程来分享有限元内容,语言以python为主,若大家有其他需要我会及时改正和更新。如果是对方法不太了解可以去看下简单的有限元分析一文,或者去读关于有限元的书籍加深了解;本部分有限元程序刚度矩阵大多使用天际线矩阵存储的形式,求解方式使用乔列斯基分解后的前后迭代;详情可见以天际线存储矩阵系数的乔列斯基分解。2节点杆受轴向荷载的位移分析流程图

2021-08-12 13:59:44 1170 6

原创 简单的有限元分析(python)

第五十三篇 有限元法有限元方法采用与有限差分完全不同的原理,即选择微分方程在解域的子区间上近似求解。这些子区域被称为“有限单元”,通常局限于简单的形状——三角形或四边形表示平面面积,四面体或六面体(“砖块”)表示体积。这些元素可能有弯曲的边(面),但通常仅限于线性边和面。以下图为例,等效的有限元展示在下图。该区域被划分为16个等大小的四边形单元(在这种情况下都是正方形),有25个“节点”,相当于有限差分的“网格点”。在这种情况下,更简单的做法是将所有节点的温度视为“未知数”,即使是在边界上。一个典

2021-05-28 15:19:02 6518 9

原创 有限差分法下-一维中的显示有限差分(python)

第五十二篇 有限差分法抛物线系统对于典型的抛物型方程,例如“传导”或“固结”方程,要求在时间上有边界条件和初始条件。然后,只要需要的话,就会求出对应时间的解。与椭圆问题不同的是,如下图所示,解域是“开放的”,时间变量可以无限延续在土木工程分析中经常出现的一个抛物问题是一维固结方程其中CV =固结系数z =空间坐标t =时间在热流问题的背景下,cv将被热扩散性质α取代。有时将方程无量纲化是很方便的,这样可以得到一个更普遍适用的解。为了做到这一点,令其中D为参考长度(例如,排水路径长度

2021-05-27 13:35:49 2289 2

原创 有限差分法上-椭圆系统

第五十一篇 有限差分法在有限差分方法中,出现在偏微分方程中的导数被“有限差分”的值近似取代。由于偏微分方程包含了至少两个自变量,有限差分表达式包括了在要求导数的周围的“网格点”上的未知变量的各种组合。在下图中考虑一个二维笛卡尔解域,它被分割成一个规则的矩形网格,x方向上间距为h, y方向上间距为k。在这种情况下,单个因变量u是两个自变量x和y的函数,需要求导的点是下标i j,其中i在x方向上计数,j在y方向上计数。正向差分导数公式:中心差分导数公式:逆向差分导数公式:任何偏导数都可以用有限

2021-05-26 16:28:26 2082

原创 偏微分方程基础

第50篇 偏微分方程一个偏微分方程(PDE)包含两个或多个自变量的导数。这与之前描述的常微分方程(ODE)相反,后者只涉及一个自变量。工程和科学中的许多现象都是用偏微分方程描述的。例如,一个因变量,如压力或温度,可以作为时间(t)和空间(x, y, z)的函数变化。求解偏微分方程的两种最著名的数值方法是有限差分法和有限元法。这里仅仅做一个简单的介绍,因为有很多书都详细地描述了这两种方法,,而且在我的第二大板块也会进行有限元理论和编程的讲解。本篇是让大家熟悉偏微分方程,并对它们所描述的物理现象的类型给

2021-05-25 12:35:18 7047 1

原创 二阶常微分方程(ODE)的打靶法(Shooting method),有限差分基础(python)

第四十九篇 二阶常微分方程的打靶法边界值问题当我们试图用自变量的不同值所提供的信息来解二阶或更高阶的常微分方程时,我们必须使用与前面描述的不同的数值方法。前面提到的初值问题经常涉及到“时间”作为自变量,解决技术要求我们按步骤“前进”,直到达到所需的解。在这种情况下,解的定义域不是有限的,因为原则上我们可以无限地沿着正方向或负方向前进。边值问题涉及一个有限解的区间,在这个区间内去求解。这类问题的自变量通常是空间中测量距离的坐标。一个典型的二阶边值问题可能下面的形式。解的定义域(假设为B >a

2021-05-24 15:13:51 14407 2

原创 预测-修正法(Milne-Simpson和Adams-Bashforth-Moulton)解常微分方程(python)

第四十八篇 预测-修正法预测-校正方法是使用先前几个已知点的信息来计算下一个点,如下图所示。这种方法的一个缺点是,他们需要一些已知信息,可能需要一步法来生成一些点才能开始,详情可见。而这些方法的优点在于,为了预测下一个点,能够有效地利用现有的信息。这与四阶龙格-库塔法相反,例如,在每一步中,需要计算四个函数,预测-修正法将不会这么麻烦。预测-校正方法利用两个公式;根据现有数据以估计下一个点的预测公式,以及改进此估计的校正公式。可以反复应用校正公式,直到满足某一收敛准则;但是,本篇中描述的任何方法都

2021-05-23 17:08:07 12799 3

原创 线性常微分方程(Ode)的theta-法(python)

第四十七篇 线性常微分方程的theta-法线性方程的θ-方法迄今为止所描述的初值问题数值解的方法,只要它们是一阶导的,并以标准形式排列,适用于线性或非线性方程组。如果微分方程是线性的,则可能采用的另一种方法为在每一步的开始和结束之间对导数进行线性插值。一阶方程考虑一阶线性方程其中k(x)和l(x)是x的函数。将x0和x1处的方程微分,距离为h,用简化的符号k(xi) = ki和l(xi) = li,得到引入了可在此范围内变化的无量纲缩放参数θ并写出一步法如下参数θ作为梯度在步骤开

2021-05-22 13:56:24 2081 1

原创 常微分方程(ode)一步法的求解(python) (龙格库塔法(Runge-Kutta))

第四十六篇 常微分方程的一步法之所以称为一步方法,是因为只需要有关前一步的信息就可以在下一步生成解。这使得一步法在计算机程序中相对容易实现。正如许多数值方法的典型,每一步做的工作越多,通常获得的精度就越大。需要在增加每个步骤的工作和减少范围的步骤数之间进行权衡。一步法主要分为下面几种类型欧拉法修正欧拉法中点法4阶龙格库塔法详情可见上篇文章常微分方程编程基础程序如下#常微分方程的一步法import numpy as npitype=4;n=1;nsteps=5;h=0.1 k0=np.

2021-05-21 12:35:33 3370

原创 常微分方程编程基础(ODE)

第四十五篇 常微分方程编程基础在工程分析的许多问题中,物理定律是用变量的导数表达的而不是变量本身来表示的,因此需要解决微分方程。微分方程的解本质上涉及积分,有时可以用解析法得到。例如,最简单的微分方程是这种形式的其中f(x)是x的函数,y(x)是必需解。假设f(x)可以积分,上式可以写成其中C是任意常数。为了找到C的值,需要一些额外的信息,例如对应于特定的x值的y的初始值。微分方程可以有许多不同的形式,在方程的右边经常涉及x和y的函数。因此,在描述不同的求解技巧之前,我们需要定义一些重要的微分

2021-05-20 15:43:32 4167

原创 高斯勒让德(Gauss-legendre)求解多重积分(python,数值积分)

第四十四篇 高斯勒让德求解多重积分多重积分在工程分析中,经常需要在一个面积或体积上对函数进行积分。多重积分的解析方法在有限的情况下是可能的,但在这一篇中使用数值积分去求解。考虑两个变量的函数在二维区域R上的积分,如下图所示。函数f(x, y)可以被认为是在R区域上以直角从平面上伸出的第三维空间。需要的积分为通过前面篇章中描述的一维空间函数积分得到,涉及两个变量的二重积分将产生下面形式的积分法则样本点位于R的平面上,坐标为(xi, yi), i = 1,…N是函数的值。每个函数的计算都用wi

2021-05-19 16:59:32 10109 8

原创 高斯拉盖尔(Gauss-Laguerre)法则求积分(python,数值积分)

第四十三篇 高斯拉盖尔法则特殊积分规则到目前为止所考虑的常规法则考虑了有限的积分上下限,而且对要积分的函数的形式没有任何限制。在这篇中,将描述一些特别的法则,这些法则时为了应对一些非常规情况的积分。高斯-拉盖尔法则高斯-拉盖尔法则是专门用于指数衰减函数的形式的积分该法则的权值和样本点以一个幂指数的积分函数和积分范围的一半为无穷大。从上面方程的右侧可以看到,该法则的样本点只会被代入函数f(x),而不是整个被积函数e - xf(x)。这种方法之所以这样叫,是因为采样点是一个叫做拉盖尔多项式的多项

2021-05-18 16:00:42 6575 3

原创 自适应高斯勒让德法则(Adaptive Gauss-Legendre)(python,数值积分)

之前的文章中,就已经提出了调整小区间的长度来改变积分函数的值。因为,如果函数在某些区域变化的很快,可能需要一个更窄的区间,而如果函数是缓慢变化,更改成一个长区间代替几个小区间,但精度是完全一样的。手动执行这些修改显然会很繁琐,所以在这这篇中,将介绍一种自适应算法来自动调整区间的长度。这种自适应方法的基础是通过比较两个具有不同精度的法则获得的结果而得到每个区间上的误差估计。假设更精确的法则给出“准确”的结果,因此误差为两个法则的差值。如果这个误差估计超过了指定的容许范围,则将考虑将区间分成两个,并重复这个过

2021-05-18 00:04:46 1439

原创 重复高斯勒让德法则(gauss-legendre)求积分(python,数值积分)

高斯勒让德法则Newton-Cotes法则很方便使用,因为样本点在积分范围内均匀分布,而且权重系数很容易记住(至少到辛普森法则)。高斯法则采取样本点在积分范围内的最佳间隔,并且实现给定样本点更高的精度。这些优化后的样本点的位置仍然是在积分范围内以中间点对称,但是它们的位置不是很明显,而且确实很难记住。但这些数据可以存储在子程序库中。在高斯规则中,之前使用的求和法仍然适用,因此然而,当使用多项式代换然后应用高斯法则时,不仅wi,而且xi最初被视为未知数。为了求解2n次方程,必须使用f(x)精确到2n

2021-05-15 22:08:07 5380 3

原创 重复牛顿-科特斯法则(repeated newton-cotes)求积分(python,数值积分)

第四十篇 重复牛顿-柯特斯法则如果积分的范围很大,一种方法是在整个区间内上拟合一个高阶多项式,然后将这个大区间分解几个等长度的小区间,在每个小区间上使用低阶多项式。上篇数值积分基础-牛顿柯特斯法则中描述的问题都可以使用这种“重复”的形式。重复矩形法则如下图所示,将积分区间[A, B]划分为k条,宽度为hi, i = 1,2,…,k。虽然让所有的小区间具有相同的长度是很容易的,但是如果函数变化较快的地方可以让区间更小一些。在一种“自适应”求积的方法中,区间的宽带可以自动修改,这将在后面的文章中描述。

2021-05-14 16:34:17 1727 2

原创 数值积分编程基础-牛顿科特斯(Newton-Cotes)(python)

第三十九篇 数值积分-牛顿柯特斯当以解析法去求代数积分时不便利或者根本求不出来时,就使用数值积分或“求积”的方式。数值积分方法可以应用在数学函数,或者针对工程实验中能够测量的离散数据。首先考虑一元函数的数值积分方法,即:多个变量函数的面积和体积积分将在后面讨论。本篇将介绍几种数值积分公式(也称为“法则”)。这些方法通常不依赖于被积分的函数类型,但一些“自定义”方法也会被讨论。少数情况下数值积分有时会得到精确解,特别是如果处于计算的函数是一个简单的多项式,但通常最后的解是近似的。在积分是由超越函数所

2021-05-13 20:57:07 4452 3

原创 最小二乘法(least squares)的曲线拟合(curve fitting)

第三十八篇 最小二乘法的曲线拟合如果我们想得到一个通过大量由实验或者计算机程序获得的数据点的函数,它实际是在寻找一个“最适合”数据的函数,而不是一个完全经过所有点。可以采用各种策略来最小化各个数据点之间的误差和逼近函数。其中最著名的是最小二乘法,它让用户能够自由选择在曲线拟合中使用的函数类型。这种方法也被称为具有两个或两个以上的自变量的“线性回归”或“多元线性回归”,。最小二乘法考虑np数据点(x1, y1),(x2, y2),…,(np, ynp),其中,x表示自变量[x1, x2,…],xnv]T

2021-05-12 16:30:23 32358 1

原创 三次样条函数(cubic spline functions)的插值求解(python,数值积分)

第三十七篇 三次样条函数的插值求解利用三次样条函数进行插值到目前为止,描述的两种插值方法拉格朗日多项式和正向差分会形成高阶的多项式,但一般情况下,选择阶数的值等于小于数据点的数目更合适。除了考虑计算的复杂程度外,高阶多项式还会导致给定数据点之间出现不需要的极大值和极小值。所以另一种类型的插值方法以“分段”的方式从点到点拟合低阶多项式。多项式的阶数可以由我们自己决定。如果多项式被选择为线性,则数据点只是由直线连接,在每个直线相互连接的点上都有“角”。在工程应用中,如果有许多数据点紧密地聚集在一起,那么线性

2021-05-11 18:30:14 7084 1

原创 正向差分(forward differences)的插值求解(python,数值积分)

第三十六篇 正向差分的插值求解差分法另一种求插值多项式的方法是通过np个数据点(xi, yi), i = 0,1,2,…,n(其中n = np−1),首先将插值多项式写成另外一种形式:其中常数Ci, i = 0,1,2,…,n可以按照要求来确定重新计算之后得到计算实例本文重复使用上篇中给出的例子。使用差分法去推导通过这些点的多项式然后考虑额外的点去修正多项式计算x=4.5时的y值这个方程的第一部分牵涉到3个数据点,因此插值多项式将是二次型的。首先计算方程的常量然后带入方程得到

2021-05-10 15:57:51 1280

原创 使用拉格朗日多项式(Lagrangian polynomials)的插值法(python,数值积分)

第三十五篇 拉格朗日多项式插值插值多项式首先考虑一个函数的推导,该函数精准地通过一系列np离散数据点。虽然有无限多的函数具备这个条件,但我们将专注于最简单的一个,一个n阶多项式,其中n = np−1。我们称这个函数为“插值多项式”因此,如果有n + 1个点为(xi, yi)当i = 0,1,2,…, n,然后在这篇和下篇中,将描述推导Qn(x)的两种方法;这两种方法都非常通用,适用于任何一组初始数据点,但是,如果x数据间隔相等,差分方法将具有很多优点。拉格朗日多项式这种方法适用于任意n +

2021-05-09 17:35:31 8516 2

原创 特征多项式法(characteristic polynomial )求特征值(结合lanczos和householder)(python,数值积分)

第三十四篇 特征多项式法求对称三对角矩阵的特征值特征多项式在之前的篇章中介绍过的,一个矩阵的特征值可以形成一个n阶多项式的根,称为“特征多项式”。线性方程的求解方法可以用来求这些根,详情可以翻看我之前写过的文章。但这并不是一个有效方法。还有一些更有效的方法是基于特征多项式的性质,当要求解特征值的矩阵是一个三对角矩阵时,使用这种性质可以很容易求出特征值。因此这种方法与前面描述的Householder法转换成三对角矩阵或Lanczos法转换成三对角矩阵变换结合使用非常方便。计算三对角矩阵的行列式值在上一

2021-05-08 17:11:07 9414 3

原创 LR(即L-1AL)转换求特征值(python,数值积分)

第三十三篇 经过LR转换求特征值三对角矩阵特征值的LR变换一种最适用于稀疏(带宽或三对角化)矩阵的转化方法叫做“LR”变换。这是类似于之前描述[L][U]因式分解。对于迭代变换的任意步骤k。也可以把矩阵写成一个上三角与一个下三角乘积的形式,详情可见LU分解解方程从上面的式子可以得到再代入第二个式子表明[L]具有变换矩阵[P]所要求的性质,详情可见特征值编程基础。所以随着迭代的进行,变换后的矩阵[A]k趋向于一个特征值等于对角项的上三角矩阵。计算实例对于一个非对称矩阵的‘LR’分解

2021-05-07 16:46:47 754 1

原创 对称矩阵到三对角矩阵的Lanczos推导(python,数值积分)

第三十二篇 Lanczos转化到三对角形式在之前的篇章里,有许多求解线性方程的迭代方法,如最陡下降法,可以通过向量乘法和各种简单的向量运算,简化为一个单个矩阵的循环。将矩阵化为三对角形式的Lanczos方法,保留其特征值的同时,使用类似的计算方式,实际上与共轭梯度法相关联。在这种方法中,变换矩阵[P]是用相互正交的向量构造的。通常我们求对称矩阵的特征值由下式开始:确保[P]T [P]=[I]的一种方法是构造互相正交的,单位长度的正交化向量,如{P}, {q}和{r}构造[P]。以3 × 3矩阵为例,

2021-05-06 13:00:05 2387 1

原创 豪斯霍德(Householder Reduction)转换成三对角形式(python,数值积分)

第三十一篇 豪斯霍德转换成三对角形式三对角形式三对角矩阵就是对角线、邻近对角线的上下次对角线上有元素,其他位置均为0的矩阵。雅可比主对角化求特征值要求转化矩阵应该具有下面的性质豪斯霍尔德技术要求选择p为其中{w}是一个归一化的列向量,使其欧几里德范数等于单位,因此例如,让按照上面的乘积然后可以得到它具有下面的性质为消去[A]在对角线外第一行的项,向量{w}应被取为因此,假设[A]为3 × 3,对第一行的变换矩阵为当乘积[P][A][P]被计算时,结果矩阵的第一行包含

2021-05-05 21:40:50 3554

原创 雅可比主对角线(Jacobi diagonalization)化求对称矩阵的特征值(python,数值积分)

第三十篇 雅可比主对角线化求对称矩阵的特征值对于标准特征值方程由特征值问题编程基础可知,对于任何非0解矩阵[P],标准方程可以转化为具有相同特征值的方程其中这种转换技术的关键核心在于[A *]的特征值比原始[A]的特征值更容易找到。然而,如果[A]是对称的,则变换后的矩阵不太可能保持对称。很容易证明下面变换将保持[A∗]的对称性。为了使上面方程中给出的特征值[A∗]与[A]的特征值相同,必须把这两个性质综合起来这种类型的矩阵称为“正交矩阵”,具有这种性质的矩阵称为“旋转矩阵”。将

2021-05-04 14:36:02 2620 2

原创 广义特征值Kx=λMx转化成标准对称形式(python,数值积分)

第二十九篇 广义特征值Kx=λMx转化成标准对称形式特征值问题的几种解法要求方程用“标准形式”表示。其中A是对称的,如果遇到广义特征值方程它可以转换为像上边的标准形式的方程,但,即使是[K]和[M]是对称的,乘积[K]−1[M]和[M]−1[K]通常也不是对称的。为了让其对称性,可以使用以下的方法推导。由上式开始,利用Cholesky方法因式分解[M]可得,参见LDLT分解因此现在让或经过替换之后得到最后这是一个标准的特征值方程,左边矩阵[L]−1[K][L]−T也是对称

2021-05-03 15:10:32 813

原创 固有频率和屈曲分析,Kx=λM特征值和特征向量求解(python,数值积分)

第二十八篇 广义特征值问题通常在工程实践中,在特征值方程的右边会有一个额外的矩阵,导致会编程这种形式比如,在固有频率问题和屈曲分析中,[K]是系统的“刚度矩阵”,[M]是系统的“质量”或“几何”矩阵。通过重新排列上面的方程,可以写出任意一个等价的特征值方程,本程序对应最下面方程的最大特征值1/λ,其倒数为前一个方程的最小特征值λ。对最开始方程进行向量迭代,让λ = 1,并猜测右边的{x}0。矩阵与向量的乘积会得到通过求解线性方程组得到{x}∗1的新估计当新的{x}∗1被计算出来时,它可

2021-05-02 16:09:25 1436 1

原创 移位取逆迭代(shifted inverse iteration)求最近特征值和特征向量(python,数值积分)

第二十七篇 移位取逆迭代求最近特征值和特征向量移位逆迭代一种比“最大”特征值法更直接实现向量迭代收敛的的特征值方法是将移位向量迭代法改写为下面形式其中p是一个标量“移位”值,[I]是单位矩阵,λ是[a]的特征值。如特征值编程基础所示,[[A]−p [I]−1的特征向量与[A]的特征向量相同,但可以证明[[A]−p [I]−1的特征值是1/(λ−p)。因此,[[A]−p[I]]−1的最大特征值导致[A]的特征值最接近p。因此,如果[[A]−p[I]]−1的最大特征值是μ,则[A]最接近p的特征值为

2021-05-01 16:29:36 1538 1

原创 移位向量迭代法(shifted vector iteration)求特征值和特征向量(python,数值积分)

第二十六篇 移位向量迭代求特征值和特征向量向量迭代法的收敛速度取决于特征值的性质。对于特征值的数值结果较近的情况,收敛速度可能较慢。对于迭代替换求‘最大’特征值算例,使用上一篇的程序,初始猜测{x} = [1 1 1]T,经过26次迭代,误差为1 × 10−5,才收敛到4.7071。“换挡”设置可以改善收敛速度和基于修正问题的解。例如,用同样的初始猜测值再次求解方上篇中的方程,使用3.5的移位值,在7次迭代就可以收敛到4.7071。移位迭代的一个有效的特性是,对于特征值都为正数的方程,它可以很容易地

2021-04-30 17:11:50 926 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除