最新中南大学MATLAB课程实践Word格式文档下载.docx

上传人:b****6 文档编号:19957748 上传时间:2023-01-12 格式:DOCX 页数:19 大小:235.91KB
下载 相关 举报
最新中南大学MATLAB课程实践Word格式文档下载.docx_第1页
第1页 / 共19页
最新中南大学MATLAB课程实践Word格式文档下载.docx_第2页
第2页 / 共19页
最新中南大学MATLAB课程实践Word格式文档下载.docx_第3页
第3页 / 共19页
最新中南大学MATLAB课程实践Word格式文档下载.docx_第4页
第4页 / 共19页
最新中南大学MATLAB课程实践Word格式文档下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

最新中南大学MATLAB课程实践Word格式文档下载.docx

《最新中南大学MATLAB课程实践Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《最新中南大学MATLAB课程实践Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。

最新中南大学MATLAB课程实践Word格式文档下载.docx

%读入数据

19%phi2

No_use=fscanf(file,'

%f'

1);

forj=1:

19%phi1

fork=1:

19%phi

f(j,k,i)=fscanf(file,'

end

%slice给出分布特征

figure

(1);

[x,y,z]=meshgrid(0:

5:

90,0:

90);

slice(x,y,z,f,[45,90],[45,90],[0,45]);

%pcolor给出切面f情况

figure

(2);

19

subplot(5,4,i);

[X,Y]=meshgrid(0:

contour(X,Y,f(:

:

i));

axisij;

%沿alpha取向线分布情况

figure(3);

plot([0:

90],f(10,:

1),'

-bo'

text(60,6,'

\phi=45'

text(60,5.5,'

\phi2=0'

运行结果

第一题

编程实现以下科学计算算法,并举一例应用之。

(参考书籍《精通MALAB科学计算》,王正林等著,电子工业出版社,2009年)“不动点迭代法和牛顿法非线性方程组求解”

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为方程的根,n为迭代次数

if(nargin==1)

eps=1.0e-4;

x1=g(x);

%g(x)为非线性方程组

n=1;

tol=1;

while(tol>

eps)

x=x1;

x1=g(x);

%迭代

tol=norm(x1-x);

n=n+1;

ifn>

1000%迭代次数过多

disp('

迭代次数超过1000,可能不收敛'

return;

举例说明

首先建立g.m函数文件:

functiony=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));

在MATLAB命令窗口中运行:

即求得非线性方程组y

(1),y

(2)的一组解[0.52640.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)

n为迭代步数

流程图

function[x1,n,eps]=newton(x,eps)

if(nargin==1)%默认缺省值为1e-4

if(df(x)==0)

非线性方程组微分式为零!

'

x1=x-fc(x)/df(x);

%牛顿法迭代

whilenorm(x-x1)>

eps

x1=x-fc(x)/df(x);

if(df(x)==0)

if(n>

1000)

迭代次数大于1000!

解:

首先建立fc.m函数文件,输入以下内容:

functiony=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));

再建立df.m导数文件,输入以下内容:

functiony=df(x)

%定义导数文件

y=[1-0.7*cos(x

(1))0.2*sin(x

(2));

0.7*sin(x

(1))1+0.2*cos(x

(2))];

在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为自变量时,

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=[-11.2-1.4;

0.7523.5;

052.5];

%多项式转换为符号表达式

p1=poly2sym(p1);

p2=poly2sym(p2);

p3=poly2sym(p3);

symp=p1+p2*p3;

%第一问答案

p=sym2poly(symp);

%符号表达式转换多项式

r=roots(p);

%求根

x=polyval(p,A);

%x为A的每一项时的值

x2=polyvalm(p,A);

%A为自变量时的值

2.2题目

用三次多项式拟合下面数据,做出图形。

x=[00.20.40.60.81]

y=[07.7810.688.373.970]

调用question2.m脚本文件,直接用函数polyfit绘制出拟合曲线图形,并输出多项式系数矩阵f和其误差s。

%求解课程设计29中第二题的第二小题

x=0:

0.2:

1;

y=[07.7810.688.373.970];

[f,s]=polyfit(x,y,3)%对数据三次多项式拟合并输出,f为拟合的函数,s为误差

xx=0:

0.01:

%构建函数数据点

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.01290.02470.05300.15500.30100.47100.80201.27001.43002.4600]

y=[9.56008.18455.26122.79172.26111.73401.23701.06741.11710.7620]

将非线性函数y=αexp(βx)

两边同时取对数转化为线性函数,用polyfit对线性函数lny=lna+βx进行拟合。

调用函数question3.m求解问题,调用格式[a,beta,s]=question3()

a:

非线性函数y的系数a

beta:

非线性函数y的系数beta

s:

拟合误差

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.8020,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];

0.001:

2.4600;

%将函数变化为lny=lna+beta*x

[p,s]=polyfit(x,log(y),1);

%p

(1)=betap

(2)=lnas为误差

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-'

lny=lna+β*x'

ln(y)'

对数尺度'

%线性尺度作图

subplot(1,2,2);

y=a*e^(β*x)'

线性尺度'

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1