数值计算代码

这篇博客详细介绍了数值计算的各种方法,包括顺序Gauss消去法、列主元Gauss消去法、LU分解、二分法、不动点迭代法、牛顿迭代法、Jacobi迭代法、Gauss-Seidel迭代法、逐次超松弛SOR法、共轭梯度法和最速下降法,以及二阶椭圆方程的五点差分格式。
摘要由CSDN通过智能技术生成

一、顺序Gauss消去法

function x=order_gauss(a,b,flag)
if nargin<3,flag=0;end
n=length(b);
a=[a,b];
for k=1:n-1
        if (a(k,k)==0)
            disp('对角元素为0!')
            return;
        end
        a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))...
            -a((k+1):n,k)*a(k,(k+1):(n+1))/a(k,k)
         a((k+1):n,k)=zeros(n-k,1);
        if flag==0,a,end
end
x=zeros(n,1)
x(n)=a(n,(n+1))/a(n,n)
for k=n-1:-1:1
    x(k,:)=(a(k,(n+1))-a(k,(k+1):n)*x((k+1):n))/a(k,k);
end

二、列主元Gauss消去法

function x=line_main_gauss(a,b,flag)
if nargin<3,flag=0;end
n=length(b);
a=[a,b];
for k=1:(n-1)
  [am, m]=max(abs(a(k:n,k)));m=m+k-1
  if m>k
    t=a(k,:);
    a(k,:)=a(m,:)
    a(m,:)=t
  end
        a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))...
            -a((k+1):n,k)*a(k,(k+1):(n+1))/a(k,k)
         a((k+1):n,k)=zeros(n-k,1);
        if flag==0,a,end
end
x=zeros(n,1)
x(n)=a(n,(n+1))/a(n,n)
for k=n-1:-1:1
    x(k,:)=(a(k,(n+1))-a(k,(k+1):n)*x((k+1):n))/a(k,k);
end
    
    

三、LU分解

function[l,u]=lu(a)
n=length(a)
l=eye(n,n);u=zer
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值