当前位置:文档之家› 数学实验2-matlab编程

数学实验2-matlab编程


例15:用二分法求函数x^2-2=0的正实根.
f ( x ) x 2 2, [a, b] [1,2], f (a ) f (b) 0
1)c (a b) / 2 :
if f (c ) 0(或 | f (c ) | r ), g c;
elseif f (c ) f (a ) 0 b c;
function [p,q]=fun1(a,b,n) p=(a+b).^n; q=(a-b).^n; fun1.m
例14编制程序,从键盘输入a,b,n,计算(a+b)^n,(ab)^n aa8.m a=input(„a=„);b=input(„b=„);n=input(„n=„); [p,q]=fun1(a,b,n); fprintf(„(a+b)^n=%.4f,(a-b)^n=%.4f\n‟,p,q)
aa3.m
例4
编程产生一个 m n矩阵,使得 1 A(i, j) i j
m=input('请输入 m= '); n=input('请输入 n= '); for i = 1:m for j = 1:n A(i,j) = 1/(i+j); end end A
例5 数列极限 MATLAB程序: hold on % 图形迭加 axis([0,100,2,3]); % 设置坐标轴 grid % 加坐标网格 for n=1:90 % 循环操作 an=(1+1/n)^n; % 计算数列值 plot(n,an,'r*'); % 画出坐标点 pause(0.05); % 暂停0.05秒 fprintf('n=%d an=%.4f\n',n,an); % 显示坐标位置 end
fprintf(' M=%.5f\n ',M);
aa6.m
M-文件中选择控制命令(if命令)
多项选择控制 格式: if (condition is true) commands; elseif (condition is true) commands; else commands; end 作用:若条件成立,则执行命令集 commands. 否则,不执行。
x=input(‘成绩=’) switch fix(x/10) case {10,9} grade='A' case 8 grade='B' case 7 grade='C' otherwise grade='D' end
Break 语句
Break语句的格式为: break; 用于立即跳出包含该 break语句的各种循 环语句while和for 在循环语句中使用的 break语句一般应和if 语句配合使用 例如: while 条件1 …….. if 条件2 break; end ……… end
fprintf('k=%.0f A(%.2f,%.2f) B(%.2f,100) d=%.2f\n',k ,A(1),A(2),B(1),d);
end
M-文件中条件循环命令(while命令)
格式: while (condition is true) commands; end 作用:当条件成立时,执行命令集 commands,直到条件不成立.
if f(a)*f(c)<0 b=c; else a=c; end c=(a+b)/2; fprintf('k=%.0f,c=%.8f\n', k,c); k=k+1; end
二分法求根程序:
a=1;b=2; er=1.0e-8; k=1; c=(a+b)/2; while abs(b-a)>er if abs(f(c))==0 fprintf('k=%.0f,r=%.8f\n',k,r); break; end function y=f (x) y=x^2-2;
No
| b a | er ?
Yes
输出:迭代次数k,方程的近似根c.
二分法求根程序:
a=1;b=2; er=1.0e-8; f=inline('x.^2-2'); k=1; c=(a+b)/2; while abs(b-a)>er if abs(f(c))==0 fprintf('k=%.0f,r=%.8f\n',k,r); break; end
例15 编写一个function 函数,调用该函数 ,可以将考试分数 值化为“A” ”B” “C” ”D”等级值.
function f=grad(x) switch fix(x/10) case {10,9} grade='A' case 8 grade='B' case 7 grade='C' otherwise grade='D' end

例12:建立符号函数sgn(x)
function sn=sgn(x) if x>0 sn=1; elseif x==0 sn=0; else sn=-1; end 以sgn作为文件名存盘,即建立了函数。 调用: 在命令区执行 : sn=sgn(10)或sn=sgn(-2)

例13:建立计算(a+b)^n,(a-b)^n的函数
用M-文件定义函数
格式 function [y1,y2]=funname(x,y,a,n) 其中: function 为关键字; [y1,y2,…]为输出列表; funname为自定义的函数名; (x,y,a,n,…)为函数参数,用来传递相 关数值. 存盘时,要求用funname作为函数名.
else a c;
2) if b a er,stop, 输出根。 否则goto 1).
输入初值: f ( x ), a , b, 误差限er
c (a b) / 2
f (c ) 0 ?
No Yes
ac
No
f (a ) f (c ) 0 ?
Yes
bc
c (a b) / 2
if f(a)*f(c)<0 b=c; else a=c; end c=(a+b)/2; fprintf('k=%.0f,c=%.8f\n', k,c); k=k+1; end
实验内容
1. 编写程序实现猜数游戏
首先由计算机随机产生一个 [1,100] 之间的一 个整数,然后由用户猜测所产生的这个数。根据 用户猜测的情况给出不同的提示,如果猜测的数 大于产生的数,则显示 “High” ,小于则显示 “ Low ” ,等于则显示 “You won!”,同时退 出游戏。用户最多有 7 次机会。


例7:求和:s=1+2+…+n<3000
s=0;k=1; while s+k<3000 s=s+k; fprintf(' k=%.0f, s=%.0f\n ',k,s); k=k+1; end aa4.m

例8:求e:e=1+1+1/2!+1/3!+… (1/n!<1.0e-8) p=1;e=1;r=1;i=1; while r>=1.0e-8 p=p*i; r=1/p; e=e+r; fprintf(' i=%.0f, r=%.9f, e=%.9f \n ',i,r,e); i=i+1; end aa5.m
程序结构
程序一般包含: 数据输入 a=input('请输入数组 a[n]= '); [m,n]=size(a); M=a(1); for i=2:n if M<a(i) M=a(i); end end fprintf(' M=%.5f\n ',M);
数据处理
结果输出
M-文件中输入、输出命令
直接赋值输入: x=2; a=[1,2;3,4]; s= 'any string!';
直接输出: x
提示对话输入(input命令) x=input('请输入参数 x='); a=input('请输入矩阵 a='); s=input('Please input s=');
格式控制输出(fprintf命令) fprintf('x=%.0f, y=%.5f\n',pi,pi);
M-文件中循环控制命令(for命令)
例2:求阶乘:p=1×2 × 3 × … × n=n! n=input('请输入 n= '); p=1; for i=1:n p=p*i; fprintf(' i=%.0f, p=%.0f\n ',i,p); end aa2.m

例3:求e:e=1+1+1/2!+1/3!+…+1/n! n=input('请输入 n= '); p=1;e=1; for i=1:n p=p*i; p1=1/p; e=e+p1; fprintf(' i=%.0f, p=%.0f, e=%.8f \n ',i,p,e); end
M-文件中选择控制命令(if命令)
单项选择控制 格式: if (condition is true) commands; end 作用:若条件成立,则执行命令集 commands. 否则,不执行。

例9:求n个实数中最大的数M.
a=input('请输入数组 a[n]= '); [m,n]=size(a); M=a(1); for i=2:n if M<a(i) M=a(i); end end
B=7;
相关主题