
分类: 电脑/网络 >> 软件
问题描述:
如Xn+1=(Xn+25)Xn (n=0,1,2,3,4,5)
Xo=03
求X1000是多少
解析:
x=0:1000;
x(1)=03;
因为在MATLAB的数组中没有0下标,所以从1开始即X0=X1,所求的X1000=X1001
循环语句中默认步长为1
for n=1:1000
x(n+1)=(x(n)+25)x(n);
end
x(1001)
function [x k]=EqtsSOR(A,b,x0,omiga,eps)
%超松弛(SOR,Successive Over-Relaxation)迭代法求解线性方程组Ax=b
%[x k]=EqtsSOR(A,b,x0,eps)
%x:解向量,列向量
%k:迭代次数
%A:系数矩阵
%b:列向量
%x0:迭代初始值,列向量
%omiga:松弛因子,可缺省,缺省值为1,即为GS迭代法
%eps:误差限,可缺省,缺省值为05e-6
%
%应用举例:
%A=[4 3 0;3 4 -1;0 -1 4];b=[24;30;-24];x0=[1;1;1];omiga=125;
%[x k]=EqtsSOR(A,b,x0,omiga,05e-6)
%x=EqtsSOR(A,b,x0)
if nargin==4
eps=05e-6;
end
if nargin==3
omiga=1;
eps=05e-6;
end
%检查输入参数
n=length(b);
if size(A,1) ~= n || n ~= length(x0)
disp('输入参数有误!');
x=' ';
k=' ';
return;
end
%迭代求解
k=0;
x=zeros(n,1);
while 1
k=k+1;
for i=1:n
z=0;
for j=1:i-1
z=z+A(i,j)x(j);
end
for j=i+1:n
z=z+A(i,j)x0(j);
end
x(i)=(1-omiga)x0(i)+omiga(b(i)-z)/A(i,i);
end
if norm(x-x0)<=eps || k==30
break;
end
x0=x;
end
if k==30
disp('迭代次数太多!')
x=' ';
end
return;
以上就是关于怎样在matlab中执行循环迭代全部的内容,包括:怎样在matlab中执行循环迭代、sor迭代算法的matlab程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)