matlab2011实验2参考答案

更新时间:2024-04-02 05:25:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

报告名称:MATLAB试验二 符号计算

姓名: 学号: 专业: 班级:

MATLAB实验二 MATLAB符号计算

试验报告说明:

1 做试验前请先预习,并独立完成试验和试验报告。

2 报告解答方式:将MATLAB执行命令和最后运行结果从命令窗口拷贝到每题的题目下面,请将报告解答部分的底纹设置为灰色,以便于批阅。 3 在页眉上写清报告名称,学生姓名,学号,专业以及班级。 3 报告以Word文档书写。

文档命名方式: 学号+姓名+_(下划线)+试验几.doc 如:110400220张三_试验1.doc 4 试验报告doc文档以附件形式发送到maya_email@tom.com。凡文档命名不符合规范,或者发送方式不正确,不予登记。

一 目的和要求

1熟练掌握MATLAB符号表达式的创建 2熟练掌握符号表达式的代数运算 3掌握符号表达式的化简和替换 4熟练掌握符号微积分 5熟练掌握符号方程的求解

二 试验内容

1 多项式运算(必做)

1.1解方程:f(x)= x^4-10*x^3+34*x^2-50*x+25=0

%采用数值方法: >> f=[1 -10 34 -50 25]; >> roots(f)

%采用符号计算方法:

f1=sym('x^4-10*x^3+34*x^2-50*x+25') solve(f1)

1.2求有理分式R=(3x^3+x)(x^3+2)/((x^2+2x-2)(5x^3+2x^2+1))的商多项式和余多项式.

a1=[3 0 1 0] ; a2=[1 0 0 2] ; a=conv(a1,a2) ; b1=[1 2 -2] ; b2=[5 2 0 1] ; b=conv(b1,b2) ;

[p,r]=deconv(a,b) ; %注意:a b 秩序不可颠倒。

% residue用于实现多项式的部分分式展开,此处用deconv函数

报告名称:MATLAB试验二 符号计算

姓名: 学号: 专业: 班级: %%此题,有同学程序如下:

x1=[3 0 1 0], x2=[1 0 0 2],x3=[1 2 -2],x4=[5 2 0 1] x5=conv(x1,x2)

[y6,r]=deconv(x5,x3) R=deconv(y6,x4)

%%这种方法较第一种解法缺点:在除法运算中,会产生误差,故此题应先将分母的多项式相乘后,再与分子部分的多项式进行运算。

1.3 多项式插值。

下表是一个标准大气压下的蒸汽数据,用于分析温度和内能之间的关系。使用线性插值法确定温度215度时的内能,以及内能为2600KJ/kg时的温度。 温度(C) 内能(KJ/kg) 100 2506.7 150 2582.8 200 2658.1 250 2733.7 300 2810.4 400 2967.9 500 3131.6 T=[100,150,200,250,300,400,500]; U=[2506.7,2582.8,2658.1,2733.7,2810.4,2967.9,3131.6] newU=interp1(T,U,215) newT=interp1(U,T,2600) 1.4 多项式的拟合。已知: X0=0:0.5:10;

Y0=[0,82,212,326,395,526,622,738,818,909,1029,1108,1186,1330,1411,1540,1612,1726,1822,1940,2044];

对上述数据进行多项式拟合,分别采用一阶,二阶,四阶进行拟合。

>> X0=0:0.5:10;

Y0=[0,82,212,326,395,526,622,738,818,909,1029,1108,1186,1330,1411,1540,1612,1726,1822,1940,2044];

p1=polyfit(X0,Y0,1) %一阶拟合 p1 =

202.8078 3.8658 (其他略。)

2 数据分析

下表为5位学生的成绩表 学生编号 数学 1 75 2 62 语文 81 85 物理 73 79 报告名称:MATLAB试验二 符号计算

姓名: 学号: 专业: 班级:

3 71 68 60 4 58 92 75 5 73 90 81 2.1 用二维矩阵保存学生成绩信息 >> score=[75 81 73;62 85 79;71 68 60;58 92 75;73 90 81] 2.2 统计每位学生的平均分,总分和最高分 >> mean(score,2) %平均分

>> sum(score,2) %总分,注意cumsum用于求累计求和,此处用sum函数即可 >> max(score,[],2) %最高分

%%方法二: mean(score') sum(score') max(score')

2.3 统计每门课程的平均分,总分和总分 >> mean(score) %平均分 >> sum(score) %总分 >> max(score) %最高分 2.4 统计每门课程的标准差 >> std(score,0)

2.4 按照语文成绩的升序列对矩阵进行重新排序 >> [x,ind]=sortrows(score,2)

2.5 打印语文成绩排名第2的学生三门课程的成绩信息: 显示格式如下:×的数学成绩:××分,语文成绩:××分物理成绩:××分

fprintf('%d 的数学成绩是%d,语文成绩是%d,物理成绩是%d\\n', ind(4),x(4,1),x(4,2),x(4,3))

%%方法二:

[s,ind]=max(score(:,1))

fprintf('%d 的数学成绩是%d,语文成绩是%d,物理成绩是%d\\n', ind,score(ind,1),score(ind,2),score(ind,3))

3 创建符号表达式。(必做) 1.1 分别使用sym和syms命令创建符号表达式

(解答略)

f?ax3?bx2?cx?d。

1.2 使用findsym确定上题符号表达式f的自由变量以及第一自由变量。

(解答略)

1.3 执行下列语句,比较a1,a2,a3和a4的执行结果和数据类型。 >> a1=1/4+1/6

>> a2=sym(1/4+1/6)

报告名称:MATLAB试验二 符号计算

姓名: 学号: 专业: 班级:

>> a3=’1/4+1/6’

>> a4=eval('1/4+1/6')

解答略。说明:通过本题希望大家对数值类型、符号型、字符串类型等数据对象能进行区分,理解几种对象转换关系,更详细的内容请参考PPT上的图解说明。

4 置换操作—subs命令的应用(必做)。 2.1对于符号表达式f?e?x,分别求解: 2.1.1 f(0)

>> f=sym('exp(-x)'); %思考:f=sym('exp^(-x)') 写法错在那里? >> subs(f,0) ans = 1

%以下解法亦可:

>> f=sym('exp(-x)'); >> x=0; >> subs(f)

ans =

1

2.1.2 f(1),f(2),f(3),...,f(20)

>> subs(f,1:10) ans =

Columns 1 through 8

0.3679 0.1353 0.0498 0.0183 0.0067 0.0025 0.0009 0.0003 Columns 9 through 10 0.0001 0.0000

2.2 对于符号表达式f?asin(x)?5

2.2.1 用符号变量y替代sin(x) >> f=sym('a*sin(x)+5'); >> subs(f,'sin(x)','y') ans = a*(y)+5

2.2.2 求解当a=3, x=pi/3时,f的值。

>> subs(f,{'a','x'},{3,pi/3}) %思考: f2=subs(f,'a*sin(x)','3*pi/3')错误? ans =

报告名称:MATLAB试验二 符号计算

姓名: 学号: 专业: 班级:

7.5981

% 以下解答亦可

>> a=3; >> x=pi/3; >> f2=subs(f)

5符号表达式的运算

5.1已知符号表达式f(x)?1?sin2x,g(y)?2y?1,求符合函数f(g(z))(必做)。 >> f=sym('1-sin(x)^2'); >> g=sym('2*y+1'); >> compose(f,g,'z') ans =

1-sin(2*z+1)^2

5.2 求函数y?1?ln2sinx的反函数。(必做)

>> y=sym('sqrt(1+log(sin(x))^2)');

%也可写作 y=sym('sqrt(1+(ln(sin(x)))^2)'),这里要注意的是数值运算中没有ln函数。 >> g=finverse(y)

Warning: finverse(sqrt(1+log(sin(x))^2)) is not unique. > In sym.finverse at 43 %这里是警告解非唯一解 g =

asin(exp((-1+x^2)^(1/2)))

d2fx3y?5y5.3 已知f(x,y)?,求2dxdy2x?7。(必做)

x?1syms x y

f=(x^3*y-5*y)/(2*x^2+7) g =diff(diff(f,x),y)

%有同学调用方式:>> f1=diff(f,2) ,要注意这种调用方法其实是对第一自由变量x求2阶导数。

subs(g,x,1)

解:

ans =

0.5309

5.4 计算二重积分

??2?dy??y??sin(x)dx。(必做) x>> f=sym('sin(x)/x');

>> int(int(f,'x','y-pi',pi),'y',pi,2*pi) %注意对y积分,要明确指定积分变量‘y’

报告名称:MATLAB试验二 符号计算

姓名: 学号: 专业: 班级: % 注意积分区间(a,b),参数的前后顺序

ans = 2

1?x?x2?15.5 已知f?,求x?0的极限。(必做) 3x?sin2x>> f=sym('(sqrt(1+x+x^2)-1)/(x^3+sin(2*x))'); %注意sin(2*x)的写法,思考sin2x错误在哪里?

%此处注意()的使用,有同学写f=sym('(sprt(1+x+x^2)-1)/x^3+sin(2*x)'),思考错在哪里? % 注意 函数写法sqrt

limit(f,'x',0)

ans = 1/4

5.6 解方程组:x2?y2?1,xy?2 。(必做)

>> syms x y;

>> S=solve('x^2+y^2=1','x*y=2',x,y); >> xx=double(S.x),yy=double(S.y) xx =

1.1180 - 0.8660i 1.1180 + 0.8660i -1.1180 - 0.8660i -1.1180 + 0.8660i yy =

1.1180 + 0.8660i 1.1180 - 0.8660i -1.1180 + 0.8660i -1.1180 - 0.8660i

15.7 求和?(选做) 2。

(2n?1)n?1f=sym('1/(2*n-1)^2')

symsum(f,1,inf) ans = pi^2/8

5.8 在区间[0,2π],画出y(x)??syms x t;

x0?sintdt曲线。 (选做) t报告名称:MATLAB试验二 符号计算

姓名: 学号: 专业: 班级:

f=sin(t)/t; %注意f=sint/t 错在哪里? y=int(f,t,0,x) ezplot(y, [0, 2*pi])

%思考:有同学解法如下,为什么错了,错在哪里?

f=sym('sin(t)/t') ; y=int(f,'x') ;

ezplot(f,0,2*pi)

本文来源:https://www.bwwdw.com/article/3khr.html

Top