matlab常用算法程序集.rar

  • 牧神风
    了解作者
  • matlab
    开发工具
  • 2.7MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 3
    下载次数
  • 2020-07-28 20:58
    上传日期
matlab常用算法程序集主要用于解决插值、函数逼近、矩阵特征值计算、数值微分、数值积分、方程求根、非线性方程组求解、解线性方程组的直接法、解线性方程组的迭代法、随机数生成、特殊函数计算、常微分方程的初值等问题
matlab常用算法程序集.rar
  • matlab常用算法程序集
  • 第16章 偏微分方程的数值解法
  • peEllip5m.m
    2.2KB
  • EllIni2Uyr.m
    99B
  • peHypbLax.m
    338B
  • peHypbBW.m
    384B
  • peHypbMC.m
    427B
  • peParabKN.m
    812B
  • PrIniU.m
    53B
  • peParabExp.m
    313B
  • peHypb2FL.m
    820B
  • Funval.m
    253B
  • DKIniU.m
    48B
  • peParabTD.m
    492B
  • peHypb2LF.m
    602B
  • peParabWegImp.m
    918B
  • EllIni2Uxl.m
    56B
  • peHypbYF.m
    576B
  • peParabImp.m
    642B
  • peHypbRich.m
    459B
  • peDKExp.m
    425B
  • EllIni2Uxr.m
    60B
  • peHypbMLW.m
    446B
  • peHypb2JBYW.m
    16B
  • Ini2U.m
    67B
  • EllIni2Uyl.m
    54B
  • peDKSam.m
    357B
  • peEllip5.m
    2.3KB
  • peHypbLaxW.m
    388B
  • 第15章 常微分方程的初值问题
  • DELGKT2_suen.m
    313B
  • DELGKT3_suen.m
    360B
  • DEYDS.m
    628B
  • DEYCJZ_adms2.m
    607B
  • DELGKT4_jer.m
    479B
  • DEMS.m
    572B
  • DEWT.m
    612B
  • DELGKT2_mid.m
    303B
  • DEEuler.m
    200B
  • DELGKT4_qt.m
    423B
  • Funval.m
    253B
  • DEYCJZ_hm.m
    1KB
  • DELSBRK.m
    586B
  • DEMiren.m
    501B
  • DELGKT3_kuta.m
    358B
  • DEYCJZ_yds.m
    604B
  • DEimpEuler1.m
    325B
  • DEModifEuler.m
    321B
  • NewtonRoot.m
    810B
  • DEimpEuler.m
    272B
  • DEWT_glg.m
    991B
  • DEYCJZ_mid.m
    1.2KB
  • DEYCJZ_myds.m
    702B
  • DELGKT4_lungkuta.m
    419B
  • DEYCJZ_adms.m
    406B
  • DEYCJZ_ml.m
    1.2KB
  • 第7章 数值微分
  • FivePoint2.m
    817B
  • DISimpson.m
    716B
  • FivePoint.m
    1.1KB
  • FourPoint.m
    706B
  • ThreePoint.m
    689B
  • CISimpson.m
    1.4KB
  • MidPoint.m
    276B
  • Diff2BSample.m
    806B
  • FourPoint2.m
    587B
  • DiffBSample.m
    804B
  • Richason.m
    556B
  • SmartDF.m
    624B
  • ThreePoint2.m
    560B
  • 第13章 随机数生成
  • PrimeMOD.m
    408B
  • CombineLinear.m
    579B
  • BGDist.m
    210B
  • GaussDist.m
    442B
  • BenuliDist.m
    214B
  • RelayDist.m
    286B
  • CauthyDist.m
    341B
  • LaplaceDist.m
    474B
  • MulMOD1.m
    220B
  • MixMOD.m
    452B
  • PowerDist.m
    264B
  • test.m
    243B
  • PFQZ.m
    178B
  • MulMOD2.m
    209B
  • PoisonDist.m
    360B
  • AELDist.m
    417B
  • TwoDist.m
    160B
  • WBDist.m
    337B
  • 第9章 方程求根
  • StablePoint.m
    222B
  • HalfInterval.m
    744B
  • QBS.m
    1.7KB
  • Secant.m
    748B
  • Union1.m
    689B
  • YSNewton.m
    459B
  • ModifSecant.m
    886B
  • Union2.m
    699B
  • Parabola.m
    1KB
  • StevenStablePoint.m
    296B
内容介绍
function [coff,err]= lmz(func,m,a,b,eps) if(nargin == 4) eps=1.0e-6; end syms v; maxv = 0.0; max_x = a; %记录abs(f(x)-p(x))取最大值的x for k=0:m px(k+1)=power(v,k); end %p(x)多项式 for i=1:m+2 x(i)=0.5*(a+b+(b-a)*cos(3.14159265*(m+2-i)/(m+1))); fx(i)=subs(sym(func), findsym(sym(func)),x(i)); end %初始的x和f(x) A = zeros(m+2,m+2); for i=1:m+2 for j=1:m+1 A(i,j)=power(x(i),j-1); end A(i,m+2)=(-1)^i; end c =A\transpose(fx); %p(x)的初始系数 u = c(m+2); %算法中的u tol = 1; %精度 while(tol>eps) t = a; while(t<b) %此循环找出abs(f(x)-p(x))取最大值的x t = t + 0.05*(b-a)/m; px1 = subs(px,'v',t); pt = px1*c(1:m+1); ft = subs(sym(func), findsym(sym(func)),t); if abs(ft-pt)>maxv maxv = abs(ft-pt); max_x = t; end end if max_x>b max_x = b; end %以下可参考算法的三个确定新点集的情况 if (a<=max_x)&&(max_x<=x(2)) %第一种情况 f0 = subs(sym(func), findsym(sym(func)),x(2)); px1 = subs(px,'v',x(2)); pt = px1*c(1:m+1); d1 = f0 - pt; fm = subs(sym(func), findsym(sym(func)),max_x); pm1 = subs(px,'v',max_x); pm = pm1*c(1:m+1); d2 = fm - pm; if d1*d2>0 x(2) = max_x; end else if (x(m+1)<=max_x)&&(max_x<=b) %第二种情况 f0 = subs(sym(func), findsym(sym(func)),x(m+1)); px1 = subs(px,'v',x(m+1)); pt = px1*c(1:m+1); d1 = f0 - pt; fm = subs(sym(func), findsym(sym(func)),max_x); pm1 = subs(px,'v',max_x); pm = pm1*c(1:m+1); d2 = fm - pm; if d1*d2>0 x(m+1) = max_x; end else %第三种情况 for i=2:m if(x(i)<=max_x)&& (x(i+1)>=max_x) index_x = i; break; end end %找到max_x所在区间 f0 = subs(sym(func), findsym(sym(func)),x(index_x)); px1 = subs(px,'v',x(index_x)); pt = px1*c(1:m+1); d1 = f0 - pt; fm = subs(sym(func), findsym(sym(func)),max_x); pm1 = subs(px,'v',max_x); pm = pm1*c(1:m+1); d2 = fm - pm; if d1*d2>0 x(index_x) = max_x; end end end for i=1:m+2 %重新计算f(x) fx(i)=subs(sym(func), findsym(sym(func)),x(i)); end for i=1:m+2 for j=1:m+1 A(i,j)=power(x(i),j-1); end A(i,m+2)=(-1)^i; end c =A\transpose(fx); %重新计算p(x)的系数 tol = abs(c(m+2)-u); u = c(m+2); end coff = c(1:m+1); err = u;
评论
    相关推荐