12.计算下列定积分:
方法有很多种: 解:(1)1建立被积函数文件
function f=jifen1(t) f=exp(-2*t); 2.在命令窗口输入:
[z1,n]=quad(@jifen1,0,2) 得到结果:
z1=0.4908 n =25
(2)x=0:0.01:2;
z2=exp(2*x); trapz(x,z2) 得到结果: ans =26.8000
(3)z=quadl(inline('x.^2-3*x+0.5'),-1,1)
得到结果: z =1.6667
13.微分方程组
当t=0时,x1(0)=1,x2(0)=-0.5,求微分方程t在[0,25]上的解,并画出相空间轨道图像。
解:t=0:0.01:25;
[x,y]=dsolve('Dx=0.5-x','Dy=x-4*y','x(0)=1','y(0)=-0.5','t') x =1/2+1/2*exp(-t)
y =1/8+1/6*exp(-t)-19/24*exp(-4*t) plot(t,x,t,y)
图像:
t=0:0.01:25; x=1/2+1/2*exp(-t);
y =1/8+1/6*exp(-t)-19/24*exp(-4*t); plot(t,x,t,y)
6
10.50-0.50510152025
14.设通过测量得到时间t与变量y的数据:
t=[0 0.3 0.8 1.1 1.6 2.3];
y=[0.5 0.82 1.14 1.25 1.35 1.41]; 分别采用多项式: y=a0+a1t+a2t2 和指数函数 y=b0+b1e^t+b2te^t
进行拟合,并计算均方误差、画出拟合效果图进行比较。
解:此题可用工具箱来求解:可在commend window中输入cftool,调出工具箱。选择date;之后选择fitting,建立new fit,选择自定义,定义所需函数即可。详细过程略。 15.观察函数: y=e^x-1.5cos(2*pi*x) 在区间[-1,1]上的函数图像,完成下列两题:
(1)用函数fzero求解上述函数在[-1,1]的所有根,验证你的结果; (2)用函数fminbnd求解上述函数在[-1,1]上的极小、极大、最小和最大值,在函数图像
上标出你求得的最小值点作出验证。
7
注:可以用help fzero命令查看fzero的调用格式,fzero典型的调用方法是:
fzero(@myfun,x0) %返回函数myfun在x0附近的根; fminbnd典型的调用方法是:
fminbnd(@myfun,x1,x2) %返回函数myfun在区间[x1,x2]上的最小值。
解:(1)x=-1:0.01:1;
y=exp(x)-1.5*cos(2*pi*x); plot(x,y,'g') hold on y0=0;
plot(x,y0,'k')
z=fzero('f',-0.8) z =
-0.7985
z=fzero('f',-0.1) z =
-0.1531
z=fzero('f',0.1) z =
0.1154
3.532.521.510.50-0.5-1-1.5-1-0.8-0.6-0.4-0.200.20.40.60.81
(2)f.m
function y=f(x);
8
y=exp(x)-1.5*cos(2*pi*x); x=fminsearch('f',-0.2,0.2) x =
-0.0166
x=fminsearch('f',-1,1) x =
-1.0062 f1.m
function y=f(x);
y=-exp(x)+1.5*cos(2*pi*x); x=fminsearch('f1',0.4,0.6) x =
0.5288
x=fminsearch('f1',-0.6,-0.4) x =
-0.4897 x1=-1.0062 ;
y1=exp(x1)-1.5*cos(2*pi*x1) y1 =
-1.1333
plot(x1,y1,'*')
3.532.521.510.50-0.5-1-1.5-1.5-1-0.500.51
练习2 编程练习
1. 题目:判断101-200之间有多少个素数,并输出所有素数。编写以fun1为名的脚本文件。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),
如果能被整除,则表明此数不是素数,反之是素数。
9
====================================================
t=1;
for i=101:200 for j=1:i
if (round(i/j)==(i/j)&j~=1&j~=i) break end end
if j==i s(t)=i; t=t+1; end end
disp(['??êy:',num2str(s)]) length(s)
2.题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。编写以fun2为名的脚本文件。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
for i=100:999 n1=fix(i/100); n2=fix((i-n1*100)/10); n3=i-n1*100-n2*10;
if (n1^3+n2^3+n3^3==i) disp(i) end end
3. 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。编写以fun3为名的函数文件。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
10