切比雪夫级数讲解.docx
《切比雪夫级数讲解.docx》由会员分享,可在线阅读,更多相关《切比雪夫级数讲解.docx(26页珍藏版)》请在冰豆网上搜索。
![切比雪夫级数讲解.docx](https://file1.bdocx.com/fileroot1/2022-10/9/b3ffb3bb-f7ba-452e-9af1-6215586f4d76/b3ffb3bb-f7ba-452e-9af1-6215586f4d761.gif)
切比雪夫级数讲解
算法说明:
当一个连续函数定义在区间[-1,1]上时,它可以展开成切比雪夫级数。
即:
其中
为
次切比雪夫多项式,具体表达可通过递推得出:
,
它们之间满足如下的正交关系:
在实际应用中,可根据所需的精度来截取有限的项数,切比雪夫级数中的系数由下式决定:
在MATLAB中编程实现的切比雪夫逼近法函数为:
Chebyshev。
功能:
用切比雪夫多项式逼近已知函数。
调用格式:
其中,y为已知函数;
k为逼近已知函数所需项数;
f是求得的切比雪夫逼近多项式在x0处的逼近值。
程序源代码(m文件):
functionf=Chebyshev(y,k,x0)
%用切比雪夫多项式逼近已知函数
%已知函数:
y
%逼近已知函数所需项数:
k
%逼近点的x坐标:
x0
%求得的切比雪夫逼近多项式或在x0处的逼近值:
f
symst;
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;
fori=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项)逼近函数
,并求当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...CBn)组成的桁架结构如图2-1所示,受力P作用,各杆的横截面积分别为Ai,材料弹性模量为E,长度为Li,求各杆的轴力Ni以及节点C处的位移。
图2-1
1、假设:
①由P的作用,C点移动到C’点;②C到C’的水平距离为dx,垂直距离为dy;③各杆与水平面夹角分别为α1,α2…αi…αn;④每根杆长度的变化为dL1,dL2…dLi…dLn;⑤力P与水平面夹角为α。
2、思路:
(1)如图2-2所示,以CBi为例说明各杆的几何关系,由于
,
≈0,因此dLi=BiC’-BiC≈BiC’-BiD=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));
D(3:
n+2,n+2)=(-sin(ai));%建立方程组系数矩阵
x=D\C;x=x';%求解该线性方程组,得出C点位移以及每根杆的轴力
disp('节点在x、y方向上的位移分别:
')
x(n+1:
n+2)
disp('各杆的轴力分别为:
')
x(1:
n)%输出结果
4、流程图:
是否
5、程序举例应用:
设三根杆组成的支架如图2-4所示,挂一重物P=3000N。
设L=3m,各杆的横截面积分别为:
A1=150
10-6m2,A2=200
10-6m2,A3=300
10-6m2,材料的弹性模量均为E=200
109N/m2,求各杆所受力的大小以及C点位移
图2-5
解:
①运行main文件(即前文中写的源程序);
②输入题中所给数据;
[200e9,200e9,200e9];
[3/sin(pi/3),3/sin(pi/2),3/sin(pi/4)];
[150e-6,200e-6,300e-6];
[pi/3,pi/2,3*pi/4];
3000;
0;
③得出结果;
(1)
;
一、流程图:
若不成立修改
二、源程序代码:
建立被积函数文件funo
funo.m
functionf=funo(x)
f=(1./((2*pi).^0.5)).*exp(-x.^2./2);
计算积分,在MATLAB命令窗中输入:
>>quad('funo',0,1)
三、结果:
ans=
0.3413
(2)
;
一、流程图:
若不成立修改
二、源程序代码:
计算积分,在MATLAB命令窗中输入:
>>symsx;
>>y=sin(x)./x;
>>eval(int(y,x,0,1))%eval()函数的功能就是将括号内的字符串视为语句并运行
三、结果:
ans=
0.9461
(3)
;
一、流程图:
若不成立修改
二、源程序代码:
建立被积函数文件funs
funs.m
functionf=funs(x)
f=x.^(-x);
计算积分,在MATLAB命令窗中输入:
>>quad('funs',0,1)
三、结果:
ans=
1.2913
(4)
;
一、流程图:
若不成立修改
二、源程序代码:
建立被积函数文件funf
funf.m
functionf=funf(x)
f=exp(2x)*[sin(x)].^2;
计算积分,在MATLAB命令窗中输入:
>>d=pi/1000;
>>x=0:
d:
2*pi;
>>nt=length(x);
>>y=funs(x);
>>sc=cumsum(y)*d;
>>scf=sc(nt)
三、结果:
scf=
1.9970
(5)
;
一、流程图:
若不成立修改
二、源程序代码:
在MATLAB命令窗中输入:
>>f=inline('(1.+(r.^2).*sin(o)).^0.5','r','o');
>>I=dblquad(f,0,1,0,2*pi)
三、结果:
I=
6.1879