结构力学数值方法:迭代法:结构力学基础理论_第1页
结构力学数值方法:迭代法:结构力学基础理论_第2页
结构力学数值方法:迭代法:结构力学基础理论_第3页
结构力学数值方法:迭代法:结构力学基础理论_第4页
结构力学数值方法:迭代法:结构力学基础理论_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

结构力学数值方法:迭代法:结构力学基础理论1绪论1.1结构力学与数值方法简介结构力学是研究结构在各种载荷作用下的响应,包括变形、应力和稳定性等。它涉及力学的基本原理,如牛顿运动定律、材料力学和弹性理论,以及数学工具,如微积分和线性代数。在实际工程中,结构往往具有复杂的几何形状和材料特性,这使得解析解难以获得。因此,数值方法成为解决这类问题的重要工具。数值方法通过将连续问题离散化,转化为一系列离散的数学模型,然后通过计算机进行求解。在结构力学中,常用的数值方法有有限元法(FEM)、边界元法(BEM)、有限差分法(FDM)等。这些方法能够处理复杂的边界条件和非线性问题,为结构设计和分析提供了强大的支持。1.2迭代法在结构力学中的应用迭代法是一种数值求解技术,用于求解线性和非线性方程组。在结构力学中,迭代法主要用于求解非线性问题,如大变形、材料非线性、接触问题等。迭代法的基本思想是,从一个初始猜测开始,逐步修正解,直到满足收敛准则。1.2.1非线性方程组的迭代求解在结构力学中,非线性问题通常可以表示为非线性方程组的形式:F其中,F是非线性函数,u是未知的位移向量。迭代法通过构建一个迭代序列u0,u11.2.1.1牛顿-拉夫逊迭代法牛顿-拉夫逊迭代法是一种常用的迭代求解非线性方程组的方法。它基于泰勒级数展开,将非线性方程组在当前迭代点进行线性化,然后求解线性化后的方程组,以更新迭代点。迭代过程可以表示为:u其中,J是雅可比矩阵,即F关于u的导数矩阵。1.2.2代码示例假设我们有一个简单的非线性方程:F我们可以使用牛顿-拉夫逊迭代法求解u。importnumpyasnp

defF(u):

returnu**3-2*u-5

defJ(u):

return3*u**2-2

#初始猜测

u=2.0

#迭代次数

max_iter=100

#收敛准则

tol=1e-6

forkinrange(max_iter):

delta_u=-F(u)/J(u)

u+=delta_u

ifabs(delta_u)<tol:

break

print("迭代解:",u)1.2.3结构力学中的迭代法在结构力学中,迭代法通常用于求解非线性有限元问题。例如,在考虑材料非线性时,结构的刚度矩阵不再是常数,而是随着位移的变化而变化。因此,需要在每一步迭代中更新刚度矩阵,然后求解线性化后的方程组。1.2.3.1有限元迭代求解流程初始化:设定初始条件,如位移、载荷等。线性化:在当前迭代点,计算雅可比矩阵(刚度矩阵)和残差向量。求解:求解线性化后的方程组,得到位移增量。更新:更新位移和载荷。检查收敛:检查位移增量是否满足收敛准则。如果不满足,返回步骤2;如果满足,迭代结束。1.2.4结论迭代法在结构力学中扮演着重要角色,尤其是在处理非线性问题时。通过逐步逼近真实解,迭代法能够提供准确的结构响应预测,为工程设计和分析提供了强大的工具。在实际应用中,选择合适的迭代方法和收敛准则,以及合理设置初始条件,对于获得高效和准确的解至关重要。2线性方程组的迭代解法2.1迭代法的基本概念迭代法是一种求解线性方程组的数值方法,特别适用于大型稀疏矩阵。其基本思想是通过一系列逐步逼近的过程,从一个初始猜测值开始,逐步修正,直到达到满意的解。迭代法的关键在于选择合适的迭代公式和判断收敛的准则。2.1.1判断收敛的准则迭代法的收敛性通常通过以下准则判断:-残差:计算当前解与精确解的差,即残差向量的范数是否足够小。-迭代次数:设定最大迭代次数,避免无限循环。-解的变化:检查连续两次迭代解之间的变化是否小于某个阈值。2.2雅可比迭代法雅可比迭代法是一种简单的迭代方法,适用于求解线性方程组。对于方程组Ax=b,其中A是一个n×n的矩阵,x和b是n维向量,雅可比迭代法将矩阵A分解为对角矩阵D,下三角矩阵L和上三角矩阵U,即2.2.1示例代码importnumpyasnp

defjacobi(A,b,x0,tol,max_iter):

"""

雅可比迭代法求解线性方程组Ax=b

:paramA:系数矩阵

:paramb:常数向量

:paramx0:初始猜测向量

:paramtol:收敛容差

:parammax_iter:最大迭代次数

:return:迭代解向量

"""

D=np.diag(np.diag(A))

R=A-D

x=x0

forkinrange(max_iter):

x_new=np.dot(np.linalg.inv(D),b-np.dot(R,x))

ifnp.linalg.norm(x_new-x)<tol:

returnx_new

x=x_new

returnx

#示例数据

A=np.array([[4,-1,0],

[-1,4,-1],

[0,-1,4]])

b=np.array([2,3,4])

x0=np.array([0,0,0])

tol=1e-6

max_iter=1000

#运行雅可比迭代法

x=jacobi(A,b,x0,tol,max_iter)

print("雅可比迭代解:",x)2.3高斯-赛德尔迭代法高斯-赛德尔迭代法是雅可比迭代法的一种改进,它在每次迭代中使用了最新的解信息。迭代公式为xi2.3.1示例代码defgauss_seidel(A,b,x0,tol,max_iter):

"""

高斯-赛德尔迭代法求解线性方程组Ax=b

:paramA:系数矩阵

:paramb:常数向量

:paramx0:初始猜测向量

:paramtol:收敛容差

:parammax_iter:最大迭代次数

:return:迭代解向量

"""

x=x0.copy()

forkinrange(max_iter):

x_new=x.copy()

foriinrange(len(x)):

x_new[i]=(b[i]-np.dot(A[i,:i],x_new[:i])-np.dot(A[i,i+1:],x[i+1:]))/A[i,i]

ifnp.linalg.norm(x_new-x)<tol:

returnx_new

x=x_new

returnx

#使用相同的数据

x=gauss_seidel(A,b,x0,tol,max_iter)

print("高斯-赛德尔迭代解:",x)2.4SOR超松弛迭代法SOR(SuccessiveOver-Relaxation)超松弛迭代法是高斯-赛德尔迭代法的进一步改进,通过引入一个松弛因子ω来加速收敛。迭代公式为xi2.4.1示例代码defsor(A,b,x0,tol,max_iter,omega):

"""

SOR超松弛迭代法求解线性方程组Ax=b

:paramA:系数矩阵

:paramb:常数向量

:paramx0:初始猜测向量

:paramtol:收敛容差

:parammax_iter:最大迭代次数

:paramomega:松弛因子

:return:迭代解向量

"""

x=x0.copy()

forkinrange(max_iter):

x_new=x.copy()

foriinrange(len(x)):

x_new[i]=(1-omega)*x[i]+omega*(b[i]-np.dot(A[i,:i],x_new[:i])-np.dot(A[i,i+1:],x[i+1:]))/A[i,i]

ifnp.linalg.norm(x_new-x)<tol:

returnx_new

x=x_new

returnx

#使用相同的数据,设定松弛因子为1.5

omega=1.5

x=sor(A,b,x0,tol,max_iter,omega)

print("SOR超松弛迭代解:",x)以上三种迭代方法在求解线性方程组时各有优劣,选择合适的方法可以显著提高求解效率和精度。3非线性方程组的迭代解法在结构力学中,非线性问题的求解往往需要迭代方法。本教程将详细介绍几种常用的迭代解法,包括牛顿-拉弗森迭代法、拟牛顿法和固定点迭代法。3.1牛顿-拉弗森迭代法3.1.1原理牛顿-拉弗森迭代法是基于泰勒级数展开的原理,将非线性方程组在当前点进行线性化,然后求解线性方程组来更新迭代点。对于非线性方程组F其中Fx是xx其中Jxk是Fx在3.1.2示例假设我们有以下非线性方程组:F使用Python实现牛顿-拉弗森迭代法求解该方程组:importnumpyasnp

defF(x):

"""非线性方程组"""

returnnp.array([x[0]**2+x[1]**2-2,x[0]**2-x[1]])

defJ(x):

"""雅可比矩阵"""

returnnp.array([[2*x[0],2*x[1]],[2*x[0],-1]])

defnewton_raphson(F,J,x0,tol=1e-6,max_iter=100):

"""牛顿-拉弗森迭代法"""

x=x0

foriinrange(max_iter):

J_inv=np.linalg.inv(J(x))

delta_x=-np.dot(J_inv,F(x))

x=x+delta_x

ifnp.linalg.norm(delta_x)<tol:

returnx,i

returnNone,None

x0=np.array([1.0,1.0])

x,iter_count=newton_raphson(F,J,x0)

print("Solution:",x)

print("Iterations:",iter_count)3.1.3解释在上述代码中,F(x)和J(x)分别定义了非线性方程组和其雅可比矩阵。newton_raphson函数实现了牛顿-拉弗森迭代法,其中x0是初始猜测点,tol是容许误差,max_iter是最大迭代次数。3.2拟牛顿法3.2.1原理拟牛顿法是牛顿法的一种变体,它避免了在每一步迭代中计算和求逆雅可比矩阵的高成本。拟牛顿法通过构建雅可比矩阵的近似来更新迭代点,常用的近似方法有BFGS和DFP。3.2.2示例使用Python的scipy.optimize.minimize函数中的BFGS方法求解上述非线性方程组:fromscipy.optimizeimportminimize

defobjective(x):

"""目标函数,最小化F(x)的模"""

returnnp.linalg.norm(F(x))

x0=np.array([1.0,1.0])

res=minimize(objective,x0,method='BFGS',options={'disp':True})

print("Solution:",res.x)3.2.3解释在拟牛顿法中,我们通常将非线性方程组的求解转化为目标函数的最小化问题。objective函数定义了目标函数,即Fx的模。scipy.optimize.minimize函数使用BFGS方法进行优化,返回的res.x3.3固定点迭代法3.3.1原理固定点迭代法是通过构造一个迭代函数gx来求解非线性方程组Fx=0x3.3.2示例对于上述非线性方程组,我们可以构造迭代函数gxg使用Python实现固定点迭代法:defg(x):

"""迭代函数"""

returnnp.array([np.sqrt(2-x[1]**2),x[0]**2])

deffixed_point_iteration(g,x0,tol=1e-6,max_iter=100):

"""固定点迭代法"""

x=x0

foriinrange(max_iter):

x_new=g(x)

ifnp.linalg.norm(x_new-x)<tol:

returnx_new,i

x=x_new

returnNone,None

x0=np.array([1.0,1.0])

x,iter_count=fixed_point_iteration(g,x0)

print("Solution:",x)

print("Iterations:",iter_count)3.3.3解释固定点迭代法通过不断应用迭代函数gx来更新迭代点,直到满足收敛条件。在本例中,g(x)定义了迭代函数,fixed_point_iteration函数实现了固定点迭代法,返回的x通过以上三种迭代方法的介绍和示例,我们可以看到,迭代法在求解非线性方程组时具有广泛的应用,不同的方法适用于不同的问题和场景。4有限元法中的迭代技术4.1有限元法概述有限元法(FiniteElementMethod,FEM)是一种数值分析方法,用于求解复杂的工程问题,如结构力学、热传导、流体力学等。它将连续的物理域离散化为有限数量的单元,每个单元用一组节点来表示,通过在这些节点上求解近似解,再将单元的解组合起来,得到整个物理域的解。有限元法的核心在于将偏微分方程转化为代数方程组,然后通过数值方法求解。4.1.1基本步骤几何离散化:将结构划分为多个小的、简单的单元。选择位移模式:在每个单元内,用多项式函数表示位移。建立单元方程:利用变分原理或加权残数法,得到每个单元的平衡方程。组装整体方程:将所有单元方程组合成一个整体方程。施加边界条件:根据问题的边界条件,修改整体方程。求解方程:使用直接法或迭代法求解整体方程。4.2非线性有限元分析非线性有限元分析处理的是结构在大变形、材料非线性或接触非线性等条件下的行为。与线性分析不同,非线性分析中结构的刚度矩阵不再是常数,而是随着位移的变化而变化,因此需要使用迭代技术来逐步逼近解。4.2.1线性化与迭代过程在非线性有限元分析中,线性化是一个关键步骤,它将非线性问题转化为一系列线性问题,然后通过迭代求解。迭代过程通常包括以下步骤:初始化:设定初始猜测值,通常是零位移。线性化:在当前位移猜测值下,计算结构的刚度矩阵和载荷向量。求解线性方程组:使用直接法或迭代法求解线性化后的方程组。更新位移:根据求解得到的增量位移,更新结构的位移。检查收敛性:比较新旧位移,如果满足收敛准则,则迭代结束;否则,返回步骤2继续迭代。4.2.2示例:Newton-Raphson迭代法Newton-Raphson迭代法是一种常用的非线性有限元分析中的迭代求解技术。下面是一个使用Python实现的Newton-Raphson迭代法的简化示例,用于求解一个非线性方程。defnewton_raphson(f,df,x0,tol=1e-6,max_iter=100):

"""

Newton-Raphson迭代法求解非线性方程f(x)=0

参数:

f:函数,非线性方程

df:函数的导数

x0:初始猜测值

tol:收敛容差

max_iter:最大迭代次数

返回:

x:方程的解

"""

x=x0

foriinrange(max_iter):

fx=f(x)

ifabs(fx)<tol:

returnx

dfx=df(x)

ifdfx==0:

raiseValueError("导数为零,无法迭代")

x-=fx/dfx

raiseValueError("迭代未收敛")

#定义非线性方程和其导数

deff(x):

returnx**3-2*x-5

defdf(x):

return3*x**2-2

#初始猜测值

x0=2.0

#运行Newton-Raphson迭代法

solution=newton_raphson(f,df,x0)

print("解为:",solution)在这个例子中,我们定义了一个非线性方程f(x)=x^3-2x-5和它的导数df(x)=3x^2-2。通过Newton-Raphson迭代法,我们从初始猜测值x0=2.0开始,逐步迭代直到满足收敛容差tol=1e-6。4.3线性化与迭代过程在非线性有限元分析中,线性化与迭代过程是紧密相连的。线性化通常涉及在当前位移猜测值下计算结构的切线刚度矩阵,然后使用迭代法求解线性化后的方程组。切线刚度矩阵反映了结构在当前位移状态下的刚度特性,是迭代求解的关键。4.3.1切线刚度矩阵切线刚度矩阵是结构在当前位移状态下的刚度矩阵,它考虑了结构的几何非线性和材料非线性。在每次迭代中,切线刚度矩阵都需要重新计算,以反映结构刚度的变化。4.3.2迭代求解迭代求解是通过逐步逼近的方法来求解非线性方程组。在结构力学中,这通常意味着逐步更新结构的位移,直到满足收敛准则。迭代求解可以使用直接法(如Gauss-Seidel法)或间接法(如Newton-Raphson法)。4.3.3示例:Gauss-Seidel迭代法Gauss-Seidel迭代法是一种直接迭代法,用于求解线性方程组。下面是一个使用Python实现的Gauss-Seidel迭代法的简化示例。importnumpyasnp

defgauss_seidel(A,b,x0,tol=1e-6,max_iter=100):

"""

Gauss-Seidel迭代法求解线性方程组Ax=b

参数:

A:系数矩阵

b:常数向量

x0:初始猜测值向量

tol:收敛容差

max_iter:最大迭代次数

返回:

x:方程组的解向量

"""

x=np.array(x0)

n=len(x)

foriinrange(max_iter):

x_new=np.zeros(n)

forjinrange(n):

s1=np.dot(A[j,:j],x_new[:j])

s2=np.dot(A[j,j+1:],x[j+1:])

x_new[j]=(b[j]-s1-s2)/A[j,j]

ifnp.linalg.norm(x_new-x)<tol:

returnx_new

x=x_new

raiseValueError("迭代未收敛")

#定义系数矩阵A和常数向量b

A=np.array([[10,-1,2,0],

[-1,11,-1,3],

[2,-1,10,-1],

[0,3,-1,8]])

b=np.array([6,25,-11,15])

#初始猜测值向量

x0=np.zeros(4)

#运行Gauss-Seidel迭代法

solution=gauss_seidel(A,b,x0)

print("解为:",solution)在这个例子中,我们定义了一个线性方程组Ax=b,其中A是系数矩阵,b是常数向量。通过Gauss-Seidel迭代法,我们从初始猜测值向量x0开始,逐步迭代直到满足收敛容差tol=1e-6。迭代过程中,我们更新了x向量,直到其变化小于容差,从而得到方程组的解。通过以上内容,我们了解了有限元法中的迭代技术,包括非线性有限元分析中的线性化与迭代过程,以及具体的迭代求解方法,如Newton-Raphson迭代法和Gauss-Seidel迭代法。这些技术在解决复杂的结构力学问题中起着至关重要的作用。5结构优化中的迭代算法5.1结构优化基础在结构优化中,目标是找到结构设计参数的最优组合,以满足特定的性能指标,如最小化结构的重量或成本,同时确保结构的强度和稳定性。结构优化问题通常可以表示为一个数学优化问题,其中包含设计变量、目标函数和约束条件。设计变量可以是截面尺寸、材料属性或几何参数等,目标函数是需要最小化或最大化的性能指标,约束条件则限制了设计变量的可行范围。5.2迭代优化算法迭代优化算法是解决结构优化问题的关键工具。这类算法通过逐步改进设计变量的值来逼近最优解。每一步迭代中,算法都会评估当前设计的性能,并根据评估结果调整设计变量,直到达到收敛标准或满足终止条件。迭代优化算法可以分为两大类:梯度基优化算法和非梯度基优化算法。梯度基算法利用目标函数的梯度信息来指导搜索方向,而非梯度基算法则不依赖于梯度信息,适用于目标函数不可微的情况。5.2.1梯度下降法梯度下降法是一种基于梯度信息的迭代优化算法,用于寻找目标函数的局部最小值。在每一步迭代中,算法会沿着目标函数梯度的负方向移动,因为梯度指向函数值增加最快的方向,而负梯度则指向函数值减少最快的方向。移动的步长由学习率决定,学习率太大可能导致算法在最优解附近震荡,学习率太小则会增加收敛时间。5.2.1.1示例代码importnumpyasnp

defobjective_function(x):

"""目标函数:一个简单的二次函数"""

returnx[0]**2+x[1]**2

defgradient_function(x):

"""目标函数的梯度"""

returnnp.array([2*x[0],2*x[1]])

defgradient_descent(start_point,learning_rate,max_iterations):

"""梯度下降法实现"""

x=start_point

foriinrange(max_iterations):

gradient=gradient_function(x)

x=x-learning_rate*gradient

ifnp.linalg.norm(gradient)<1e-6:#检查梯度是否足够小

break

returnx

#初始点

start_point=np.array([5.0,3.0])

#学习率

learning_rate=0.1

#最大迭代次数

max_iterations=1000

#运行梯度下降法

optimal_point=gradient_descent(start_point,learning_rate,max_iterations)

print("最优解:",optimal_point)5.2.1.2解释在这个例子中,我们定义了一个简单的二次函数作为目标函数,其梯度很容易计算。梯度下降法从一个初始点开始,通过不断调整设计变量(在这个例子中是x[0]和x[1])的值,沿着梯度的负方向移动,直到梯度足够小,表明算法已经接近局部最小值。5.2.2共轭梯度法共轭梯度法是一种改进的梯度基优化算法,特别适用于解决大规模线性系统的问题。与梯度下降法不同,共轭梯度法在迭代过程中选择的搜索方向是共轭的,这意味着搜索方向之间是正交的,可以更有效地减少目标函数的值。共轭梯度法在每一步迭代中都会更新搜索方向,以避免在最优解附近震荡。5.2.2.1示例代码importnumpyasnp

defobjective_function(x):

"""目标函数:一个简单的二次函数"""

returnx[0]**2+x[1]**2

defgradient_function(x):

"""目标函数的梯度"""

returnnp.array([2*x[0],2*x[1]])

defconjugate_gradient(start_point,max_iterations):

"""共轭梯度法实现"""

x=start_point

g=gradient_function(x)

p=-g

foriinrange(max_iterations):

alpha=-g.dot(p)/p.dot(gradient_function(x+p))

x=x+alpha*p

g_new=gradient_function(x)

beta=g_new.dot(g_new)/g.dot(g)

p=-g_new+beta*p

g=g_new

ifnp.linalg.norm(g)<1e-6:#检查梯度是否足够小

break

returnx

#初始点

start_point=np.array([5.0,3.0])

#最大迭代次数

max_iterations=1000

#运行共轭梯度法

optimal_point=conjugate_gradient(start_point,max_iterations)

print("最优解:",optimal_point)5.2.2.2解释共轭梯度法的实现比梯度下降法复杂,因为它需要计算搜索方向(p)和步长(alpha)。在这个例子中,我们使用了共轭梯度法的基本公式来更新设计变量的值。共轭梯度法通过选择共轭的搜索方向,可以更快地收敛到最优解,尤其是在处理大规模线性系统时。5.3结论结构优化中的迭代算法,如梯度下降法和共轭梯度法,是解决复杂结构设计问题的有效工具。通过逐步调整设计变量,这些算法能够找到满足性能指标的最优结构设计。在实际应用中,选择合适的迭代算法和参数设置对于确保优化过程的效率和准确性至关重要。6案例分析与实践6.1迭代法在桥梁结构分析中的应用6.1.1原理与内容在桥梁结构分析中,迭代法是一种解决非线性问题的有效手段。当桥梁结构受到大变形、材料非线性或几何非线性的影响时,传统的线性分析方法不再适用。迭代法通过逐步逼近的方式,将非线性问题转化为一系列线性问题来求解,直至达到收敛条件。6.1.1.1具体步骤初始化:设定初始条件,如初始应力状态或位移。线性化:在当前状态对非线性方程进行线性化处理,得到线性方程组。求解:使用线性方程组求解器(如直接法或迭代法)求解线性化后的方程组。更新:根据求解结果更新结构状态,如应力、应变或位移。收敛检查:检查更新后的状态是否满足收敛条件。如果不满足,则返回步骤2继续迭代。6.1.2示例假设我们正在分析一座桥梁在地震作用下的响应,使用迭代法求解结构的非线性动力学方程。以下是一个简化版的Python代码示例,展示如何使用迭代法进行求解:importnumpyasnp

#定义桥梁结构的非线性动力学方程

defnonlinear_dynamics(u,F):

#这里简化为一个非线性弹簧模型

k=1000#弹簧刚度

u_nonlinear=u**3#非线性位移

returnk*u_nonlinear-F

#迭代求解器

defiterative_solver(F,tol=1e-6,max_iter=100):

u=0#初始位移

foriinrange(max_iter):

#线性化

k_linear=3*1000*u**2#线性化后的刚度

#求解

u_new=(F+k_linear*u)/(k_linear+1000)

#更新

u=u_new

#收敛检查

ifabs(u_new-u)<tol:

break

returnu

#数据样例

F=5000#外力

u_solution=iterative_solver(F)

print(f"迭代求解得到的位移为:{u_solution}")6.1.2.1解释此代码示例中,我们使用了一个简化的非线性弹簧模型来代表桥梁结构的非线性行为。nonlinear_dynamics函数定义了非线性动力学方程,而iterative_solver函数则实现了迭代求解过程。通过逐步逼近,我们最终得到桥梁在特定外力作用下的位移。6.2迭代法在高层建筑结构设计中的应用6.2.1原理与内容高层建筑结构设计中,迭代法常用于解决结构的非线性静力分析问题,如考虑混凝土和钢材的非线性材料特性。迭代法通过反复计算,逐步调整结构的内力和变形,直到满足设计规范和结构平衡条件。6.2.1.1具体步骤初始化:设定初始内力和变形。线性化:在当前状态对非线性方程进行线性化处理。求解:使用线性方程组求解器求解线性化后的方程组。更新:根据求解结果更新结构的内力和变形。收敛检查:检查更新后的状态是否满足收敛条件。如果不满足,则返回步骤2继续迭代。6.2.2示例考虑一个高层建筑结构的非线性静力分析,以下是一个使用Python和numpy库的简化代码示例:importnumpyasnp

#定义高层建筑结构的非线性静力方程

defnonlinear_static(u,F):

#简化为一个非线性梁模型

k=5000#梁的刚度

u_nonlinear=u**2#非线性位移

returnk*u_nonlinear-F

#迭代求解器

defiterative_solver(F,tol=1e-6,max_iter=100):

u=0#初始位移

foriinrange(max_iter):

#线性化

k_linear=2*5000*u#线性化后的刚度

#求解

u_new=(F+k_linear

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论