资源描述:
《切比雪夫级数.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、算法说明:当一个连续函数定义在区间[-1,1]上时,它可以展开成切比雪夫级数。即:其中为次切比雪夫多项式,具体表达可通过递推得出:,它们之间满足如下的正交关系:在实际应用中,可根据所需的精度来截取有限的项数,切比雪夫级数中的系数由下式决定:在MATLAB中编程实现的切比雪夫逼近法函数为:Chebyshev。功能:用切比雪夫多项式逼近已知函数。调用格式:其中,y为已知函数;k为逼近已知函数所需项数;f是求得的切比雪夫逼近多项式在x0处的逼近值。程序源代码(m文件):functionf=Chebyshev(y,k,
2、x0)%用切比雪夫多项式逼近已知函数%已知函数:y%逼近已知函数所需项数:k%逼近点的x坐标:x0%求得的切比雪夫逼近多项式或在x0处的逼近值:fsymst;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
3、),t,-1,1)/pi;f=c(1)+c(2)*t;fori=3:k+1T(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);elsef=vpa(f,6);endendend应用实例:切比雪夫应用实例。用切比雪夫公式(取6项)逼近函数,并求当x=0.
4、5时的函数值。解:利用程序求解方程,在MATLAB命令窗口中输入:>>Chebyshev('1/(2-x)',6)%调用创建的函数euler,输出切比雪夫多项式的6个项再在MATLAB命令窗口中输入:>>Chebyshev('1/(2-x)',6,0.5)%调用创建的函数euler,输出当x=0.5时的函数值输出结果:由第一项和第二项多项式及其系数计算一级切比雪夫逼近值根据前两项多项式计算其系数c(1),c(2)定义sym型变量t以及切比雪夫多项式矩阵T(n),并规定前两项为1,t开始流程图:i从3到k+1是由
5、T(i-1)和T(i-2)计算T(i)否由T(i)计算其系数c(i)结束输出结果,并设置其为六级精度求出逼近式在x0处的值输入三项i=k+1由T(i)和c(i)计算i级切比雪夫逼近值。是是否二、拉压杆系的静不定问题。由n根杆(CB1,CB2...CBn)组成的桁架结构如图2-1所示,受力P作用,各杆的横截面积分别为Ai,材料弹性模量为E,长度为Li,求各杆的轴力Ni以及节点C处的位移。图2-11、假设:①由P的作用,C点移动到C’点;②C到C’的水平距离为dx,垂直距离为dy;③各杆与水平面夹角分别为α1,α2
6、…α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,建立如下所示的线性方程
7、组:...(4)建立[Pcosα,Psinα,0,0,0…0]’的常数矩阵,以及如下所示的系数矩阵(5)再用求逆法求解此线性方程组,即用常数矩阵除以系数矩阵,得出结果。3、源程序:(文件名称为main)clear;clc;Ei=input('请输入各杆的刚度:(注意用[]括起来)');%输入刚度矩阵EiLi=input('请输入各杆的长度:(注意用[]括起来)');%输入杆的长度矩阵LiAi=input('请输入各杆的横截面积:(注意用[]括起来)');%输入杆的横截面积矩阵Aiai=input('请输入各杆与
8、水平面的夹角:(注意用[]括起来)');%输入杆与水平面的夹角矩阵aiP=input('请输入外力P:');%输入外加力Pa=input('请输入P与水平面的夹角:')%输入外加力P与x的夹角n1=length(Ei);n2=length(Li);n3=length(Ai);if(n1~=n2
9、n2~=n3
10、n1~=n3)disp('输入数据错误')elsen=n1;end%判断数据大