lzth.net
当前位置:首页 >> mAtlAB迭代算法实例 >>

mAtlAB迭代算法实例

拉格朗日function y=lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:m z=x(i); s=0.0; 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;endSOR迭代法的Matlab程序 function [x]=SOR_iterative(A,b)% 用SOR

1)for循环那里x=1.4后面应为冒号2)for 少了对应的end3)for循环里x_derivative为sym类型,不能直接运算,需用subs代入数值4)迭代算法需要大改,n没有定义

N=1000; x=[-.8,zeros(1,N)]; for n=0:N-1 x(n+1+1)=x(n+1)^2-2;%matlab从1开始编号,所以再+1 end plot(0:N,x)

clear;clc;A=0;B=0;C=0;for k=1:10Temp(:,k)=[A,B,C];A=(14-3*B-C)/10;B=(5+2*A+3*C)/10;C=(14-A-3*B)/10;endABC=Temp'结果:ABC=0 0 01.4000 0.7800 1.02601.0634 1.0205 0.98750.9951 0.9953 1.00191.0012 1.0008

% 用牛顿下山法求解方程 function [x,k]=myfun_newton(f,x0,emg)% f表示非线形方程% x0迭代初值,此种方法是局部收敛,初值要选择恰当% emg是精度指标% k,u分别表示迭代次数和下山因子% d1表示非线形方程f在x0处的导数值 [f1,d1]=feval(f,x

牛顿迭代法:function[x0,n]=newton(fx,dfx,x0,tol,N)% 牛顿迭代法% 第一个参数 fx 是关于变量x的所要求的函数表达式.% 第二个参数 dfx 是fx的一阶导数.% x0 是迭代初始值.% tol 是迭代误差限.% N 最大迭代次数.x=x0;f0=eval(fx);df0=eval(dfx); n=0;

function [v,sN,vChain]=gaussSeidel(A,b,x0,errorBound,maxSp)%Gauss-Seidel迭代法求解线性方程组%A-系数矩阵 b-右端向量 x0-初始迭代点 errorBound-近似精度 maxSp-最大迭代次数%v-近似解 sN-迭代次数 vChain-迭代过程的所有值 step=0;

function [x k]=EqtsSOR(A,b,x0,omiga,eps)%超松弛(SOR,Successive Over-Relaxation)迭代法求解线性方程组Ax=b%[x k]=EqtsSOR(A,b,x0,eps)%x:解向量,列向量%k:迭代次数%A:系数矩阵%b:列向量%x0:迭代初始值,列向量%omiga

s=0; for i=1:10; s=s+(2*i+1); end s s=0; i=1; while (i<=10) a = 2*i+1; s=s+a; i = i + 1; end s s=0; i=1; while (i<=10) a = 2*i+1; s=s+a; i = i + 1; end s s = 120 s=0; for i=1:10; s=s+(2*i+1); end s s = 120 呵呵,原来后面有阶乘,sorry sum=0; for i=1:10 pdr=1; for k=1:i pdr=pdr*k; end sum=sum+pdr; end sum sum = 4037913

syms x f=x^x-10; df=diff(f,x); eps=1e-6; x0=10; cnt=0; MAXCNT=200; %最大循环次数 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

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com