如何对多个变量进行迭代?
如何对多个变量进行迭代?
迭代所需要的迭代函数我已经写出,但是在写迭代程序中循环语句的时候,需要写出类似想x(i+1)=fun(x(i))这一步的时候,由于是多个变量,而且各个变量之间相互影响,因此无法对每一个变量进行单独循环,如果想用矩阵的形式表示各个变量的话,则x(i)表示的是矩阵中的第i个元素,而不是循环语句,我举一个类似的例子来说明这个问题:
迭代函数为:
function X=test(X)
a=X(1);b=X(2);c=X(3);
a=b+c;
b=a+c;
c=a+b;
迭代程序为:
function [k,piancha,xdpiancha,xk]=diedai1(X0,k)
% 输入的量--x0是初始值,k是迭代次数
x(1)=X0;
for i=1:k
x(i+1)=test(x(i));%程序中调用的fun1.m为函数y=φ(x)
piancha= abs(x(i+1)-x(i)); xdpiancha=piancha/( abs(x(i+1))+eps);
i=i+1;xk=x(i);[(i-1) piancha xdpiancha xk]
end
if (piancha >1)&(xdpiancha>0.5)&(k>3)
disp('请用户注意:此迭代序列发散,请重新输入新的迭代公式')
return;
end
if (piancha 3)
disp('祝贺您!此迭代序列收敛,且收敛速度较快')
return;
end
p=[(i-1) piancha xdpiancha xk]';
我再命令窗口输入:X0=[1,2,3];[k,piancha,xdpiancha,xk]=diedai1(X0,5)
显示错误:In an assignment A(I) = B,the number of elements in B and
I must be the same.
Error in ==> diedai1 at 3
x(1)=X0;
由于我的模型比较复杂,而且不能写成线性方程组的形式,也无法对变量进行求导,这里只是列举了一个简单的例子,请问如何对这类问题进行迭代?
例如:
a=1;b=2;c=3;
for i=1:100
a=b+c;
b=a+c;
c=a+b;
p(i)=a;
q(i)=b;
r(i)=c;
end