切比雪夫级数

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法说明:

当一个连续函数定义在区间[-1,1]上时,它可以展开成切比雪夫级数。即:

()()n n n f x f T x ∞

==∑

其中()n T x 为

n 次切比雪夫多项式,具体表达可通过递推得出:

0()1T x =,1()T x x =

11()2n n n T x xT x T x +-=-

它们之间满足如下的正交关系:

110,()(),02

,0

n m T x T x dx n m n m ππ-≠⎧⎪⎪==≠⎨⎪==⎪⎩⎰

在实际应用中,可根据所需的精度来截取有限的项数,切比雪夫级数中的系数由下式决定:

1

01

()f x f dx π-=

12()()n T x f x f dx π-=

在MA TLAB 中编程实现的切比雪夫逼近法函数为:Chebyshev 。 功能:用切比雪夫多项式逼近已知函数。 调用格式:

Chebyshev(y,k,x0)f =

其中,y 为已知函数;

k 为逼近已知函数所需项数;

f 是求得的切比雪夫逼近多项式在x0处的逼近值。

程序源代码(m 文件):

function f = Chebyshev(y,k,x0) %用切比雪夫多项式逼近已知函数 %已知函数:y

%逼近已知函数所需项数:k %逼近点的x 坐标:x0

%求得的切比雪夫逼近多项式或在x0处的逼近值:f

syms t;

T(1:k+1) =t;

T(1) = sym('1');

T(2) = t;

c(1:k+1) = sym('0');

c(1)=int(subs(y,findsym(sym(y)),sym('t'))*T(1)/sqrt(1-t^2),t,-1,1)/pi;

c(2)=2*int(subs(y,findsym(sym(y)),sym('t'))*T(2)/sqrt(1-t^2),t,-1,1)/pi;

f = c(1)+c(2)*t;

for i=3:k+1

T(i) = 2*t*T(i-1)-T(i-2);

c(i) = 2*int(subs(y,findsym(sym(y)),sym('t'))*T(i)/sqrt(1-t^2),t,-1,1)/2;

f = f + c(i)*T(i);

f = vpa(f,6);

if(i==k+1)

if(nargin == 3)

f = subs(f,'t',x0);

else

f = vpa(f,6);

end

end

end

应用实例:切比雪夫应用实例。用切比雪夫公式(取6项)逼近函数

1

2x

,并求

当x=0.5时的函数值。

解:

利用程序求解方程,在MATLAB命令窗口中输入:

>> Chebyshev('1/(2-x)',6) %调用创建的函数euler,输出切比雪夫多项式的6个项再在MATLAB命令窗口中输入:

>> Chebyshev('1/(2-x)',6,0.5) %调用创建的函数euler,输出当x=0.5时的函数值输出结果:

流程图:

二、拉压杆系的静不定问题。由n根杆(CB1,CB2...CB n)组成的桁架结构如

图2-1所示,受力P作用,各杆的横截面积分别为A i,材料弹性模量为E,长度为L i,求各杆的轴力N i以及节点C处的位移。

图2-1

1、假设:①由P的作用,C点移动到C’点;②C到C’的水平距离为dx,垂直距离为dy;③各杆与水平面夹角分别为α1,α2…αi…αn;④每根杆长度的变

化为dL1,dL2…dL i…dL n;⑤力P与水平面夹角为α。

2、思路:

(1)如图2-2所示,以CB i 为例说明各杆的几何关系,由于,

≈0,因此dL i=B i C’-B i C≈B i C’-B i D=DC’,过C点作DC’的平行线CG ,因

,故,所以CF=dxcosα

i ,FG=dysinα

i

,故可得几

何方程①。

图2-2

(2)根据图2-3所示各轴力以及外力x,y方向合力为0,建立平衡方程②、③:

图2-3

(3)由公式①、②、③共有n+2个公式,求解n个轴力,以及A点位移dx、dy,建立如下所示的线性方程组:

.

.

.

(4)建立[Pcosα,Psinα,0,0,0…0]’的常数矩阵,以及如下所示的系数矩阵

(5)再用求逆法求解此线性方程组,即用常数矩阵除以系数矩阵,得出结果。

3、源程序:(文件名称为main)

clear;clc;

Ei=input('请输入各杆的刚度:(注意用[]括起来)'); %输入刚度矩阵Ei

Li=input('请输入各杆的长度:(注意用[]括起来) ');%输入杆的长度矩阵Li Ai=input('请输入各杆的横截面积:(注意用[]括起来) ');%输入杆的横截面积矩阵Ai

ai=input('请输入各杆与水平面的夹角:(注意用[]括起来) ');%输入杆与水平面的夹角矩阵ai

P=input('请输入外力P: ');%输入外加力P

a=input('请输入P与水平面的夹角: ')%输入外加力P与x的夹角

n1=length(Ei);n2=length(Li);n3=length(Ai);

if(n1~=n2|n2~=n3|n1~=n3)

disp('输入数据错误')

else

n=n1;

end%判断数据大小是否一致

Ki=Li./(Ei.*Ai);

C=zeros(n+2,1);

C(1,1)=P*cos(a);

C(2,1)=P*sin(a);

C(3:n+2,1)=zeros(n,1);%建立方程组等号右边常数的矩阵

D=zeros(n+2,n+2);

D(1,:)=[cos(ai),0,0];

D(2,:)=[sin(ai),0,0];

for(i=1:n)

D(i+2,i)=Ki(i);

end

D(3:n+2,n+1)=(-cos(ai));

相关文档
最新文档