数值分析(应用数学)课程常用matlab算法

本文介绍了数值分析课程中常用的MATLAB算法,涵盖代数方程组的Gauss消元、追赶法、迭代法(如不动点法和牛顿迭代法),函数插值的牛顿方法,数值积分的复化梯形、Simpson和Romberg方法,以及常微分方程的改进欧拉和四阶Runge-Kutta方法。
摘要由CSDN通过智能技术生成

数值分析(应用数学)课程常用matlab算法

数值计算是工科专业经常接触到的课程,介绍的算法包括代数方程组求解、函数插值、数值积分与微分、常微分方程求解。本文不对算法原理进行介绍,读者可参考应用数学、数值分析、工程数学等教材。(能找过来的同学估计都是上过课的)

代数方程组求解

线性方程组:Gauss消元方法(列主元素),追赶法,迭代法
非线性方程组:不动点法、牛顿迭代法

Gauss消元方法(列主元素)

function [x] = myGauss(A,B)
% Gauss消元方法(列主元素)求解方程组
%   此处显示详细说明
% A 系数矩阵
% B b向量
[n1,n2]=size(A);
n=length(B);
if (n1~=n || n2~=n)
    error("参数输入有误");
end
if isrow(B)
    B=B';
end
disp('增广矩阵A|B为:');
disp([A,B]);
x=zeros(n,1);
for i=1:n-1
    [~,m_index]=max(abs(A([i:n],i)));
    m_index=m_index+i-1;
    if (i~=m_index)
        A([i,m_index],:)=A([m_index,i],:);
        B([i,m_index])=B([m_index,i]);
        disp(['交换第' num2str(i) '和第' num2str(m_index) '行:']);
        disp([A,B]);
    end
    
    for j=i+1:n
        l=A(j,i)/A(i,i);
        A(j,:)=A(j,:)-A(i,:)*l;
        B(j)=B(j)-B(i)*l;
    end
    disp(['第' num2str(i) '次消元:']);
    disp([A,B]);
end
%回代
x(n)=B(n)/A(n,n);
for i=n-1:-1:1
    sum=0;
    for k=i+1:n
        sum=sum+A(i,k)*x(k);
    end
    x(i)=(B(i)-sum)/A(i,i);
end
disp('方程组的解为:');
disp(x);
end

追赶法

方程式
输入参数a,b,c,f分别为上图中的ai,bi,ci,fi写成数组形式

function [x] = zhuiganfa(a,b,c,f)
% 追赶法解三对角方程组
% a,b,c皆为行向量
na=length(a);
nb=length(b);
nc=length(c);
n=length(f);
if (any([na+1,nb,nc+1,n]-n))
    error("参数输入有误");
end

a=[0 a]; 
A=zeros(n,n);
for i=1:n
    A(i,i)=b(i);
end
for i=1:n-1
    A(i+1,i)=a(i+1);
    A(i,i+1)=c(i);
end
disp('方程组增广矩阵为:');
disp([A,f']);

l=zeros(1,n);
y=zeros(1,n);
x=zeros(1,n);

l(2)=a(2)/b(1);
for i=3:n
    l(i)=a(i)/(b(i-1)-c(i-2)*l(i-1));
end
disp(['l2 … l' num2str(n) '分别为:']);
disp(l(2:n));
y(1)=f(1);
for i=2:n
    y(i)=f(i)-l(i)*y(i-1);
end
disp(['y1 … y' 
  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
始于20世纪80年代,我国许多院校开设了面向工科研究生的“应用泛函分析”课程,也有一批相关的“应用泛函分析”教材问世。东华大学(前中国纺织大学)也是从20世纪80年代初开始向各工科专业研究生开设讲授泛函分析基础知识的“高等分析”课程的。以后“高等分析”更名为“现代应用数学方法”,至今已进行了25年的教学实践。一批又一批的工科研究生通过这门课程的学习,使自己的数学修养得到了显著的提高,并学到了许多在理论与实践中应用现代数学方法解决工程技术领域问题的基本方法。 本人首先建立了“高等分析”课程的框架并主讲该课程。若干年后,本人的学生姜健飞成为“高等分析”及后更名为“现代应用数学方法”课程的主讲教师,他已进行了20年的教学实践。我们感到由于工科学生在大学本科阶段未曾受到“数学分析”等数学专业课程的严格训练,要掌握目前大多数“应用泛函分析”教材所提供的内容有一定的困难,于是针对工科研究生的实际情况编写了“高等分析”及“应用泛函分析方法”讲义,并在教学实践过程中进行了多次修改,使教学的内容更易为学生理解和掌握。经过这些年的教学实践,这本讲义已日益完善。 这次由姜健飞执笔的“现代应用数学方法”教材是在这些讲义的基础上充实完成的,它具有以下五方面特色: 1. 对泛函分析的基本概念作出了精炼化的讨论; 2. 将泛函分析的一些基本方法浓缩到了各个应用分支之中; 3. 由泛函分析方法讨论矩阵的Jordan标准形理论与常微分方程组理论; 4. 通过算子导数解决各类泛函极值(变分)问题; 5. 实变函数中的Lebesgue积分概念成为泛函分析空间完备化理论的重要应用。 这些特色赋予了泛函分析这一现代数学方法在应用中的新的活力,其理论上的精炼性及应用上的有效性是国内外同类教材中不多见的。现代应用数学方法序言本教材在各章后都配有一定数量的习题,它们一方面是主讲内容的完善,另一方面也是为了使读者适时得到数学修养上的训练。这将是一本适合于工科各个专业研究生学习现代应用数学方法的好教材,对应用数学专业高年级本科生及有关专业的高校教师与工程技术人员也是一本有价值的参考书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值