8、数值分析与matlab

1、今天要拷matlab代码了,而且是很恶心的算法,估计也没几个人能看得懂,就连我自己都看不懂。

  我也不知道这样做的意义何在,可能只是证明我在这世上曾经学过那么那么难的东西吧

  首先是一个matlab版的快速排序,同学们应该都看得懂吧。

  

function f=quicksort(x,left,right)
if left<right
    [i,x]=Division(x,left,right);
    x=quicksort(x,left,i-1);
    x=quicksort(x,i+1,right);
end
f=x;
function [i,x]=Division(x,left,right)
base=x(left,2);
while left<right
    while left<right&x(right,2)>=base
        right=right-1;
    end
    c=x(left,2);d=x(right,2);
    c1=x(left,1);d1=x(right,1);
    c2=x(left,3);d2=x(right,3);
    c3=x(left,4);d3=x(right,4);
    c5=x(left,5);d5=x(right,5);
    x(left,2)=d;x(right,2)=c;
    x(left,1)=d1;x(right,1)=c1;
    x(left,3)=d2;x(right,3)=c2;
    x(left,4)=d3;x(right,4)=c3;
    x(left,5)=d5;x(right,5)=c5;
%     x(left,1)=x(right,1);
    while left<right&x(left,2)<=base
        left=left+1;
    end
    c=x(left,2);d=x(right,2);
    c1=x(left,1);d1=x(right,1);
    c2=x(left,3);d2=x(right,3);
    c3=x(left,4);d3=x(right,4);
    c5=x(left,5);d5=x(right,5);
    x(left,2)=d;x(right,2)=c;
    x(left,1)=d1;x(right,1)=c1;
    x(left,3)=d2;x(right,3)=c2;
    x(left,4)=d3;x(right,4)=c3;
    x(left,5)=d5;x(right,5)=c5;
%     x(right,1)=x(left,1);
end
i=left;

  以上大概的意思就是根据向量中第二列的值,将向量的其他列进行快速排序

2、下边这个应该是二分法求函数零点的程序吧

function [xstar,index,it]=bisect(fun,a,b,ep)
if nargin<4 ep=1e-5;end
fa=feval(fun,a);
fb=feval(fun,b);
if fa*fb>0
    xstar=[fa,fb];index=0;it=0;
    return 
end
k=0;
while abs(b-a)/2>ep
    x=(a+b)/2;fx=feval(fun,x);
    if fx*fa<0
        b=x;fb=fx;
    else
        a=x;fa=fx;
    end
    k=k+1;
end
xstar=(a+b)/2;index=1;it=k;

3、逆天的chi2plot,也就是传说中的正态概率图,属于数据分析部分

function chi2plot(X)
dd=[];
p=[];
[M,N]=size(X);
MEAN=mean(X);
SS_1=inv(cov(X));
for byk=1:M;
    DD=(X(byk,:)-MEAN)*SS_1*(X(byk,:)-MEAN)';
    dd=[dd,DD];
    pp=(byk-0.5)/M;
    p=[p,pp];
end
dd=sort(dd)'
xx=chi2inv(p,N)'
plot(xx,dd,'+'),lsline
xlabel('chi2quantitle')
ylabel('Sample generalized diatance')
title('chi2plot')

4、改进的欧拉公式

function [x,y]=Euler_correct(fun,a,b,n,y0)
%改进的Euler公式,其中
%fun为一阶微分方程的函数
%a,b为求解区间的左右端点
%n为等分区间;
%y0为初始条件
x=zeros(1,n+1);y=zeros(1,n+1);
h=(b-a)/n;
x(1)=a;y(1)=y0;
for k=1:n
    x(k+1)=x(k)+h;
    y0=y(k)+h*feval(fun,x(k),y(k));
    y(k+1)=y(k)+h/2*(feval(fun,x(k),y(k))+feval(fun,x(k+1),y0));
end

  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数值分析及其MATLAB实现》所附学习光盘 ├─光盘内容和使用说明.doc 28.50KB ├─目录1.ppt 949.50KB ├─第一篇MATLAB快速入门 │ │ │ ├─第一章MATLAB简介 │ │ ├─第一篇 第一章.ppt 408.50KB │ │ └─第一篇第一章 │ │   ├─1.1.ppt 565.00KB │ │   ├─1.2.ppt 1.11MB │ │   ├─1.3.ppt 874.50KB │ │   ├─1.4.ppt 367.00KB │ │   └─1.5.ppt 448.50KB │ ├─第一篇 目录.ppt 389.00KB │ ├─第三章MATLAB的符号解 │ │ ├─第一篇 第三章.ppt 342.00KB │ │ └─第一篇第三章 │ │   ├─3.1.ppt 560.50KB │ │   └─3.2.ppt 591.00KB │ └─第二章MATLAB的基本语法 │   ├─第一篇 第二章of.ppt 324.50KB │   └─第一篇第二章 │     ├─2.1.ppt 614.50KB │     ├─2.2.ppt 393.50KB │     ├─2.3.ppt 450.00KB │     ├─2.4.ppt 438.00KB │     └─2.5.ppt 485.50KB ├─第三篇数值分析程序 │ ├─数值分析程序目录.doc 81.00KB │ └─高教数值分析 │   ├─第一章 │   │ └─第一章 误差与范数.doc 288.50KB │   ├─第七章 │   │ └─第七章 函数逼近与曲线(面)拟合.doc 309.50KB │   ├─第三章 │   │ └─第三章 解线性方程组的直接方法.doc 373.50KB │   ├─第九章 │   │ └─第九章 数值积分.doc 924.50KB │   ├─第二章 │   │ └─第二章 非线性方程(组)的数值解法.doc 509.50KB │   ├─第五章 │   │ └─第五章 矩阵的特征值与特征向量的计算.doc 538.50KB │   ├─第八章 │   │ ├─~$章 数值微分.doc 162B │   │ └─第八章 数值微分.doc 343.00KB │   ├─第六章 │   │ └─第六章 函数的插值方法.doc 793.50KB │   ├─第十章 │   │ └─第十章 常微分方程(组)求解.doc 492.00KB │   └─第四章 │     └─第四章 解线性方程组的迭代法.doc 149.00KB ├─第二篇MATLAB快速入门 │ ├─目录第二篇 MATLAB快速入门.doc 54.50KB │ └─第二篇 MATLAB快速入门 │   ├─第一章 │   │ ├─目录第二篇 第一章.doc 32.00KB │   │ ├─第一章 1.1.doc 35.00KB │   │ ├─第一章 1.2.doc 801.00KB │   │ ├─第一章 1.3.doc 471.50KB │   │ ├─第一章 1.4.doc 176.00KB │   │ ├─第一章 1.5.doc 105.50KB │   │ └─第一章 1.6.doc 288.50KB │   ├─第三章 │   │ ├─目录第二篇 第三章.doc 32.50KB │   │ ├─第三章 3.1.doc 73.50KB │   │ ├─第三章 3.10.doc 236.50KB │   │ ├─第三章 3.11.doc 150.50KB │   │ ├─第三章 3.2.doc 147.50KB │   │ ├─第三章 3.3.doc 95.00KB │   │ ├─第三章 3.4.doc 73.00KB │   │ ├─第三章 3.5.doc 42.50KB │   │ ├─第三章 3.6.doc 48.50KB │   │ ├─第三章 3.7.doc 102.50KB │   │ ├─第三章 3.8.doc 197.50KB │   │ └─第三章 3.9.doc 51.00KB │   ├─第二章 │   │ ├─目录第二篇 第二章.doc 29.50KB │   │ ├─第二章 2.1.doc 55.00KB │   │ ├─第二章 2.2.doc 45.00KB │   │ ├─第二章 2.3.doc 40.00KB │   │ ├─第二章 2.4.doc 43.50KB │   │ └─第二章 2.5.doc 74.50KB │   └─第四章 │     ├─目录第二篇 第四章.doc 30.50KB │     ├─第四章 4.1.doc 61.00KB │     ├─第四章 4.2.doc 256.00KB │     ├─第四章 4.3.doc 132.50KB │     ├─第四章 4.4.doc 117.50KB │     ├─第四章 4.5.doc 73.00KB │     └─第四章 4.6.doc 23.50KB └─第四篇书稿图形   ├─书稿图形   │ ├─第一章图形.doc 168.50KB   │ ├─第七章图形.doc 862.50KB   │ ├─第三章图形.doc 20.00KB   │ ├─第九章图形.doc 716.00KB   │ ├─第二章图形.doc 2.13MB   │ ├─第五章图形.doc 28.00KB   │ ├─第八章图形.doc 157.00KB   │ ├─第六章图形.doc 745.00KB   │ ├─第十章图形.doc 1.24MB   │ └─第四章图形.doc 725.50KB   └─书稿图形目录.doc 30.50KB 本文来自: 人大经济论坛 详细出处参考:http://www.pinggu.org/bbs/viewthread.php?tid=543074&page=1

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值