数学建模与MATLAB
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y=sum(1:100)
数学建模与MATLAB 4
例题二
• 判断一个数是否为素数?
• 在大于1的自然数中,除了1和此整数自身外,不能被其他 自然数(不包括0)整除的数,称之为素数(或质数)。
编程方法一: 循环变量 i 从2开始,到该整数 x 的1/2为 止,用 x 依次依次除以 i ,只要能被任何一个 i 整除,就不是一个素数,否则是素数。
Mathematical Modeling and MATLAB 数学建模与MATLAB 主讲人:孙越
数学建模与MATLAB
第七讲 FOR循环与二维绘图
2018/8/8
§7.1
for语句
数学建模与MATLAB 2
for语句结构
• for语句是执行已知循环次数的运算 • for 语句的结构为:
for 循环变量 = 初始值:步长:终止值 执行代码块 end
x = 0:0.2:12;y1 = bessel(1,x); figure(1) ,subplot(2,2,1) h = plot(x,y1,x,y2,x,y3); set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'}) axis([0 12 -0.5 1]) xlabel('Time')ylabel('Amplitude') print -depsc -tiff -r200 myplot
数学建模与MATLAB
10
%算法二 i=0; for x=1:15 for y=1:23 for z=1:28 %算法四 i=i+1; x=input('人数:'); if (3*x+2*y+1*z)==50&(x+y+z)==30 :'); fprintf('有%d个男人,%dy=input(' 个女人,钱 %d 个孩子!\n',x,y,z); end total=0; end k=0; end for i=1:fix(y/3) end for j=1:fix((y-i*3)/2) fprintf('一共运算了%d次!\n',i); if 2*i+j+x==y %算法三 total=total+1; i=0; fprintf('男%d 女%d 小孩%d\n',i,j,x-i-j) for x=1:15 end for y=1:23 k=k+1; i=i+1; if 3*x+2*y+(30-x-y)==50 end fprintf('有%d个男人,%dend 个女人,%d个孩子!\n',x,y,(30-x-y)); end fprintf('一共运算了%d次!\n',k); end end fprintf('一共运算了%d次!\n',i);
8
课堂练习
• 某旅行团有男人、女人和小孩共30人,在 纽约一家小饭馆里吃饭,该饭馆按人头收 费,每个男人收3美元,每个女人收2美元 ,每个小孩收1美元,共收取50美元。共有 多少组解?(答案: 9组解)
数学建模与MATLAB
9
参考答案
for x=1:30 for y=1:30 for z=1:30 if (3*x+2*y+1*z)==50 & (x+y+z)==30 fprintf('有%d个男人,%d个女人,%d个孩子!\n',x,y,z); end end end end
• 如果步长为1可以省略
数学建模与MATLAB 3
例题一
• 求累加和。如:1+2+3+…+100 %求1+2+3……+100 思考: s=0; ① 1*3*5……*99 for i=1:100 ② n!=1 × 2 × 3 × …n s=s+i; end fprintf('1+2+3……+100=%d \n',s); 在实际MATLAB编程中,为提高程序的执行速度, 常用向量运算来代替循环操作:
fprintf('一共有%d组解!\n',total);
数学建模与MATLAB
11
wenku.baidu.com
§7.2
二维绘图
数学建模与MATLAB 12
基本的绘图命令
函数名 plot loglog semilogx 功能
在线性坐标系中绘制二维图形 在对数坐标系中绘制二维图形 二维图形绘制,x 轴为对数坐标,y 轴为 线性坐标 二维图形绘制,x 轴为线性坐标,y 轴为 对数坐标 绘制双 y 轴图形
数学建模与MATLAB
14
plot 函数
plot 函数的调用格式为: • plot(Y) • plot(X1,Y1,...) • plot(X1,Y1,LineSpec,...) • plot(...,'PropertyName',PropertyValue,...) • plot(axes_handle,...) • h = plot(...) • hlines = plot('v6',...)
数学建模与MATLAB 7
例题三
• 已知5个学生4门学科的成绩,求每名学生的总成绩 • 程序如下: s=0; a=[65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87]; for k=a s=s+k; end disp(s);
数学建模与MATLAB
数学建模与MATLAB 13
semilogy
plotyy
基本的绘图步骤
步 骤
1. 准备绘图数据 2. 选择一个窗口并在窗口中给图形定位 3. 调用基本的绘图函数 4. 选择线型和标记特性 7. 设置坐标轴的极限值、标记符号和网格线 6. 使用坐标轴标签、图例和文本对图形进行注释 7. 输出图形
典型代码
数学建模与MATLAB
5
参考代码
%判断输入的数字是否为素数,考虑计算量数字不超过1000 x=input('请输入一个正整数:'); for i=2:fix(x/2) if mod(x,i)==0 break; 有因子,程序非正常终止 排除法:如果有因子,不 再往下判断是否是素数 end end 无因子,程序正常终止 if i==fix(x/2) fprintf('%d是一个素数!',x); else fprintf('%d不是一个素数!',x); end
数学建模与MATLAB 6
使用矩阵作为循环变量
for语句更一般的格式:
for 循环变量=矩阵表达式 循环体语句 end
• 执行过程是依次将矩阵的各列元素赋给循环变量,然后 执行循环体语句,直至各列元素处理完毕。实际上,“表 达式1:表达式2:表达式3”是一个仅为一行的矩阵(行向量), 因而列向量是单个数据。