Matlab实验(一)

1、下面给出一个迭代模型

写出求解该模型的M-函数。如果迭代初值为 ,那么请进行30000次迭代求出一组xy向量,然后再所有的 坐标处点亮一个点(注意不要连线),最后绘制出所需的图形。(注:这样绘制的图形又称为Henon引力线图,它将迭代出来的随机点吸引到一起,最后得出貌似连贯的引力线图。)

function [x,y]=Henons(x0,y0,n)
%x0、y0:初始值
%n:迭代次数
%返回相应的x,y的坐标值
x(1)=x0;
y(1)=y0;
for i=2:nx(i)=1+y(i-1)-1.4*x(i-1)*x(i-1);y(i)=0.3*x(i-1);
end
plot(x,y,'*');
grid on;
title('Henon引力线图');
end
%调用
[x,y]=Henons(1,1,30000)

2.试用两种方法求解代数方程 。

(1) 二分法。若在某个区间(a,b)内,f(a)*f(b)<0  ,则该区间存在方程的根。取中点 ,则可以根据 f(x1)和 f(a)、f(b)的关系确定根的范围,用这样的方法可以将区间的长度减半。重复这样的过程,直至区间长度小于预先指定的ε,则可以认为得出的区间端点是方程的解。令 ,试用二分法求区间(-4,0)内方程的解。

(2) 梯度法。假设该方程解的某个初始猜测点为 xn,则梯度法可以得出下一个近似点 。若两个点足够近,即 ,其中ε为预指定的误差限,则认为 是方程的解,否则将 设置为初值继续搜索,直到得出方程的解。令 x0=-4,,试用梯度法求解上面的方程。

(1) 二分法

%%%%%%方法一:function版本
function answer=Binary_solve(f,x,a,b,precision)
%该算法由符号变量实现
%f:相应的方程 x:自变量
%a:左区间 b:右区间
%precision:准确度
if subs(f,x,a)*subs(f,x,b)>0disp('条件不满足');return
elsewhile(abs(b-a)>precision)mid=(b+a)/2;if (subs(f,x,a)*subs(f,x,mid))<0b=mid;elseif (subs(f,x,a)*subs(f,x,mid)>0)a=mid;elseanswer=mid;%中等于0,提前退出循环break;endendanswer=mid;
end
end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
syms f x;
f=x*x*sin(0.1*x+2)-3;
root=Binary_solve(f,x,-4,0,10^(-10))root =-1.7603%%%%%%%%%%%方法二
%%%%%%%%%%%
f=@(x)(x.^2*sin(0.1.*x+2)-3)
a=-4;
b=0
root=[]
while abs(b-a)>1e-10temp=(b+a)./2;if f(b).*f(temp)<0a=temp;elseif f(a).*f(temp)<0b=temp;elseif f(b)==0root=[root,b];elseif f(a)==0root=[root,a];elseroot=[root,temp];endbreak;end
end
root=[root,temp]

(2) 梯度法

syms f x
f=x*x*sin(0.1*x+2)-3;
x0=-4;
prec=1e-12;
dif=diff(f);
x1=x0;
x2=x0;
while(1)x1=x2;x2=x1-subs(f,x,x1)/subs(dif,x,x1);if abs(x2-x1)<precbreak;end
end
answer=double(x2)

3.根据 ,求 的近似值。当n分别取100,1000,10000时,结果是多少?

(要求:分别用循环结构和向量运算(使用sum函数)来实现)

function [answer1,answer2]=pi2_div_6(n)
%answer1:sum实现pi……2/6
%answer2:for循环实现pi/6
i=1:n;
answer2=0;
disp('sum实现计时');
tic;
answer1=sqrt(6*sum(1./i./i));
toc;
disp('for循环实现计时');
tic;
for i=1:nanswer2=answer2+1/i/i;
end
answer2=sqrt(6*answer2);
toc;
end

4.根据 ,求

(1) y<3时的最大n值;

(2) 与(1)的n值对应的y值。

i=1;
y=0;
while(1)y=y+1/(2*i-1);if y>3break;endi=i+1;%注意不要写到上面的end种
end
answer1=i-1;
answer2=y-1/(2*i-1);
end

5. 已知某迭代序列 ,并已知该序列当n足够大时将趋于某个固定的常数,试选择合适的n值,找出该序列的稳态值(达到精度要求10-14),并找出其精确的数学表示。

x0=1;
prec=1e-14;
i=2;
x(1)=x0;
x(i)=x(i-1)/2+3/2/x(i-1);while(1)x(i)=x(i-1)/2+3/2/x(i-1);if(x(i)-x(i-1)<prec)break;end%实际上需要几个连续的相邻项之差都要小于prec才能达到稳态i=i+1;
end
x=x(i);

6.

function y=twof_solve( Cauchy,left,right,temp)
%Cauchy:阻尼比(行向量) left左边区间 right:右边区间
%temp:指定间隔默认0.1,越小曲线越精确
%y:返回给定阻尼比的响应值
syms t f;%Bera由于是系统变量,所以命名实际函数
k=left:temp:right;%待测区间
figure(1);
hold on;
grid on;
y=zeros(length(Cauchy),length(k));
legends='';
for i=1:length(Cauchy)%每一个Cauchy 都对于一个不同的函数,所以需要在循环内写函数Beta=sqrt(1-Cauchy(i)*Cauchy(i));Theta=atan(sqrt(1-Cauchy(i)*Cauchy(i))/Cauchy(i));f=1-1/Beta*exp(-Cauchy(i)*t)*sin(Beta*t+Theta);y(i,:)=subs(f,t,k);plot(k,y(i,:),'-');legends=[legends;['Cauchy=',num2str(Cauchy(i))]];
end
legend(legends);%legend不能写在循环内,否者会被覆盖
title('不同ε的响应曲线图');
xlabel('t');
ylabel('y');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%调用
twof_solve([0.2 0.4 0.6 0.8],0,18,0.01)

图像:

————————————————————————————————————————————————————————————————————————————————
说明:以上习题来自《控制系统计算机辅助设计 —— MATLAB语言与应用( 第3版)》,薛定宇老师的著作,解答仅供参考,如有错误,请指正。

以下是第二章习题的一些解答,仅供参考。

%2-5
syms x s;
f=x*sin(x)/((x^2+2)^0.5*(x+5));
pretty(f)
x=(s-1)/(s+1);
pretty(f)
pretty(subs(f,x))%2-7
%数值解
clear
tic;
n=63;
s=ones(n,1);
for i=2:n%s(i)=2^(i-1);s(i)=2*s(i-1);
end
disp('数值解=')
disp(sum(s))
toc;
tic;
n=63;
s=ones(n,1);
sym(s);
for i=2:n%s(i)=2^(i-1);s(i)=2*s(i-1);
end
disp('符号解=')
disp(sum(s))
toc;%2-9(寻找质数)
%使用封装好的库函数;
clear;
n=1000;
pri=primes(n);
%手撸代码
prime_num=[]
for i=2:nk=1;ifor j=2:fix(sqrt(i))k=k+1if(mod(i,j)==0)k=k-1break;endendif k>=fix(sqrt(i))prime_num=[prime_num,i];iend
end
pri==prime_num%2-10
syms n s
s=0;
n=1;
E=1;
while(abs(E)>=1e-12)
s=s+1+2/(n*n);
% if(fix(s)==s)
%     n=n+1;
%     continue;
% end
% E=s-fix(s)
E=1/(n*n)
n=n+1;
end
disp(s)
disp(n)%2-14
x=input('请输入x的值:');
h=input('请输入h的值:');
D=input('请输入D的值:');
if x>Df=h
elseif abs(x)<=Df=h/D*x
elseif x<-Df=-h
end%2-22
syms t;
t1=-1:0.1:0;
t2=0:0.1:1;
y1=sin(ones(length(t1)-1)/t1(1:end-1));
y2=sin(ones(length(t2)-1)/t2(2:end));
t0=0;
y0=double(limit(sin(1/t),0))
t=[t1(1:end-1),t0,t2(2:end)];
y=[y1',y0,y2']
plot(t,y)%2-24
theta = 0:0.01:2*pi;
figure(1);
p1=1.0013.*theta.^2;
p2=cos(7.*theta./2);
p3=sin(theta)./theta;
p4=1-cos(7.*theta).^3;
subplot(421);
polar(theta,p1);
subplot(422);
polar(theta,p2);
subplot(423);
polar(theta,p3);
subplot(424);
polar(theta,p4);%2-26
[x,y] = meshgrid([-5:0.1:5],[-5:0.1:5]);
z1=x.*y;
z2=sin(x.*y);
z3=sin(x.*x+y.*y);
z4=-x.*y.*exp(-2.*(x.^2+y.^2));
figure(1);
subplot(421);
surf(x,y,z1)
subplot(422);
surfc(x,y,z1)
subplot(423);
surfl(x,y,z1)
subplot(424);
waterfall(x,y,z1)figure(2);
subplot(421);
surf(x,y,z2)
subplot(422);
surfc(x,y,z2)
subplot(423);
surfl(x,y,z2)
subplot(424);
waterfall(x,y,z2)figure(3);
subplot(421);
surf(x,y,z3)
subplot(422);
surfc(x,y,z3)
subplot(423);
surfl(x,y,z3)
subplot(424);
waterfall(x,y,z3)figure(4);
subplot(421);
surf(x,y,z4)
subplot(422);
surfc(x,y,z4)
subplot(423);
surfl(x,y,z4)
subplot(424);
waterfall(x,y,z4)

Matlab实验(一)相关推荐

  1. matlab实验是啥,matlab实验心得体会

    matlab实验心得体会这个就是我自己做出来的,发现用soundsc听出来还行,但是用wavwrite就变的很难听. 后来发现PB写的很好,而且还能够把前面一段没有噪音的部分给保存下来,我就看了他的代 ...

  2. 控制工程matlab实验报告小结,控制工程MATLAB实验报告.doc

    控制工程MATLAB实验报告 浙江科技学院 机电系统开放性实验 设计题目: MATLAB控制机电系统实分析 专 业: 机 械 设 计 制 造及 其 自 动 化 班 级: 机 制 122 学生姓名: 王 ...

  3. 2021年春季学期-信号与系统-第七次作业参考答案-MATLAB实验题

    本文是 2021年春季学期-信号与系统-第七次作业参考答案 的小题的参考答案. ▌MATLAB 实验题 ▌ 在网络学堂下载一段音乐及其经过处理后的音乐数据文件,聆听相应的音频效果.使用在MATLAB中 ...

  4. 2021年春季学期-信号与系统-第四次作业参考答案-MATLAB实验1

    ![](https://img-blog.csdnimg.cn/20210316221220995.gif#pic_center#pic_center =800x#pic_center =640x) ...

  5. 2021年春季学期-信号与系统-第四次作业参考答案-MATLAB实验题2

    本文是 2021年春季学期-信号与系统-第四次作业参考答案 的内容. ▌MATLAB实验题2 2. 回声的模拟与消除 在山间,或者洞穴中说活,会听到回声,这是声音在相距较远的山壁之间来回反射传播产生的 ...

  6. MATLAB环境认识实验报告,matlab实验报告ljg

    matlab实验报告ljg 第 1 页 共 3 页电子信息工程学系实验报告课程名称: MATLAB 程序设计 实验项目名称: MATLAB 数值计算 实验时间:2011.4.26 班级:电信 081 ...

  7. 向量收敛在matlab中,matlab实验报告

    MATLAB 实验报告 1.在区间[-1,1]上分别取n=10.20用两组选中节点对龙格函数22511)(x x f += 作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及f(x)的图形. ...

  8. matlab高级图形设计实训上机答案,Matlab实验第一次实验答案[共8页]

    <Matlab实验第一次实验答案[共8页]>由会员分享,可在线阅读,更多相关<Matlab实验第一次实验答案[共8页](8页珍藏版)>请在人人文库网上搜索. 1.实验一 Mat ...

  9. matlab dsp实验报告,matlab实验报告14.pdf

    matlab实验报告14 Matlab实验报告 院系名称 :信息科学与工程学院 专业班级 :通信工程 1303 指导老师 :陈科文 ,支国明 ,张金焕 ,周扬 学生姓名 : 学号 : 目录 实验一 熟 ...

  10. 用符号方法求下列极限或导数matlab,实验7答案 Matlab符号计算

    matlab实验报告答案 实验7 Matlab符号计算 实验目的: 1. 掌握定义符号对象的方法: 2. 掌握符号表达式的运算法则以及符号矩阵运算. 3. 掌握求符号函数极限及导数的方法. 4. 掌握 ...

最新文章

  1. Java开发者 IntelliJ IDEA 转换 VScode 时的优缺点
  2. 11082 完全二叉树的种类 O(n) 卡特兰数
  3. 文档生成器 Xcode与Appledoc
  4. zk4元年拆解_科比5 Protro开箱测评 zk5元年拆解赏析
  5. 佐治亚理工学院 计算投资公开课第六周作业 投资策略分析平台
  6. php psr 编码规范_PHP编码风格规范
  7. 创建Maven web工程不能解析EL表达式的解决办法
  8. 读书笔记 -《硅谷之火》《硅谷热》
  9. 学计算机的高等数学,高等数学-计算机类
  10. 一场面试过后—移动前端开发
  11. 怎样用计算机算出54188,计算机应用技术练习题.doc
  12. 写给 羊 哥的一篇博客
  13. excel 删除重复项
  14. 知识图谱问答 | (3) 关系分类概述
  15. UI设计师和美工有哪些区别?
  16. 重磅:微信官方推出 Web 前端和小程序统一框架
  17. 国产化DM达梦数据库 - 用户状态查询、锁定与解锁,“登录失败次数超过限制”问题解决
  18. linux 生成内核patch,谢宝友: 手把手教你给Linux内核发patch
  19. MySQL 之JDBC编程
  20. 每日一题(2022-05-04)——找出游戏的获胜者

热门文章

  1. 查找一个数等于一组数中某些数相加的和
  2. abaqus unable start analysis job
  3. 字节终面只问了1个框架问题,我被录取了!
  4. 创意小发明:单片机制作电容电阻测量仪 (含C语言原源码,仿真文件与实物图)
  5. 【玩转Linux】vi编辑器使用教程
  6. Python学习整理(之一)
  7. 工作经历最详细的模板
  8. golang入门项目—日志收集
  9. C语言高级篇 - 1.C语言复杂表达式和指针高级应用
  10. 盛大林:深市不收的“过户费”沪市为何要收?