matlab中nabisect函数,数值分析在MATLAB中的实现(M函数文件)

学习数值分析过程中编写的各章中涉及的方法的M函数相互交流,如有错误请多指教部分内容如下:(na——numerical analysis)数据建模:nalagr——拉格朗日插值naspline——三阶样条插值(一阶导数边界条件)nafit——多项式拟合数值微积分:natrapz——定步长梯形法nagsint——定步长Gauss积分naromberg——Romberg求积naadapt——自适应步长Simpson法求积

学习数值分析过程中编写的各章中涉及的方法的M函数

相互交流,如有错误请多指教

部分内容如下:(na——numerical analysis)

数据建模:

nalagr——拉格朗日插值

naspline——三阶样条插值(一阶导数边界条件)

nafit——多项式拟合

数值微积分:

natrapz——定步长梯形法

nagsint——定步长Gauss积分

naromberg——Romberg求积

naadapt——自适应步长Simpson法求积

常微分方程的数值解法:

naeuler——欧拉格式

naeuler2——两步欧拉格式,改进的欧拉格式

nark4——4阶龙格库塔格式

nark4v——变步长4阶龙格库塔格式

非线性方程及线性方程组的迭代解法:

nabisect——二分法(收敛较慢)

nanewton——Newton迭代法

nags——解普通方程组的Gauss-Seidel迭代

naspgs——解大型稀疏方程组的Gauss-Seidel迭代

nasor——分量形式的SOR迭代

线性方程组的直接解法:

nagauss——顺序Gauss消去法

nagauss2——选主元Gauss消去法

nalu——LU分解

nalupad——紧凑格式的LU分解

基于广大用户反馈,论坛附件下载策略全新上线,下载券全站通用,请放心下载 。

申明:内容来自用户上传,著作权归原作者所有,如涉及侵权问题,请点击此处联系,我们将及时处理!

收藏0

打赏0

点赞0

分享至:

评论

文明留言,专业沟通

4d2a07ae94f6972507ccebf791e8f739.png

请先 登录,再评论!

全部评论

38e3ff67093bbd6280bf4268ad066240.gif

2010年04月26日 21:38:49

2楼

感谢各位捧场

6fe314d5405a7964d43be919abdde247.png

[

本帖最后由 ma3biao1online 于 2010-11-8 09:23 编辑]

回复

举报

点赞

38e3ff67093bbd6280bf4268ad066240.gif

2010年04月27日 13:00:37

3楼

function x=nasor(A,b,omega,x0,e,N)

%用途:用分量形式的SOR迭代解线性方程组Ax=b

%格式:x=nasor(A,b,omega,x0,e,N) A为系数矩阵,b为右端向量,x返回解向量,x0为初值向量(默认原点)

% e为精度(默认1e-4),设置迭代次数上限以防发散(默认500),omega是松弛因子,一般取1-2之间的

% 数(默认1.5)

n=length(b);

if nargin<6,N=500;end %nargin为输入变量个数,此处指N缺省

if nargin<5,e=1e-4;end

if nargin<4,x0=zeros(n,1);end

if nargin<3,omega=1.5;end

x=x0;x0=x+2*e;

k=0;L=tril(A,-1);U=triu(A,1); %tril(A,-1)指严格下三角矩阵,triu(A,1)指严格上三角矩阵,

%tril(A,K)表示提取矩阵A第K条对角线上及其以下的各元素形成的矩阵,其中K表示第K条对角线,

%K=0,指主对角线,K>0,指在主对角线以上的第K条对角线,K<0则在主对角线以下

%triu(A,K)表示提取矩阵A第K条对角线上及其以上的各元素形成的矩阵

while norm(x0-x,inf)>e&k

%1-范数,无穷大范数,p的缺省值为2 inf指无穷大

k=k+1,x0=x;

for i=1:n

x1(i)=(b(i)-L(i,1:i-1)*x(1:i-1,1)-U(i,i+1:n)*x0(i+1:n,1))/A(i,i);

x(i)=(1-omega)*x0(i)+omega*x1(i); %加权平均

end

disp(x') %输出矩阵x的转置

end

if k==N,warning('已达到迭代次数上限');end

[

本帖最后由 ma3biao1online 于 2010-5-29 10:54 编辑]

回复

举报

点赞

38e3ff67093bbd6280bf4268ad066240.gif

2010年04月27日 13:05:54

4楼

function [ x,y] = nark4v( dyfun,xspan,y0,e,h )

%用途:变步长4阶经典Runge-Kutta格式解常微分方程y'=f(x,y),y(xo)=y0

%格式:[x,y]=nark4(defun,xspan,y0,h) dyfun为函数f(x,y),xspan为求解区间

% [x0,xN],y0为初值y(x0),h为初始步长(默认为xspan的1/10),x返回节点,

% y返回数值解,e为精度要求

%feval为函数求值命令,'为转置,nargin为输入变量个数,eps为浮点数识别精度2^(-52)

if nargin<5,h=(xspan(2)-xspan(1))/10;end

n=1;x(n)=xspan(1);y(n)=y0;

[y1,y2]=comput(dyfun,x(n),y(n),h);

while x(n)

if abs(y2-y1)/10>e

while abs(y2-y1)/10>e

h=h/2;

[y1,y2]=comput(dyfun,x(n),y(n),h);

end

else

while abs(y2-y1)/10<=e

h=2*h;

[y1,y2]=comput(dyfun,x(n),y(n),h);

end

h=h/2;h=min(h,xspan(2)-x(n));

[y1,y2]=comput(dyfun,x(n),y(n),h);

end

n=n+1;x(n)=x(n-1)+h;y(n)=y2;

[y1,y2]=comput(dyfun,x(n),y(n),h);

end

x=x';y=y';

function [y1,y2]=comput(dyfun,x,y,h)

y1=rk4(dyfun,x,y,h);

y21=rk4(dyfun,x,y,h/2);

y2=rk4(dyfun,x+h/2,y21,h/2);

function y=rk4(dyfun,x,y,h)

k1=feval(dyfun,x,y);

k2=feval(dyfun,x+h/2,y+h/2*k1);

k3=feval(dyfun,x+h/2,y+h/2*k2);

k4=feval(dyfun,x+h,y+h*k3);

y=y+h*(k1+2*k2+2*k3+k4)/6;

回复

举报

点赞

38e3ff67093bbd6280bf4268ad066240.gif

2010年04月27日 17:11:00

5楼

我下载下来看了下,还行

贴张图

15d4af22350a3f220ad173d4f618921b.png

回复

举报

点赞

38e3ff67093bbd6280bf4268ad066240.gif

2010年07月01日 12:42:56

6楼

不错不错。。谢谢

回复

举报

点赞

38e3ff67093bbd6280bf4268ad066240.gif

2010年08月13日 17:25:57

7楼

正需要,谢谢楼主

回复

举报

点赞

38e3ff67093bbd6280bf4268ad066240.gif

2010年11月07日 22:37:29

8楼

好东西,值得分享

回复

举报

点赞

38e3ff67093bbd6280bf4268ad066240.gif

2010年11月08日 07:43:08

9楼

这个帖子确实很不错啊……

以前疏忽了……

楼主很厉害 辛苦啊

回复

举报

点赞

38e3ff67093bbd6280bf4268ad066240.gif

2010年11月10日 16:32:39

10楼

感谢楼主分享

回复

举报

点赞

38e3ff67093bbd6280bf4268ad066240.gif

2010年12月01日 09:48:31

11楼

bucuo qushibucuo a

回复

举报

点赞

相关推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值