切比雪夫级数讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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-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));