matlab课程设计

发布 2022-10-01 01:43:28 阅读 3576

matlab程序设计实践。

题目 matlab程序设计实践8—9页。

学生姓名韩素琦。

学号 0604090916

指导教师汪冰峰。

学院材料科学与工程学院

专业材料压力加工。

完成时间 2024年4月12日

matlab程序设计实践报告。

一. 勒让德逼近编程实现“勒让德逼近”,并用勒让德公式(取6项)逼近函数:1/(2-x),并求出当x=0.5时的函数值。

1 算法说明:

当一个连续函数定义在区间[-1,1]上时,它可以展开成勒让德级数。即:

其中pn(x)为n次勒让德多项式

勒让德的逼近要求被逼近函数定义在区间【-1,1】上,勒让德多项式也可以通过递推来定义:

它们之间满足如下的正交关系:

在实际应用中,可以根据所需的精度来截取有限项数。勒让德级数中的系数由下式确定:

在matlab中编程实现的勒让德逼近法函数为:legendre。

功能:用勒让德多项式逼近已知函数。

调用格式:f= legendre(y,k)或f= legendre(y,k,x0)

其中,y为已知函数;

k为逼近已知函数所需项数;

x0为逼近点的x坐标:

f为求得的勒让德逼近多项式或在x0处的逼近值。

2 源程序:

第一个源程序:

function f=legendre(y,k,x0)

用勒让德多项式逼近已知函数。

已知函数:y

逼近已知函数所需项数:k

逼近点的x坐标:x0

求得的勒让德逼近多项式或在x0处的逼近值:f

syms t;

p(1:k+1)=t;

p(1)=1;

p(2)=t;

c(1:k+1)=0.0;

c(1)=int(subs(y,findsym(sym(y)),sym('t'))p(1),t,-1,1)/2;

c(2)=int(subs(y,findsym(sym(y)),sym('t'))p(2),t,-1,1)/2;

f=c(1)+c(2)*t;

for i=3:k+1

p(i)=(2*i-3)*p(i-1)*t-(i-2)*p(i-2))/i-1);

c(i)=int(subs(y,findsym(sym(y)),t)*p(i),t,-1,1)/2;

f=f+c(i)*p(i);

if(i==k+1)

if(nargin==3) %输入参数个数为三。

f=subs(f,'t',x0);

elsef=vpa(f,6); 对逼近值f取六位有效数字。

end end

end 第二个源程序:

> f=legendre('1/(2-x)',6)

f=legendre('1/(2-x)',6,0.5)

运行结果:f =

0.0955158*t - 0.0000116697*t*(2.

2*t*(2.25*t*(4.66667*t - 2.

33333*t*(7.5*t^2 - 2.5)) 10.

125*t^2 - 3.375) -5.86667*t + 2.

93333*t*(7.5*t^2 - 2.5)) 0.

0000565953*t*(2.25*t*(4.66667*t - 2.

33333*t*(7.5*t^2 - 2.5)) 10.

125*t^2 - 3.375) +0.00154825*t*(7.

5*t^2 - 2.5) -0.000275682*t*(4.

66667*t - 2.33333*t*(7.5*t^2 - 2.

5)) 0.0305351*t^2 + 0.539128f =

从逼近结果上来看,函数的准确值为1/(2-0.5)=0.6667.

流程图如下:

第一题流程图:是。否。

是。否。

是 第二题流程图:

二.编程解决以下科学计算和工程实际问题。

1) 简支梁受左半均匀分布载荷q及右边l/4处集中力偶m0作用(如下图1-1),求其弯矩、转角和挠度。设l=2m,q=1000n/m,m0=900n*m,e=200*109n/m2,i=2*10-6m4.

图1-11 解题思路:

首先对简支梁进行受力分析,受力分析图(如下图1-2)所示:

图1-2第一步:计算支反力。

设支座a和b处的支反力分别为fay和fby,则据∑ma=0,∑fy=0得到平衡方程为:

fby=(q*l^2/8+m0)/l

fay=q*l/2-fby

第二步:建立弯矩方程。

以截面c,d为分界面,将梁划分为ac,cd,db三段。

分别建立ac,cd,db三段对应的弯矩方程:

m1=fay*x-q*x.^2/2; 0≦x≦l/2

m2=fby*(l-x)-m0; l/2≦x≦3l/4

m3=fby*(l-x3l/4≦x≦l

第三步:建立挠曲轴近似微分方程并积分。

建立挠曲轴近似微分方程d2y/dx2=m(x)/ei

对m/ei积分,得转角a,再做一次积分,得挠度y,每次积分都有一个待定的积分常数。

a=∫(m)*dx/(e*i)+ca= a0(x)+ca, 此处设a0(x)= cumtrapz(m)*dx/(e*i

y=∫(a)*dx+cy=∫a0(x) *dx+ca*x+cy,此处设y0(x)=cumtrapz(a0)*dx

第四步:确定相应的积分常数。

ca,cy由边界条件y(0)=0,y(l)=0确定。

y(0)= y0(0)+cy=0

y(l)= y0(l)+ca*l+cy=0

即[0 1;l 1] [ca;cy]=[y0(0);-y0(l)]

ca;cy]=[0,1;l,1]\[y0(0);-y0(l)];

第五步:根据计算结果绘制弯矩、转角以及挠度图形。

源程序:l=2;q=1000;m0=900;e=200e9;i=2e-6; %输入已知参数。

fby=(q*l^2/8+m0)/l;fay=q*l/2-fby; %求支反力。

x=linspace(0,l,101);dx=l/100linspace是线性空间向量。

m1=fay*x(1:51)-q*x(1:51).^2/2; %分三段用数组列出m数组。

m2=fby*(l-x(52:76))-m0;

m3=fby*(l-x(77:101));

m=[m1,m2,m3写出完整的m数组。

a0=cumtrapz(m)*dx/(e*i由m积分求转角a

y0=cumtrapz(a0)*dx由转角积分求挠度y

c=[0,1;l,1]\[y0(1);-y0(101由边界条件求积分常数。

ca=c(1),cy=c(2),a=a0+ca;y=y0+ca*x+cya为转角,y为挠度,求出转角和挠度的完整数值。

subplot(3,1,1),plot(x,m),grid %绘制弯矩图形。

subplot(3,1,2),plot(x,a),grid %绘制转角图形。

subplot(3,1,3),plot(x,y),grid %绘制挠度图形。

3 运行结果:

ca =1.4624e-004cy =

流程图:2)实验一用ode45,ode23及ode113解下列微分方程:

源程序:matlab命令窗口中输入:(或新建一m文件。

fun1=inline('x-y','x','y');

x23,y23]=ode23(fun1,[0,3],1)

x45,y45]=ode45(fun1,[0,3],1)

x113,y113]=ode113(fun1,[0,3],1)

f=dsolve('dy=x-y','y(0)=1','x');

a=[1,2,3];

y=subs(sym(f),findsym(f),a)

运行结果:x23 =

y23 =

x45 =

MATLAB课程设计

1 求被控对象传递函数g s 的matlab描述。num 789 6312 11835 den 1 14 56 64 0 0 gs tf num,den transfer function 789 s 2 6312 s 11835 s 5 14 s 4 56 s 3 64 s 2 2 求被控对象脉冲...

MATLAB课程设计

课程设计。题目 matlab计算器。姓名 班级 学院 专业 完成时间。1总体设计。该计算器程序主要是matlab来制作,界面主要由四个静态文本框 21个运算按钮和两个动态文本框组成。实现的运算功能有四则运算 加 减 乘 除。而且添加了括号使人们使用时更加简单。这些计算功能主要调用了matlab的自定...

MATLAB课程设计

matlab课程设计。如图所示,为测量系统的示意图,它由两个能相互转动的连杆,角度编码器和滚轮等组成。o1为固定点,o2点为转动点,o3点为滚轮的中心,连杆的有效长度分别为l1和l2。任一位置时,连杆1相对于某基准位置的角度为 1,两连杆的相对角度为 2。其中对于 1,取垂直方向为基准线,在基准线左...