中南大学MATLAB课程实践.doc

上传人:豆**** 文档编号:34321479 上传时间:2022-08-16 格式:DOC 页数:18 大小:116KB
返回 下载 相关 举报
中南大学MATLAB课程实践.doc_第1页
第1页 / 共18页
中南大学MATLAB课程实践.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《中南大学MATLAB课程实践.doc》由会员分享,可在线阅读,更多相关《中南大学MATLAB课程实践.doc(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流中南大学MATLAB课程实践【精品文档】第 - 16 - 页中南大学MATLAB课程设计实践目录公共题题目表示多晶体材料织构的三维取向分布函数(ff(1,2)是一个非常复杂的函数,难以精确的用解析函数表达,通常采用离散空间函数值来表示取向分布函数,Data.txt是三维取向分布函数的一个实例。由于数据量非常大,不便于分析,需要借助图形来分析。请你编写一个matlab程序画出如下的几种图形来分析其取向分布特征:(1)用Slice函数给出其整体分布特征;(2)用pcolor或contour函数分别给出(20, 5, 10, 15, 20, 25, 30, 3

2、5 90)切面上f分布情况(需要用到subplot函数);(3) 用plot函数给出沿取向线(1=090,45,20)的f分布情况。程序流程图程序代码common.m%课程实践公共题目file=fopen(data.txt,r);%No_use存储没有用的数据for i=1:18 No_use=fgetl(file);end%读入数据for i=1:19 %phi2 No_use=fscanf(file,%f,1); for j=1:19%phi1 for k=1:19%phi f(j,k,i)=fscanf(file,%f,1); end endend% slice给出分布特征figure(

3、1);x,y,z=meshgrid(0:5:90,0:5:90,0:5:90);slice(x,y,z,f,45,90,45,90,0,45);%pcolor给出切面f情况figure(2);for i=1:19 subplot(5,4,i); X,Y=meshgrid(0:5:90); contour(X,Y,f(:,:,i); axis ij;end%沿alpha取向线分布情况figure(3);plot(0:5:90,f(10,:,1),-bo);text(60,6,phi=45);text(60,5.5,phi2=0);运行结果第一题题目编程实现以下科学计算算法,并举一例应用之。(参考

4、书籍精通科学计算,王正林等著,电子工业出版社,年) “不动点迭代法和牛顿法非线性方程组求解” 1.1不动点迭代法解非线性方程组算法说明设含有n个未知数与n个方程的非线性方程组记为:F(x)=0,然后把上述方程组改为便于迭代的等价形式:x=(x),由此就可以构造不动点迭代法的迭代公式:这样就可以求出非线性方程组的解。调用格式:x1,n=StablePoint(x,eps)。其中,x为初始迭代向量; eps为迭代精度; x1为求出的解向量; n为迭代步数。程序流程图程序代码function x1,n=StablePoint(x,eps)%不动点迭代法求非线性方程组的根%x为初值;eps为精度,x1

5、为方程的根,n为迭代次数if(nargin=1) eps=1.0e-4;endx1=g(x);%g(x)为非线性方程组n=1;tol=1;while(toleps) x=x1; x1=g(x);%迭代 tol=norm(x1-x); n=n+1; if n1000 %迭代次数过多 disp(迭代次数超过1000,可能不收敛); return; endend举例说明首先建立g.m函数文件:function y=g(x)%输入方程组y(1)=0.7*sin(x(1)+0.2*cos(x(2);y(2)=0.7*cos(x(1)-0.2*sin(x(2);end在MATLAB命令窗口中运行:即求得非

6、线性方程组y(1),y(2)的一组解0.5264 0.5080,共迭代了12次,精度为1.0e-4。1.2牛顿法解非线性方程组算法说明牛顿迭代法的迭代公式为:错误!未找到引用源。求解步骤为:(1)给出初始值错误!未找到引用源。;(2)对n=1,2,3计算F(xn)和F(xn);(3)求出xn+1,并进行精度控制。更一般的牛顿法迭代公式为:错误!未找到引用源。,当错误!未找到引用源。 = F(x0)时,就得到简化牛顿法。在MATLAB中编程实现的非线性方程组的牛顿迭代法的函数为:newton。调用格式:x1,n,eps=newton(x,eps)其中,x为初始迭代向量; eps为迭代精度; x1

7、为求出的解向量; n为迭代步数流程图NYYNNY开始输入初始值nargin=1r=x0-fc(x0)/df(x0)n=1,tol=1tolepsx=x1 fc(x)/df(x)tol=norm(x1-x) n=n+1n1000输出结果果eps=1.0e-4迭代1000,可能不收敛结束程序代码function x1,n,eps=newton(x,eps)if(nargin=1)%默认缺省值为1e-4 eps=1.0e-4;endif(df(x)=0) disp(错误!非线性方程组微分式为零!); return;endn=1;x1=x-fc(x)/df(x);%牛顿法迭代while norm(x-

8、x1)eps x=x1; x1=x-fc(x)/df(x); if(df(x)=0) disp(错误!非线性方程组微分式为零!); return; end n=n+1; if(n1000) disp(迭代次数大于1000!); return; endend举例说明解:首先建立fc.m函数文件,输入以下内容:function y=fc(x)%定义原函数y(2)=x(2)-0.7*cos(x(2)+0.2*sin(x(1);y(1)=x(1)-0.7*sin(x(1)-0.2*cos(x(2);end再建立df.m导数文件,输入以下内容:function y= df(x)%定义导数文件y=1-0.

9、7*cos(x(1) 0.2*sin(x(2);0.7*sin(x(1) 1+0.2*cos(x(2);end在MATLAB命令窗口中输入:第二题2.1题目有3个多项试进行下列操作:(1)求(2)求的根(3)当x取矩阵A的每一个元素,求的值。其中:A (4)当以矩阵A为自变量时,求的值。其中A的值与第(3)题相同。算法说明函数调用格式:symp,r,x,x2 = question1()symp:p(x)的值;r:p(x)的根;x:x取矩阵A的每一个元素时的值;x2:以矩阵A为自变量时,的值。流程图结束使用函数polyvalm(p,A)polyval(p,A)roots(p) conv(p2,p

10、3)p1=1 2 4 0 5;p2=1 2;p3=1 2 3;A=-1 1.2 -1.4;0.75 2 3.5;0 5 2.5;开始程序代码function symp,r,x,x2 = question1()%求解课程设计29中第二题的第一小题,共四问%A为题目所给矩阵%构建多项式p1=1,2,4,0,5;p2=0,0,0,1,2;p3=0,0,1,2,3;A=-1 1.2 -1.4;0.75 2 3.5;0 5 2.5;%多项式转换为符号表达式p1=poly2sym(p1);p2=poly2sym(p2);p3=poly2sym(p3);symp=p1+p2*p3;%第一问答案p=sym2p

11、oly(symp);%符号表达式转换多项式r=roots(p);%求根x=polyval(p,A);%x为A的每一项时的值x2=polyvalm(p,A);%A为自变量时的值运行结果2.2题目用三次多项式拟合下面数据,做出图形。 x=0 0.2 0.4 0.6 0.8 1 y=0 7.78 10.68 8.37 3.97 0算法说明调用question2.m脚本文件,直接用函数polyfit绘制出拟合曲线图形,并输出多项式系数矩阵f和其误差s。流程图%求解课程设计29中第二题的第二小题x=0:0.2:1;y=0 7.78 10.68 8.37 3.97 0;f,s=polyfit(x,y,3)

12、%对数据三次多项式拟合并输出,f为拟合的函数,s为误差xx=0:0.01:1;%构建函数数据点f=polyval(f,xx);plot(x,y,ro,xx,f,b-);%作图legend(数据点,函数曲线);title(三次多项式拟合);%图像标题xlabel(x);%标出x轴ylabel(y);运行结果2.3题目拟合函数有如下形式: y=exp(x)试确定系数,并分别用线性尺度和对数尺度做出拟合曲线的图形。x=0.0129 0.0247 0.0530 0.1550 0.3010 0.4710 0.8020 1.2700 1.4300 2.4600 y=9.5600 8.1845 5.2612

13、 2.7917 2.2611 1.7340 1.2370 1.0674 1.1171 0.7620算法说明将非线性函数y=exp(x)两边同时取对数转化为线性函数,用polyfit对线性函数lny=lna+x进行拟合。调用函数question3.m求解问题,调用格式a,beta,s=question3()a:非线性函数y的系数abeta:非线性函数y的系数betas:拟合误差程序代码function a,beta,s=question3()%第二题第三小题%p(2)=a,p(1)=beta,s为误差x=0.0129,0.0247,0.0530,0.1550,0.3010,0.4710,0.80

14、20,1.2700,1.4300,2.4600;y=9.5600,8.1845,5.2616,2.7917,2.2611,1.7340,1.2370,1.0674,1.1171,0.7620;xx=0:0.001:2.4600;%将函数变化为lny=lna+beta*xp,s=polyfit(x,log(y),1);%p(1)=beta p(2)=lna s为误差p(2)=exp(p(2);a=p(2);beta=p(1);yy=p(2)*exp(p(1)*xx);%对数尺度subplot(1,2,1);semilogy(x,y,bo,xx,yy,r-);legend(数据点,lny=lna+*x);xlabel(x);ylabel(ln(y);title(对数尺度);%线性尺度作图subplot(1,2,2);plot(x,y,bo,xx,yy,r-);legend(数据点,y=a*e(*x);xlabel(x);ylabel(y);title(线性尺度);流程图运行结果

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com