美文网首页
数值代数

数值代数

作者: 啥我给忘了 | 来源:发表于2017-03-21 22:07 被阅读0次

第一次数值代数上机作业


一.

(1)不选主元的高斯消元法

A=6*eye(84)+diag(8*ones(1,83),-1)+diag(ones(1,83),1);
b=[7;15*ones(82,1);14];

n=length(A);
for k=1:n-1
    A(k+1:n,k)=A(k+1:n,k)/A(k,k);
    A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n);
end
L=tril(A,-1)+eye(n);
U=triu(A);

for j=1:n-1
    b(j)=b(j)/L(j,j);
    b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);
end
b(n)=b(n)/L(n,n);

y=b;

for j=n:-1:2
    y(j)=y(j)/U(j,j);
    y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);
end
y(1)=y(1)/U(1,1);
x=y
结果: 屏幕快照 2017-03-21 下午8.50.30屏幕快照 2017-03-21 下午8.50.30

(2)列主元

A=6*eye(84)+diag(8*ones(1,83),-1)+diag(ones(1,83),1);
b=[7;15*ones(82,1);14];
n=length(A);
for k=1:n-1
    [s,t]=max(abs(A(k:n,k)));%求第k列最大值p与位置q
    p=t+k-1;%转化为在A中的坐标
    temp1=A(k,:);%A的k与q行交换
    A(k,:)=A(p,:);
    A(p,:)=temp1;
    temp2=b(k);
    b(k)=b(p);
    b(p)=temp2;
    if (A(k,k)~=0)
    A(k+1:n,k)=A(k+1:n,k)/A(k,k);
    A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n);
    else
        stop;
    end
end

L=tril(A,-1)+eye(n);
U=triu(A);

for j=1:n-1
    b(j)=b(j)/L(j,j);
    b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);
end
b(n)=b(n)/L(n,n);

y=b;%y

for j=n:-1:2
    y(j)=y(j)/U(j,j);
    y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);
end
y(1)=y(1)/U(1,1);

x=y
结果: 屏幕快照 2017-03-21 下午8.49.30屏幕快照 2017-03-21 下午8.49.30

结论:列主元gauss消元法更加精确,且稳定性更好.

二.

(1)平方根法

A=10*eye(100)+diag(ones(1,99),1)+diag(ones(1,99),-1);
b=round(100*rand(100,1));
n=length(A);
for k=1:n
    A(k,k)=sqrt(A(k,k));
    A(k+1:n,k)=A(k+1:n,k)/A(k,k);
    for j=k+1:n
        A(j:n,j)=A(j:n,j)-A(j:n,k)*A(j,k);
    end
end
L=tril(A);
U=L';

for j=1:n-1
    b(j)=b(j)/L(j,j);
    b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);
end
b(n)=b(n)/L(n,n);

y=b

for j=n:-1:2
    y(j)=y(j)/U(j,j);
    y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);
end
y(1)=y(1)/U(1,1);
x=y;

(2)改进后的算法

A=10*eye(100)+diag(ones(1,99),1)+diag(ones(1,99),-1);
b=round(100*rand(100,1));
n=length(A);
for j=1:n
    for i=1:n
        v(i,1)=A(j,i)*A(i,i);
    end
    A(j,j)=A(j,j)-A(j,1:j-1)*v(1:j-1,1);
    A(j+1:n,j)=(A(j+1:n,j)-A(j+1:n,1:j-1)*v(1:j-1,1))/A(j,j);
end
L=tril(A);
D=diag(diag(A));
L=L-diag(diag(L))+diag(ones(1,n));
U=D*L';

for j=1:n-1
    b(j)=b(j)/L(j,j);
    b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);
end
b(n)=b(n)/L(n,n);

y=b

for j=n:-1:2
    y(j)=y(j)/U(j,j);
    y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);
end
y(1)=y(1)/U(1,1);
x=y;

相关文章

  • 数值代数

    第一次数值代数上机作业 一. (1)不选主元的高斯消元法 (2)列主元 结论:列主元gauss消元法更加精确,且稳...

  • 第一章.引论

    此章对应习题,使用python实现github link 现代数值分析对象、特点 “现代数值分析”是研究用计算机求...

  • Swift 5.1 (5) - 控制流

    控制流 For-In循环 使用for-in循环迭代数组 使用for-in循环迭代字典 使用for-in循环迭代数值...

  • 关键能力

    1)听说读写 2)计算{数值、代数、逻辑} 3)认识理想与现实的差距

  • 在“数的认识”中渗透数值推理

    今天王老师执教《1000以内数的认识》时,在帮助学生学习计数策略时,数值推理也落实得比较到位。 数值推理与学生代数...

  • 《现代数值分析》笔记目录

    一场突如其来的疫情,似乎瞬间冻结了很多东西,我们同时也看到了在这场疫情中什么是至关重要的。也是时候将浮躁的心沉下,...

  • 线性代数与数值方法

    主要分以下几个方面进行说明: 一、矩阵分解 二、线性最小二乘 三、非线性最小二乘 四、直接稀疏矩阵方法 五、迭代方...

  • 初中阶段运算能力h的4个表现

    初中阶段的运算除了求得数值结果外,还包括代数式的化简与变形、对代数式的结构与意义的探讨、方程与不等式的变形以及研究...

  • 数值分析读书笔记(2)求解线性代数方程组的直接方法

    数值分析读书笔记(2)求解线性代数方程组的直接方法 1.引言 矩阵的数值计算一般可以分为直接法和间接法 本章主要介...

  • 知识体系 v1.5

    知识体系 100 数学 101 分析 数分、实变、复变、泛函、调和、小波、数值、ODE、PDE 102 代数 高代...

网友评论

      本文标题:数值代数

      本文链接:https://www.haomeiwen.com/subject/fdeaettx.html