1、外推法的MATLAB程序代码如下所示:
function yy = DEWT(f,h,a,b,gama,y0,order,varvec)
%一阶常微分方程的一般表达式的右端函数:f
%积分步长:h
%自变量取值下限:a
%自变量取值上限:b
%外推参数,参考外推公式:gama
%函数初值:y0
%外推阶数:order
%常微分方程的变量组:varvec
format long;
ArrayH = [1;2;4;6;8;12;16;24;32;48;64;96];
N = (b-a)/h;
yy = zeros(N+1,1);
for i = 2:N+1
dh = h;
s = zeros(order,1);
for j=1:order
dh = h/ArrayH(j); %不同的h值
tmpY = DELGKT2_suen(f,dh,a,a+(i-1)h,y0,varvec); %休恩法
s(j) = tmpY((i-1)ArrayH(j)+1);
end
tmpS = zeros(order,1);
for j=1:order-1
for k=(j+1):order
tmpS(k) = s(k)+(s(k)-s(k-1))/((ArrayH(k)/ArrayH(j))^gama-1);
end
s(1:(order-j)) = tmpS((j+1):order); %取对角值
end
yy(i) = tmpS(order);
end
format short;
length(x)函数是求x的长度,
如果x是向量,那就是向量长度或者说元素个数。
如果x是矩阵,那等于max(size(x)),也就是各维长度的最大值。比如二维的就是行数和列数的最大值。
你说P=length(generator)单独执行不了,
当然是了,要先有generator才能调用length()函数,要不它求谁的长度啊?
这个跟第一段里的length不同。
第一段的length是你自己定义的变量,而第三段的length()是个函数。
而且第一段是脚本文件或者说命令文件,相当于把命令行执行的一系列命令保存到一个m文件里。
而第二、三段是函数文件,虽然也是m文件,但首行是function ,
代表不是脚本而是函数,里面的变量跟命令行里定义的变量无关。
如果是两个脚本或者脚本文件跟你手动敲的命令里,都定义了同样名字的变量或函数(同为变量或者同为函数),那后面执行的脚本或命令里的变量或函数就覆盖前面的,不过同样名字的变量跟函数间不会混淆的。
如果是脚本跟函数内部的同名变量,它们之间不会混淆的,函数内部的是局部变量,不受外部同名变量的影响。
以上就是关于matlab,理查德森外推法计算函数梯度,程序,求助啊!全部的内容,包括:matlab,理查德森外推法计算函数梯度,程序,求助啊!、matlab 程序,求高手解答、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)