弦振动方程-数值求解02
- 格式:doc
- 大小:750.46 KB
- 文档页数:14
数学物理方程之基于数值计算方法的弦振动方程求解2数学物理方法中的平行四边形法则目录摘要、关键词…………………………………………… 2页有限差分法介绍………………………………………… 3页程序描述………………………………………………… 6页计算机处理……………………………………………… 8页Matlab作图…………………………………………… 10页特别鸣谢………………………………………………… 11页摘要、关键词摘要:继上次关于弦振动方程的“平行四边形法则”求解之后,我们又从数值计算的角度入手,对弦振动方程进行计算和模拟,从而验证“平行四边形法则”解弦振动方程的正确性。
关键词:有限差分法、数值计算、弦振动方程附: 弦振动方程:4(0,)(1,)0(,0)(1),(,0)8tt xxtu uu t u tu x x x u t x =⎧⎪==⎨⎪=-=⎩211((1))()'()()''()()+()()2!n n nu i h u ih u ih h u ih h u ih h -=+-+-+-……!211((1))()'()''()+()2!n n nu i h u ih u ih h u ih h u ih h +=+++ ……!()((1))'()()u ih u i h u ih o h h--=+((1))()'()()u i h u ih u ih o h h+-=+2((1))((1))'()()2u i h u i h u ih o h h+--=+有限差分法介绍以弦振动方程为例:2(,)(0,)(,)0(,0)()(,0)()tt xx t u a u f x t u t u l t u x x u x x ⎧=+⎪==⎪⎨=Φ⎪⎪=ψ⎩对于一定的u (x ,t ),我们用“差分”代替“微商”,从而将 数差值描述,可得:以及将第一个式子的右边第一项移至左边,得: ^…同理可得, 两式做差:22((1))((1))ih =h u i h u i h u +--()(,)(,)ni u x t u i x n t u =∆∆=1122(,)n n n i i i tt tt u u u u u i n t +--+==∆1122(,)n n n i i i xx xx u u u u u i n x +--+==∆21122(,)n n n i i i tt uu u u a f i n x+--+=+∆2222ta r x∆=∆ 2122122112(1)(,)n n n n n i i i i iu r u r u r u n t f i n ---+-=+-+-+∆用中心差分的一阶导数表示二阶导数,化简: 由此引入 则 则弦振动方程 可以表示为:我们定义 为网格比则由此可知,每一个格点u (i ,11(,0)()()2i it u u u x x i t--=ψ=ψ=∆(,0)t u i 1i u 202020221121221221100,/10.5(2(1)2()(,)0,0/12(1)(,)ni i i i n n n n i i i i i l x u r u r u r u t i x t f i x n t n i l x r u r u r u n t f i x n t +----+-=∆-⎧⎪=+-++∆Φ∆+∆∆∆=<<∆-⎨⎪+-+-+∆∆∆⎩ 其他n)均由u (i+1,n+1)、u (i ,n )、u(i-1,n-1)、 u(i,n-2)等其余四点所确定:由此我们可以采用“递归”的思想,借助计算机进行快速计算,从而得到各个格点的值.值得注意的是,①在边界上u ≡0.②在初始层上的点(即u (i ,0))无法用上述公式计算,还需借助初始条件,即:012020201211(,0)()2(1)(,1)i i i i i i u i u x u r u r u r u u t f i -+-∴==Φ=+-+-+由 和 两式相加,消去可得020*********.5(2(1)2()(,)i i i i u r u r u r u t i x t f i x n t +-=+-++∆Φ∆+∆∆∆综上:届此,我们可以将此式编入程序(采用“递归”思想),详细代码见下一节。
弦振动方程cauchy问题广义解的结构
弦振动方程,又称波动方程,是利用物理学中最基本原理——动
量定理(即动能定理)解决实际问题的通用数学工具。
它通常用来研
究一般固体的动态运动问题,常被用于弦的振动及其他振动的研究中。
处理弦振动方程的cauchy问题,其广义解的结构可表示为:解的形式:
$$u(x,t) = f(x-ct) + g(x+ct)$$
其中,$f(x-ct)$与$g(x+ct)$可看作特殊定解,均是$x$和
$ct$的周期函数,其波形由所选常数决定。
比如对$x$方向上的弦有
$f(x-ct) = A\cos2\pi(x-ct)$;而$g(x+ct) = B\sin2\pi(x+ct)$,
其中$A$与$B$可自行选取,其波形即由该选取的常数决定。
弦振动方程的cauchy问题的广义解的结构可认为是$u(x,t) =
f(x-ct) + g(x+ct)$的形式。
特别的,若把$f(x-ct)$与$g(x+ct)$都
简化为特殊的周期函数,如正弦函数或余弦函数,其波形将完全受常
数决定,其解即可表示为某种特殊定解函数。
总之,弦振动方程的cauchy问题的广义解的结构可记为
$$u(x,t) = f(x-ct) + g(x+ct)$$
其特殊情况下,特别定解的波形可完全由常数决定,可由正弦函数或
余弦函数构成的形式来表示。
弦振动方程数值解弦振动方程数值解赵磊;王琳;宋林强【期刊名称】《金田》【年(卷),期】2015(000)005【摘要】the string vibration equation is using mathematical language to describe the laws of physics , so this article from the perspective of physics , the standard form of equation is deduced , and then on the basic theory re-search and program verification . This paper introduces the finite difference method , and use modern mathematical tool Matlab to simulate the finite differ-ence method to solve the initial -boundary value problem of string vibration e-quation for the purpose of this article mentioned theory to a certain extent of validation.%弦振动方程是用数学语言来描述的物理规律,所以本文在从物理角度出发,对其进行基础理论研究和程序验证。
本文介绍了有限差分法,并利用现代数学工具Matlab实现模拟了有限差分法求解弦振动方程的初边值问题,对于本文所提到的理论进行了验证。
【总页数】2页(261-261,213)【关键词】弦振动;有限差分;显格式【作者】赵磊;王琳;宋林强【作者单位】成都理工大学管理科学学院;成都理工大学管理科学学院;成都理工大学管理科学学院【正文语种】中文。
差分法解弦振动方程引言弦振动是物理学中一个重要的研究领域,广泛应用于乐器制作、声学研究、结构工程等方面。
弦振动可以通过数学模型来描述,其中最常见的是弦振动方程。
差分法是一种数值解法,可以用于求解弦振动方程。
本文将介绍差分法的基本原理和应用,以及如何使用差分法来解决弦振动方程。
首先将介绍弦振动的基本概念和数学模型,然后详细讲解差分法的原理和步骤,并给出一个具体的例子来说明如何使用差分法求解弦振动方程。
弦振动方程在介绍差分法之前,我们先来回顾一下弦振动方程。
假设有一根长度为L的均匀弦,其横向位移u(x, t)可以通过以下偏微分方程描述:∂²u/∂t² = c² ∂²u/∂x²其中,c是波速。
这个方程描述了弦上任意一点处位移随时间变化的规律。
求解这个方程可以得到整个弦上各点的位移随时间的变化情况,从而揭示了弦振动的特性。
差分法原理差分法是一种数值解法,其基本思想是将连续的问题离散化为有限个离散点上的近似问题。
对于弦振动方程,可以将空间和时间都离散化,然后通过逐步迭代计算得到数值解。
具体来说,差分法将空间和时间划分为一系列小区间。
设弦上的位置为x,时间为t,则可以将弦划分为一系列小段,每个小段长度为Δx;同时将时间划分为一系列小步长,每个小步长为Δt。
然后通过近似求导公式来近似表示偏微分方程中的导数项。
差分法的核心思想是使用近似导数来替代真实导数,并通过迭代计算逐渐逼近真实解。
在求解弦振动方程时,我们需要用到以下两个近似公式:1.空间二阶导数近似公式:∂²u/∂x² ≈ (u(x+Δx, t) - 2u(x, t) + u(x-Δx, t)) / Δx²2.时间二阶导数近似公式:∂²u/∂t² ≈ (u(x, t+Δt) - 2u(x, t) + u(x, t-Δt)) / Δt²通过将这两个近似公式代入弦振动方程,我们可以得到一个差分方程,即用差分形式表示的弦振动方程。
ft解弦振动方程FT解弦振动方程引言:弦振动是物理学中的一个重要问题,它涉及到弦的运动和振动特性。
弦振动方程是描述弦振动运动的数学模型,其中FT解是一种常见的解法。
本文将介绍FT解弦振动方程的原理和应用。
一、弦振动方程的基本原理弦振动方程是描述弦上各点位置随时间变化的方程。
它是基于弦上各点的受力分析得出的,并且满足弦上各点的受力平衡条件。
一维弦振动方程可以表示为:∂²y/∂t² = v²∂²y/∂x²其中,y是弦上各点的位移,t是时间,x是弦上各点的位置,v是波速。
二、FT解弦振动方程的原理FT解是一种常见的解弦振动方程的方法,它利用傅里叶变换将弦振动方程转化为频域中的解析问题。
FT解的基本思想是将弦上各点的位移函数进行傅里叶变换,将其表示为一系列正弦函数的叠加,从而得到弦振动的频谱。
具体而言,FT解将弦振动方程中的时间变量t转化为频域中的角频率ω,将位置变量x转化为频域中的波数k。
通过傅里叶变换,可以得到弦振动方程在频域中的解析形式。
然后再通过傅里叶逆变换将频域中的解析解转化为时域中的解析解,得到弦上各点的位移函数。
三、FT解弦振动方程的应用FT解弦振动方程在物理学和工程学中有着广泛的应用。
下面将介绍一些典型的应用场景。
1. 乐器制作乐器的音色和音质与弦的振动特性息息相关。
通过FT解弦振动方程,可以分析和优化弦乐器的共振频率和共振模态,从而改善乐器的音质和演奏性能。
2. 声学设计在音响系统和声学设计中,需要对声源和接收器之间的传输特性进行分析和优化。
通过FT解弦振动方程,可以计算和预测声波在弦上的传播特性,从而指导声学设计和优化。
3. 结构动力学在工程结构的设计和分析中,弦振动方程经常被用于描述结构的振动响应。
通过FT解弦振动方程,可以计算和预测结构的固有频率和振型,从而评估结构的稳定性和动力特性。
4. 信号处理弦振动方程是一种常见的信号处理问题,它涉及到信号的传输和变换。
数学物理方程之基于数值计算方法的弦振动方程求解2数学物理方法中的平行四边形法则目录摘要、关键词…………………………………………… 2页有限差分法介绍………………………………………… 3页程序描述………………………………………………… 6页计算机处理……………………………………………… 8页Matlab作图…………………………………………… 10页特别鸣谢………………………………………………… 11页摘要、关键词摘要:继上次关于弦振动方程的“平行四边形法则”求解之后,我们又从数值计算的角度入手,对弦振动方程进行计算和模拟,从而验证“平行四边形法则”解弦振动方程的正确性。
关键词:有限差分法、数值计算、弦振动方程附: 弦振动方程:4(0,)(1,)0(,0)(1),(,0)8tt xxtu uu t u tu x x x u t x =⎧⎪==⎨⎪=-=⎩211((1))()'()()''()()+()()2!n n nu i h u ih u ih h u ih h u ih h -=+-+-+-……!211((1))()'()''()+()2!n n nu i h u ih u ih h u ih h u ih h +=+++ ……!()((1))'()()u ih u i h u ih o h h--=+((1))()'()()u i h u ih u ih o h h+-=+2((1))((1))'()()2u i h u i h u ih o h h+--=+有限差分法介绍以弦振动方程为例:2(,)(0,)(,)0(,0)()(,0)()tt xx t u a u f x t u t u l t u x x u x x ⎧=+⎪==⎪⎨=Φ⎪⎪=ψ⎩对于一定的u (x ,t ),我们用“差分”代替“微商”,从而将 数差值描述,可得:以及将第一个式子的右边第一项移至左边,得: ^…同理可得, 两式做差:22((1))((1))ih =h u i h u i h u +--()(,)(,)ni u x t u i x n t u =∆∆=1122(,)n n n i i i tt tt u u u u u i n t +--+==∆1122(,)n n n i i i xx xx u u u u u i n x +--+==∆21122(,)n n n i i i tt uu u u a f i n x+--+=+∆2222ta r x∆=∆ 2122122112(1)(,)n n n n n i i i i iu r u r u r u n t f i n ---+-=+-+-+∆用中心差分的一阶导数表示二阶导数,化简: 由此引入 则 则弦振动方程 可以表示为:我们定义 为网格比则由此可知,每一个格点u (i ,11(,0)()()2i it u u u x x i t--=ψ=ψ=∆(,0)t u i 1i u 202020221121221221100,/10.5(2(1)2()(,)0,0/12(1)(,)ni i i i n n n n i i i i i l x u r u r u r u t i x t f i x n t n i l x r u r u r u n t f i x n t +----+-=∆-⎧⎪=+-++∆Φ∆+∆∆∆=<<∆-⎨⎪+-+-+∆∆∆⎩ 其他n)均由u (i+1,n+1)、u (i ,n )、u(i-1,n-1)、 u(i,n-2)等其余四点所确定:由此我们可以采用“递归”的思想,借助计算机进行快速计算,从而得到各个格点的值.值得注意的是,①在边界上u ≡0.②在初始层上的点(即u (i ,0))无法用上述公式计算,还需借助初始条件,即:012020201211(,0)()2(1)(,1)i i i i i i u i u x u r u r u r u u t f i -+-∴==Φ=+-+-+由 和 两式相加,消去可得020*********.5(2(1)2()(,)i i i i u r u r u r u t i x t f i x n t +-=+-++∆Φ∆+∆∆∆综上:届此,我们可以将此式编入程序(采用“递归”思想),详细代码见下一节。
程序描述C语言:#include <stdio.h>#include <stdlib.h>#define imax 10 //定义长、宽格点数,其数值参考计算机性能而定#define jmax 60double f(double i,double n);double u(int i,int n);double FEI(double x);double PUSI(double x);double l=1,t=3; //设l=1,t=3double dert_t,dert_x; //长宽格距double R;int main (){int i,n,a;double A[imax][jmax];FILE *fp;dert_x=l/imax;dert_t=t/jmax;a=2; //a的值R=a*a*dert_t*dert_t/dert_x/dert_x;printf("%lf\n",R);if((fp=fopen("G:\\matlab\\myfile.txt","r+"))==NULL) //创建文件{printf("cannnot open file!\n");return 0;}for(n=0;n<jmax;n++){for (i=0;i<imax;i++){A[i][n]=u(i,n);printf("%9.5lf ",A[i][n]);fprintf(fp,"%9.5lf",A[i][n]);fputs(" ",fp);}printf("\n");fputs("\n",fp);}fclose(fp);return 0;}double u(int i,int n) //函数u(x,t){double result;if(i==0||i==imax-1){result=0;}else{if(n==0){result=FEI(i*dert_x);}else if(n==1){result=0.5*(R*R*u(i+1,0)+2*(1-R*R)*u(i,0)+R*R*u(i-1,0)+2*dert_t*PUSI( x)+dert_t*dert_t*f(i*dert_x,n*dert_t));//result=0.5*(u(i+1,0)+u(i-1,0)+2*dert_t*PUSI(i*dert_x));}else{result=R*R*u(i+1,n-1)+2*(1-R*R)*u(i,n-1)+R*R*u(i-1,n-1)-u(i,n-2)+ dert_t*dert_t*f(i*dert_x,n*dert_t);//result=u(i+1,n-1)+u(i-1,n-1)-u(i,n-2);}}return result;}(2)nO double FEI(double x) //u(x,0)=FEI(x)初始条件 {double fei; fei=x*(1-x); return fei; }double f(double i,double n) //外强迫项f(x,t) {double f;f=0; //此函数可以由题变化,此处暂定为0 return f; }double PUSI(double x) //Ut(x,t)=PUSI(x,t) {double PUSI;PUSI=8*x; //一阶导数 return PUSI; }计算机处理在实际操作过程中,鉴于递归调用在后期计算时间上的复杂度以及个人电脑(PC )的性能,我们仅对上节课中所涉及到的弦振动方程(第二页所附)进行了模拟,故对程序中的函数关系式进行了修改(即采用了“//”后面的关系式):注:有程序代码可知,第一行为r2的值:1.000000,随后的数组均输入到文件“myfile.txt”中.文件中数据如下:随后我们可以借助matlab对该文档进行调用,从而绘图,详见下一节。
Matlab作图代码如下(附截图):M=load('G:\matlab\myfile.txt')x=(0:0.9:0.1)t=(0:2.95:0.05)surf(M)xlabel('x')ylabel('t')zlabel('u(x,t)')title('弦振动方程数值计算方法-surf')图像:或。