matlab,理查德森外推法计算函数梯度,程序,求助啊!

matlab,理查德森外推法计算函数梯度,程序,求助啊!,第1张

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 程序,求高手解答、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9734237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存