本文源于一次课题作业,部分自己写的,部分借用了网上的demo

  • 牛顿迭代法(1)
x=1:0.01:2;
y=x.^3-x.^2+sin(x)-1;
plot(x,y,'linewidth',2);grid on;%由图像可知 根在1.05到1.15之间 syms x
s0=diff(x^3-x^2+sin(x)-1,x,1);
% 得到s0= cos(x) - 2*x + 3*x^2
% 迭代方程为 y=x-(x.^3-x.^2+sin(x)-1)/(cos(x) - 2.*x + 3*x.^2)
clear;
x=1.15;
for i=1:30
x=x-(x.^3-x.^2+sin(x)-1)/(cos(x) - 2.*x + 3*x.^2)%根据牛顿迭代法公式。一直迭代计算30次。
end
%可得 x取值为1.0935;
  • 牛顿迭代法(2)
%%   绘制图形。判断跟的大概位置。
x=1:0.01:2;
f=x.^3-x.^2+sin(x)-1;
plot(x,f,'linewidth',2);grid on;%由图像可知 根在1.05到1.15之间
%%
clc,clear
syms x
f=x.^3-x.^2+sin(x)-1;%所求函数
df=diff(f,x); %求取一阶导数
eps=1e-4; %误差判断
x0=1.15; %迭代初始值。
cnt=0;
MAXCNT=20; %最大循环次数
while cnt<MAXCNT %防止无限循环
x1=x0-subs(f,x,x0)/subs(df,x,x0); %去掉这个分号,可以看到迭代过程.
if (abs(x1-x0)<eps)
break;
end
x0=x1;
cnt=cnt+1;
end
if cnt==MAXCNT
disp '不收敛'
else
vpa(x1,8)
end
  • LU分解法

被调函数:


function [L,U]=lufj(A)
% 利用紧凑格式法原理 编写的LU 分解
[n,m]=size(A); % 获取A矩阵的行和列
if m~=n %判断行列相等与否
error('Not a squared matrix1');
else
A(2:n)=A(2:n)/A(1,1);
for k=2:n-1
A(k,k:n)=A(k,k:n)-A(k,1:k-1)*A(1:k-1,k:n);
A(k+1:n,k)=(A(k+1:n,k)-A(k+1:n,1:k-1)*A(1:k-1,k))/A(k,k);
end %都是根据定义进行循环计算。
end
L=A;U=A;
for i=1:n
L(i,i)=1;
L(i,i+1:n)=0;
U(i,1:i-1)=0;
end

主函数:

%%  需要调用lufj函数;
A=[-2 -2 3 5
1 2 1 -2
2 5 3 -2
1 3 2 3]
b=[-1
4
7
0]
% x=A\b %左除法求解
[L,U]=lufj(A);
x0=L\b;
x=U\x0%求出的x即为解
  • 拉格朗日插值法

    被调函数:
function y=lagrange(x0,y0,x);
% 根据拉格朗日插值定义编写
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;%给s的初值
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end

主函数:

x=[0,1,2,4];
y=[1,9,23,3];
y0=lagrange(x,y,1.5)
  • 牛顿插值

    被调函数:
function yi=New_Int(x,y,xi)
%Newton基本插值公式
%x为向量,全部的插值节点
%y为向量,差值节点处的函数值
%xi为标量,是自变量
%yi为xi出的函数估计值
n=length(x);
m=length(y);
if n~=m
error('The lengths of X ang Y must be equal!');
return;
end
%计算均差表Y
Y=zeros(n);
Y(:,1)=y';
for k=1:n-1
for i=1:n-k
if abs(x(i+k)-x(i))<eps
error('the DATA is error!');
return;
end
Y(i,k+1)=(Y(i+1,k)-Y(i,k))/(x(i+k)-x(i));
end
end
%计算牛顿插值公式
yi=0;
for i=1:n
z=1;
for k=1:i-1
z=z*(xi-x(k));
end
yi=yi+Y(1,i)*z;
end

主函数:

clear all
clc
x0=[0.4 0.55 0.65 0.80 0.90 1.05];
y0=[0.41075 0.57815 0.69675 0.88811 1.0265 1.25382];
x1=0.596; % 待插值点。
y1=New_Int(x0,y0,x1)% y1即为待插值点的函数值。

TIP:主函数和被调函数要放在一个文件夹内。否则会引起调用错误

NOTE:本文对基本方法做了总结,你可以结合理论知识再来看代码,希望对你有所帮助

Matlab数值计算示例: 牛顿插值法、LU分解法、拉格朗日插值法、牛顿插值法的更多相关文章

  1. LU分解法求逆矩阵 C语言实现

    最近在网上找了下,没有找到我想要的C语言版本,找到的也是错误的.故自己写了一个,并进行了相关测试,贴出来分享. 具体的LU分解算法就不细说了,随便找本书就知道了,关键是分解的处理流程,细节特别容易出错 ...

  2. Guass列选主元消去法和三角分解法

    最近数值计算学了Guass列主消元法和三角分解法解线性方程组,具体原理如下: 1.Guass列选主元消去法对于AX =B 1).消元过程:将(A|B)进行变换为,其中是上三角矩阵.即: k从1到n-1 ...

  3. MATLAB数值计算——0

    目录 MATLAB数值计算 1.solve() 2.fzero() 3.fsolve() MATLAB数值计算 MATLAB中文论坛基础板块常见问题归纳(出处: MATLAB中文论坛) 登录http: ...

  4. [Architecture] 系统架构正交分解法

    [Architecture] 系统架构正交分解法 前言 随着企业成长,支持企业业务的软件,也会越来越庞大与复杂.当系统复杂到一定程度,开发人员会发现很多系统架构的设计细节,很难有条理.有组织的用一张大 ...

  5. 非刚性图像配准 matlab简单示例 demons算法

    2011-05-25 17:21 非刚性图像配准 matlab简单示例 demons算法, % Clean clc; clear all; close all; % Compile the mex f ...

  6. 现代控制理论习题解答与Matlab程序示例

    现代控制理论习题解答与Matlab程序示例 现代控制理论 第三版 课后习题参考解答: http://download.csdn.net/detail/zhangrelay/9544934 下面给出部分 ...

  7. 时间序列分解-STL分解法

    时间序列分解-STL分解法 [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. STL(’Seasonal a ...

  8. 项目管理——WBS工作分解法

    首先我们要了解什么是WBS工作分解法 工作分解结构(Work Breakdown Structure,简称WBS)跟因数分解是一个原理,就是把一个项目,按一定的原则分解,项目分解成任务,任务再分解成一 ...

  9. 大规模问题的分解法-D-W分解法

    大规模线性规划问题的求解极具挑战性,在效率.存储和数值稳定性等方面对算法都有很高的要求.但是这类问题常常非常稀疏且有特殊结构,能够分解为若干个较小规模问题求解. 线性规划问题的目标函数和非负约束都可分 ...

随机推荐

  1. 【探索】在 JavaScript 中使用 C 程序

    JavaScript 是个灵活的脚本语言,能方便的处理业务逻辑.当需要传输通信时,我们大多选择 JSON 或 XML 格式. 但在数据长度非常苛刻的情况下,文本协议的效率就非常低了,这时不得不使用二进 ...

  2. JavaScript 对数据处理的5个API

    JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...

  3. .NET 提升教育 第一期:VIP 付费课程培训通知!

    为响应 @当年在远方 同学的建议,在年前尝试进行一次付费的VIP培训. 培训的课件:点击下载培训周期:10个课程左右,每晚1个半小时培训价格:1000元/人.报名方式:有意向的请加QQ群:路过秋天.N ...

  4. nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞

    第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...

  5. DDD 领域驱动设计-看我如何应对业务需求变化,愚蠢的应对?

    写在前面 阅读目录: 具体业务场景 业务需求变化 "愚蠢"的应对 消息列表实现 消息详情页实现 消息发送.回复.销毁等实现 回到原点的一些思考 业务需求变化,领域模型变化了吗? 对 ...

  6. C# DateTime日期格式化

    在C#中DateTime是一个包含日期.时间的类型,此类型通过ToString()转换为字符串时,可根据传入给Tostring()的参数转换为多种字符串格式. 目录 1. 分类 2. 制式类型 3. ...

  7. .net windows Kafka 安装与使用入门(入门笔记)

    完整解决方案请参考: Setting Up and Running Apache Kafka on Windows OS   在环境搭建过程中遇到两个问题,在这里先列出来,以方便查询: 1. \Jav ...

  8. kali linux下的arp攻击

    这是我第一篇博客,写的不好请谅解 ____________________________(分割线)_______________________________ 在kali linux系统下自带工具 ...

  9. Android Studio开发RecyclerView遇到的各种问题以及解决(一)

    以前一直在用ListView,,,最近才看RecyclerView发现好强大.RecyclerView前提是Android版本在5.0以上,本人以前用的是eclipse只支持到4.4.索性就安装一个A ...

  10. Android 死锁和重入锁

    死锁的定义: 1.一般的死锁 一般的死锁是指多个线程的执行必须同时拥有多个资源,由于不同的线程需要的资源被不同的线程占用,最终导致僵持的状态,这就是一般死锁的定义. package com.cxt.t ...