s=1; for n=1:inf s=s*n; if s>10^100 break end end
fprintf('%d!=%1.6e>1e100\\n',n,s)
试验五 函数文件
实验内容及步骤 1、
编写一个函数文件chengji.m,用于求两个矩阵的乘积和点乘,然后在命
令行窗口中调用该函数(提示:使用varargout函数)
要求:1)当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。 2)当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘
3)当两矩阵的尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘”
解:function varargout=chengji(a,b) [x,y]=size(a); [xx,yy]=size(b); if xx==yy&x==y&x==xx varargout{1}=a*b; varargout{2}=a.*b;
elseif x==xx&y==yy varargout{1}=a.*b; disp('只能做点乘') varargout{2}=0; elseif x==yy&xx==y
disp('可以做两种矩阵乘') varargout{1}=a*b; varargout{2}=b*a; elseif x==yy||xx==y try
varargout{1}=a*b; disp('只能做矩阵乘') varargout{2}=0; catch
varargout{1}=b*a; disp('只能做矩阵乘') varargout{2}=0; end else
error('这两个矩阵不能乘') end 2、
编写一函数qiuhe.m,实现sum(A)的功能,其中解:function y=qiuhe(a)
A为矩阵。
y=[];
[x,yy]=size(a); if x==1 s=0; for k=1:yy s=s+a(1,k); end y=s; else
for j=1:yy s=0; for i=1:x s=s+a(i,j); end y(1,j)=s; end end 3、
编写一个阶乘函数jiecheng.m,然后在试验三的编程题“分别使用for
和while语句找出最小的n值,使得n!>10100,并求出n!”程序中调用该函数。
解:function s=jiecheng(n) s=1; if n==0
s=1; elseif n<0
error('n必须大于等于0') else
for i=1:n s=s*i; end end
实验六 数据插值与曲线拟合实验
实验内容
1.已知原始数据x?0:1:4*pi,y?sin(x).*exp(?x/5),插值点为xi?0:0.3:4*pi,试用四种不同的插值方法进行插值,并在一副图中绘出四种插值曲线。 解:clear,clc x=0:1:4*pi;
y=sin(x).*exp(-x/5); xi=0:0.3:4*pi;
y1=interp1(x,y,xi,'nearset'); y2=interp1(x,y,xi,'linear'); y3=interp1(x,y,xi,'spline'); y4=interp1(x,y,xi,'cubic');
plot(x,y,'-m',xi,y1,'*r',xi,y2,'ok',xi,y3,'^b',xi,y4,'+g') legend('原始数据','最近点插值','线性插值','样条插值','立方插值')
title('第一题 四种插值方法进行插值','FontName','隶书','FontSize',20) xlabel('X轴','FontName','隶书','FontSize',16) ylabel('Y轴','FontName','隶书','FontSize',16)
2.考虑下面的数据,一位举重教练收集了不同性别的举重动员每个年龄的最大举重磅数,他相信这三者之间存在着函数关系,请创建一个年龄数组,以便估算当前队伍中队员(要求13~20岁每一岁都有)的最大举重。
最 大 举 重 13 270 250 15 290 270 17 330 310 19 20 解:clear,clc t=[13 15 17 19 20]; sex=[0,1]';
y=[270 290 330 350 380;250 270 310 330
男 女 350 380 330 360 360 ]; x=[13:20]; sex_2=[0,1]';
y_2=interp2(t,sex,y,x,sex_2) surf(x,sex_2,y_2)
3.某乡镇企业2004-2010年的生产利润如下
年份 利润(万元) 2004 2005 2006 2007 2008 2009 2010 70 122 144 152 174 196 202 要求用多项式拟合法预测出该企业2011年和2012年的利润,并绘出拟合图。 解:x=2004:2010;
y=[70 122 144 152 174 196 202]; k=polyfit(x,y,1); %得到系数 x1=2004:2013;