作业帮 > 综合 > 作业

matlab一个循环由向量a1经过各种运算(该运算程序已经弄好)得到向量a2然后计算a2-a1的模,如果模大于20小于3

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/31 01:24:41
matlab一个循环
由向量a1经过各种运算(该运算程序已经弄好)得到向量a2
然后计算a2-a1的模,如果模大于20小于30;则停止计算输出a2;否则循环;
此时对a2经过一样的各种运算得到向量a3;
然后计算a3-a2的模,如果模大于20小于30;则停止计算输出a3;否则循环;
此时对a3经过一样的各种运算得到向量a4;
然后计算a4-a3的模,如果模大于20小于30;则停止计算输出a4;否则循环;...
应该解释清楚了,帮写个循环啊.
matlab一个循环由向量a1经过各种运算(该运算程序已经弄好)得到向量a2然后计算a2-a1的模,如果模大于20小于3
假设函数f是你弄好的计算向量的运算程序,且f(a)=a1,f(b)=a2.那么程序可以写成:
clc,clear
while abs(f(b)-f(a))=30 %abs()求模,满足模=30则循环,等价与
a=f(a); 20
再问: hi,你好。我改了一下,还是不行。我给你我的循环程序行不,你帮忙给加一个结束循环的语句。
再答: 不好意思,我看错你的题目了,我开始以为a1和a2同时都变,现在看清楚才发现a1是不变的。现在程序改变如下: 设函数f是你弄好的计算向量的运算程序,a=a1,b=a2: clc,clear; a=[1 4 3]; b=[3 7 1]; %a和b是初始向量,我只是设一个例子而已 a=f(a); b=f(b); i=0; while norm(b-a)=1.0 %你的区间端点改为20和30,这只是针对我的 a=b; 例子,我的例子在这个区间收敛 b=f(b); i=i+1; end disp(i); disp(b); %注:我这个例子是收敛的。如果你用我的程序得出不收敛,即循环不能跳出,则有可能是你的初始向量取值有问题,或者处理函数f有问题,但程序应该是满足题目要求的。程序能否收敛还是取决于你的初始向量的取值还有f的处理。 我的f函数定义为: function b=f(a) c=ones(size(a)); b=0.9*a+2*c; end
再问: 兄弟还是有问题,初始向量就一个a1啊,相当于对a1运算得到下一个向量,然后判断这个向量与a1的差的模是否在20-30之间,如果是则输出这个向量。 如果不是则把新得到的这个向量当做a1继续运算,得到下个一个向量......如此循环。
再答: 那就改成这样: clc,clear; a=[]; %自己设初始值 b=f(a); i=0; while norm(b-a)=30 a=b; b=f(b); i=i+1; end disp(i); disp(b);