求解matlab程序

求解matlab程序,第1张

function [x, k, index]=Jacobi(A, b, ep, it_max)

% 求解线性方程组的Jacobi迭代法,其中

% 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的倍数的时候输出一次换行*/

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11249880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存