matlab 计算方法的总结

此文章是我的大学课程《计算方法》的总结,所选用的代码是matlab的形式,因为内容都是个人的总结,大部分都是只是一个函数+事例搞定。。所以要问我基础的东西其实我也不是很懂。。

所以下面这文章不讲理论,,只讲函数怎么用。。能力有限哈。。

目录
一元线性线性方程的求解
   什么是一元线性方程,什么是一元非线性方程?
    二分法
    牛顿法
    弦截法

线性方程的计算方法
       相关命令的基础知识
       高斯消去法
      LT分解

插值法
     线性插值
     拉格朗日插值
     牛顿插值
     样条插值
     其他命令

数值积分
   牛顿-柯西公式
   数值积分命令

常微分方程的数值解法
   (缺课了)

最优方法
    没理论,只有命令
    二分法
 function [x,y,Result]=erfenfa(a,b)  %erfenfa是函数名(a,b)是参数名,x,y,result是返回值%二分法,抄老师的。已加上注释 %输入a,b--区间端点,要求该区间必须有一个跟%输出x---近似跟 % y--fun(x)%

y1=fun(a); %fun--函数名称,输入一个x得到他的函数值y2 = fun(b);

if y1*y2 >=0  x=[]; y=[] ; Result=[];  return ;end

delta = b-a;  %得到他的第一次距离差是否符合精度

Result=zeros(1,2) ;   %Result是迭代的试验结果,这句话的意思是初始化Result矩阵k=1;  %k=1也是初始化值。k是表示迭代多少次

while abs(delta) >1e-8  %当迭代到的初值未我想追求的精度的时候  xm=(a+b)/2;     %继续缩小a+b  /2  ym=fun(xm);  %得到函数值  Result(k,1) = xm;   %Result是保存每一次的试验结果的矩阵  Result(k,2) = ym;  k = k+1;   %k记录迭代多少次  if ym==0      %如果函数值是0,就说明我找到了那个点,函数就退出    x=xm;    return;   elseif          %否则,如果 ym*y1>0 ,所以ym*y2<0 ,说明函数点在区间右侧 所以a=xm;    ym*y1>0             a=xm;  else    b=xm;  % 说明 ym*y2>0 所以ym*y1<0 ,说明函数点在区间左侧 所以b=xm;  end  delta = b-a;  %得到下一次距离差,看是否得到精度的差end

x = (a+b)/2 ; %这里得到的是我们最终点的值y = fun(x) ; %得到的最终结果的函数值Result(k,1) = x; %保存最终结果  Result(k,2) = y;

function y = fun(x) %测试一个简单的函数y = x*(x*x-1) -1;end
一元线性线性方程的求解
 什么是线性方程,什么是非线性方程?
首先我们要理解线性方程也称一次方程。指未知数都是一次的方程。其一般的形式是ax+by+...+cz+d=0线性方程也称为一次方程。因为在笛卡尔坐标系上任何一个一次方程的表示都是一条直线。组成一次方程的每个项必须是常数或者是一个常数和一个变量的乘积。且方程中必须包含一个变量,因为如果没有变量只有常数的式子是算数式而非方程式。一元也就是一个未知量了。

非线性方程所谓的非线性方程,那就是未知的次方数不一定是一次的方程咯。非线性方程,就是因变量与自变量之间的关系不是线性的关系,这类方程很多,例如平方关系、对数关系、指数关系、三角函数关系等等。求解此类方程往往很难得到精确解,经常需要求近似解问题。相应的求近似解的方法也逐渐得到大家的重视。

一元是只有一个未知量,也就是一个x
牛顿法,切线法

基本思想:
%割线法
弦截法弦截法是一种求方程根的基该方法,在计算机编程中常用。
他的思路是这样的:任取两个数x1、x2,求得对应的函数值f(x1)、f(x2)。如果两函数值同 号,则重新取数,直到这两个函数值异号为止。连接(x1,f(x1))与(x2,f(x2))这两点形成的直线与x轴相交于一点x,求得对应的f(x), 判断其与f(x1)、f(x2)中的哪个值同号。如f(x)与f(x1)同号,则f(x)为新的f(x1)。将新的f(x1)与f(x2)连接,如此循 环。体现的是极限的思想。

function[x,y]=gexianfa(x0,x1)

%割线法程序
%输入 x0,x1 ---初始迭代点
%输出  x---近似跟
%  y---fun(x)

%{

%}

y0 = fun(x0); %fun--函数名,输入x可得到其函数值
y1 = fun(x1);  %初始化迭代点
x2 = x1-y1*(x1-x0)/(y1-y0);  % 根据y1-y0 / x1-x0 来定斜率, 通过x1,y1点
                                           %得出方程 y1-y0 / x1-x0 (x-x1) = y-y1 ;再过 这条直y=0的  点,得到这条方程
delta = x2 -x1;

while abs(delta ) >1e-8   %根据规律,先列出一条数列表达式,再算出x(k+1),再发现迭代的变化量
                                    %然后再去搞
     y2=fun(x2);
    x0 = x1;
    y0 = y1;
     x1 = x2;
     y1 = y2;
      x2 = x1-y1*(x1-x0)/(y1-y0);
    delta = x2-x1;
end
x= x2;
y = fun(x);
end

function y = fun(x)
y = x-exp(-x);
end

				
时间: 2024-11-04 05:02:56

matlab 计算方法的总结的相关文章

Matlab 矩阵卷积理解(转载)

转载自:http://blog.csdn.net/andrewseu/article/details/51783181 在图像处理的过程中,经常会看到矩阵卷积的概念,比如说用一个模板去和一张图片进行卷积,因此很有必要了解矩阵卷积到了做了什么,具体又是怎么计算的. 在matlab中有conv2函数对矩阵进行卷积运算,其中有一个shape参数,取值具体有三种: -full - (default) returns the full 2-D convolution, -'same' - returns

Matlab聚类分析(Cluster Analyses)

Matlab提供系列函数用于聚类分析,归纳起来具体方法有如下: 方法一:直接聚类,利用clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法,该方法的使用者无需了解聚类的原理和过程,但是聚类效果受限制. 方法二:层次聚类,该方法较为灵活,需要进行细节了解聚类原理,具体需要进行如下过程处理:(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离:(2)用 linkage函数定义变量之间的连接:(3)用 cophenet

【转】MATLAB conv2函数的理解

另附:http://blog.csdn.net/anan1205/article/details/12313593 原文:http://blog.csdn.net/andrewseu/article/details/51783181 在图像处理的过程中,经常会看到矩阵卷积的概念,比如说用一个模板去和一张图片进行卷积,因此很有必要了解矩阵卷积到了做了什么,具体又是怎么计算的. 在matlab中有conv2函数对矩阵进行卷积运算,其中有一个shape参数,取值具体有三种: -full - (defa

matlab协方差函数cov

Matlab中cov函数详细解读 1.向量的方差与协方差矩阵 cov(x)  求向量x的方差. cov(x)为一个数值,数值大小计算公式为S(x). cov(x,y)  求向量x与y的协方差矩阵. cov(x,y)为2*2矩阵, [S(x) C(x,y); C(y,x) S(y);] 2.矩阵协方差矩阵 cov(X)  求矩阵X的协方差矩阵.diag(cov(X))得到每一个列向量的方差.sqrt(diag(cov(X)))得到每一个列的标准差. 若X大小为M*N,则cov(X) 大小为N*N的

【分享】Matlab R2015a 发布啦!

本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html Matlab和C#混合编程文章目录:http://www.cnblogs.com/asxinyu/p/4329753.html Matlab还是一如既往的每年2个版本的发布速度.2015年3月R2015a (版本 8.5) 正式发行.在新版本中,带有四个新的工具箱以及79个产品进行的更新.MATLAB 2015a 中的许多新功能都是在 R2014b 的功能基础上升级而来的,其中

Matlab里面的SVM

支持向量机是建立在统计学习理论基础之上的新一代机器学习算法,支持向量机的优势主要体现在解决线性不可分问题,它通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题. 构造出一个具有良好性能的SVM,核函数的选择是关键.核函数的选择包括两部分工作:一是核函数类型的选择,二是确定核函数类型后相关参数的选择.因此如何根据具体的数据选择恰当的核函数是SVM应用领域遇到的一个重大难题,也成为科研工作者所关注的焦点,即便如此,却依然没有得到具体的理论或方法来指导核函数的选取 1.

Matlab 的内存分配机制

1.创建和修改数组——基本思想是保持内存的连续性 (1)当为数组赋值时,Matlab在内存中分配连续的虚拟块,在另一个地方,将数组的类型和维数等保存为头信息. (2)当向数组增加新元素时,如果原来位置的连续内存区域可以容纳新增加的数据,则扩大分配的内存,然后增加元素:如果连续块不够大,需要先重新分配能够容纳原有数据和新增数据的连续内存块,再将原有数据拷贝到新分配的内存中(在此期间,内存中会有原来数据的两份拷贝,增加了out of memory的风险),并添加新的元素到新的块中,然后释放原来的内存

距离计算方法总结 转自http://www.cnblogs.com/xbinworld/archive/2012/09/24/2700572.html#2663469

在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance).采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否. 本文的目的就是对常用的相似性度量作一个总结. 本文目录: 1. 欧氏距离 2. 曼哈顿距离 3. 切比雪夫距离 4. 闵可夫斯基距离 5. 标准化欧氏距离 6. 马氏距离 7. 夹角余弦 8. 汉明距离 9. 杰卡德距离 & 杰卡德相似系数 10. 相关系数 & 相关距离

[zz]求一维序列的信息熵(香浓熵)的matlab程序实例

对于一个二维信号,比如灰度图像,灰度值的范围是0-255,因此只要根据像素灰度值(0-255)出现的概率,就可以计算出信息熵.    但是,对于一个一维信号,比如说心电信号,数据值的范围并不是确定的,不会是(0-255)这么确定,如果进行域值变换,使其转换到一个整数范围的话,就会丢失数据,请高手指点,怎么计算. 比如数字信号是x(n),n=1~N(1)先用Hist函数对x(n)的赋值范围进行分块,比如赋值范围在0~10的对应第      一块,10~20的第二块,以此类推.这之前需要对x(n)做