% A --- 方程组的系数矩阵
% b --- 方程组的右端项
% ep --- 精度要求。省缺为1e-5
% it_max --- 最大迭代次数,省缺为100
% x --- 方程组的解
% k --- 迭代次数
% index --- index=1表示迭代收敛到指定要求;
% index=0表示迭代失败
if nargin <4 it_max=100end %输入参数少于4时,默认最大迭代次数为100
if nargin <3 ep=1e-5end %输入参数少于3时,默认精度要求为1e-5
n=length(A) %矢量或矩阵A的列长度,即方程的个数
k=0%初值为0
x=zeros(n,1)y=zeros(n,1)index=1%初值设置
while 1 %while-end 循环开始
for i=1:n%i循环次数
y(i)=b(i)%给y赋值
for j=1:n %j循环次数
if j~=i %条件判断,j≠i时,
y(i)=y(i)-A(i,j)*x(j) %y(i)的值修改
end
end
if abs(A(i,i))<1e-10 || k==it_max %A的主对角线元素的绝对值小于1e-10或k=最大迭代次数时,
index=0return %表明迭代失败
end
y(i)=y(i)/A(i,i) %判断,j=i时,y(i)的值修改
end
if norm(y-x,inf)<ep %判断,y-x的无穷范数小于精度要求,
break %返回下一步,继续计算
end
x=yk=k+1 %x得到y值,计算总迭代次数k
end%while-end 循环结束
#include<stdio.h>main()
{
int
p,s,i,a=0/*p是输入的数字,s是p和1~10的乘积,a是用来控制输出换行的*/
printf("请输入一个数p:")
scanf("%d",&p)
for(i=1i<=10i++)/*这是一个for循环,就是i初始等于1,然后执行花括号内的语句,没执行一次自加1,结束条件是知道i=10*/
{
s=1
s=s*p
printf("%d*%d=%d",p,i,s)
a++
if(a%2==0)
printf("\n")/*当a变为2的倍数的时候输出一次换行*/
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)