数值分析部分算法的可视化界面设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1数值分析部分算法的可视化界面设计数值计算实践—课程设计报告课题名称数值分析部分算法的可视化界面设计完成时间2013年01月17日姓名班级学号101611111584成绩一、实验目的,内容二、相关背景知识介绍三、程序代码四、运行结果五、制作过程中出现的问题,解决方法及体会一.实验目的及内容1.1实验目的:运用MATLAB将数值分析部分算法的程序制作成可视化文件,以之方便一些不熟悉编程或是不熟悉计算所用函数的人员对相关问题进行数值求解。1.2实验内容:MATLAB软件可以创建人机互动可视化界面,然后在互动界面上实现处理数据及显示相关图形的功能。1.2.1设计的思想:(1)创建可视化界面(图1.1)(2)为可视化界面添加控件(3)设置控件的的相应属性2(4)添加控件的事件代码实现处理数据及显示相关结果的功能图1.1二.相关背景知识介绍2.1lagrange插值:lagrange插值基函数为njiiijijxxxxxl0)(,nj,2,1,0,()(xlj1i=j;0ij)为n个线性无关的n次多项式,可作为],[baPn的基底,任意nnPxp)(,)()(0xlcxpjnjjn,根据插值条件:njxfxpjjn,2,1,0),()(,可得:)()()(0xlxfxLjnjjn为n次Lagrange插值多项式。2.2Newton插值:由于如果要增加一个节点,则Lagrange插值基函数)(xlj就都要改变,计算量大大增加。Newton插值具有递推性。假定)(xNj为在1j个节点),2,1,0(}{0njxjij上对函数)(xf所做的j次插值多项式,))()((00xfxN,时当1,1,0,)()((1jiPxNxNjjj,有)()()(1iijijxfxNxN,所以31,10,jxxx为)()(1xNxNjj的零点,)())(()()(1101jjjjxxxxxxAxNxN,jA为待定系数,根据插值条件及解方程组可得:n次差商型Newton插值公式为)(],,[][)(10110jiijnjnxxfxxxfxxN,进而可得到1n节点的Newton插值公式为)1()1(),(!)()()(0)(100jttttxftjxfthxNjjnjjn。2.3最小2乘多项式拟合:miminkikikiinyxayxpI00202min][(1)当拟合函数为多项式时,称为多项式拟合,满足式(1)的xpn称为最小二乘拟合多项式。特别地,当1n时,称为线性拟合或直线拟合。显然minkikikyxaI002)(为naaa,...,,10的多元函数,因此上述问题即为求),...,,(10naaaII的极值问题。由多元函数求极值的必要条件,得0)(200'minkiikikjxyxaaInj,...,1,0(2)即nkmimiijikkjiyxax000)(nj,...,1,02.4线性方程组迭代解法:(1)将系数矩阵A分为D,L,U三部分,其中A=D-L-U;D为A的对角元素部分。L为下三角矩阵,U为上三角矩阵。(2)迭代格式为:xk)1(=fBxk)((3)雅克比迭代法:ULBD1,bDf1(4)高斯-塞德尔迭代法:ULDB1,bLDf142.5数值积分2.5.1复合梯形:1)将所给区间[a,b]n等分,求步长nabh2)由公式khaxk求得点kx3)通过个等步长节点逼近积分的1)(nxf即将代入公式kx11)())()((2hnkkxfhbfaf中求得积分数值2.5.2复合辛普森:1)将所给区间[a,b]n等分,求步长nabh2)由公式khaxk,hxxkk2121,求得点3)bfxfxfafhSnkknkkn11102/1246求得积分数值2.5.3龙贝格算法引入记号)()(0hThT,)()(1hShT,)()(2hChT,)()(3hRhT,根据递推公式)(144)2(144)(11hThThTmmmmmmm进行递推,二分后得到梯形值)(0kT,进行m次加速后得到,,2,1,144144)(1)1(1)(kTTTkmmmkmmmkm,取abhk,0,求得)]()([2)0(0bfafhT,按递推公式计算)(0kT,得到表格,得出结果。2.6常微分数值解2.6.1欧拉法:一阶常微分的方程yxfy,及000)(yxy,其中bax,,给出步长h,用下列公式进行计算5nnnnyxhfyy,1进行迭代。2.6.2改进欧拉法:给定求解的初值问题yxfy,及000)(yxy,其中bax,,给出步长h用欧拉公式求其值.21,,,,11cpnpnncnnnpyyyyxhfyyyxhfyy进行迭代。2.6.3四阶龙格库塔:给定求解的初值问题yxfy,及000)(yxy,其中bax,,以及步长h,用nx和ny计算出4321,,,KKKK;用for循环。在for循环中使用公式.,,2,2,2,2,,),(6342312143211hKyhxfKKhyhxfKKhyhxfKyxfKKKKKhyynnnnnnnnnn三.程序代码3.1退出键程序(通用):functionpushbuttonEXIT_Callback(hObject,eventdata,handles)%hObjecthandletopushbuttonEXIT(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)ss=questdlg('你真的要退出','退出信息窗口!','不,我还想再看看!','是的,我要退出!','是的,我要退出!');6switchsscase'是的我要退出!'delete(handles.figure1);end3.2返回键程序(通用):functionpushbutton5_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton5(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)fopen(SZFX);delete(handles.figure1);3.3计算键程序:3.3.1插值法计算键functionpushbuttonGGG_Callback(hObject,eventdata,handles)%hObjecthandletopushbuttonGGG(seeGCBO)%eventdatareserved–tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)axes(handles.axes2)clagridoffA=str2num(get(handles.editX,’String’));B=str2num(get(handles.editY,’String’));n=length(A);symsx;y=0;ifget(handles.radiobuttonLG,’value’)fork=1:nl=1;forj=1:n7ifj~=kl=l.*(x-A(j))./(A(k)-A(j));endendy=l.*B(k)+y;endendifget(handles.radiobuttonNTC,’value’)C=zeros(n,n+1);C(:,1)=A;C(:,2)=B;forj=3:1:n+1fori=j-1:1:nC(I,j)=(C(I,j-1)-C(i-1,j-1))./(C(I,1)-C(i-j+2,1));endendy=C(1,2);fork=3:1:n+1l=1;forj=1:1:k-2l=l.*(x-A(j));endy=y+l.*C(k-1,k);endendw=(A(n)-A(1))/n;t=A(1)-2*w:w/5:A(n)+2*w;y1=subs(y,x,t);axes(handles.axes2)axis([A(1)-2*wA(n)+2*wB(1)-2*wB(n)+2*w]);plot(t,y1),gridon;8holdonplot(A,B,’D’);y2=char(y);set(handles.editJG,’string’,y2);3.3.2最小2乘多项式拟合计算键:functionpushbuttonJS_Callback(hObject,eventdata,handles)%hObjecthandletopushbuttonJS(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)axes(handles.axes1)clagridoffA=str2num(get(handles.editX,'String'));B=str2num(get(handles.editY,'String'));C=str2num(get(handles.editQXS,'String'));t=str2num(get(handles.editNHCS,'String'));n=length(A);Z=zeros(t+1);F=zeros(t+1,1);H=zeros(t+1,1);s=0;fori=1:t+1forj=1:t+1fork=1:nZ(i,j)=C(1,k)*(A(1,k)^(i+j-2))+Z(i,j);endendfork=1:nF(i,1)=C(1,k)*B(1,k)*(A(1,k)^(i-1))+F(i,1);endendH=inv(Z)*F;symsx;forv=1:t+1s=s+H(v,1).*(x^(v-1));endw=(A(n)-A(1))/n;o=A(1)-2*w:w/5:A(n)+2*w;9y1=subs(s,x,o);axes(handles.axes1)axis([A(1)-2*wA(n)+2*wB(1)-2*wB(n)+2*w]);plot(o,y1),gridon;holdonplot(A,B,'D');y2=char(s);set(handles.editJG,'string',y2);3.3.3线性方程组的迭代解法计算键:functionpushbuttonJS_Callback(hObject,eventdata,handles)%hObjecthandletopushbuttonJS(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)A=str2num(get(handles.editA,'String'));b=str2num(get(handles.editB,'String'));x=str2num(get(handles.ed

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功