0
Matlab的简单循环我写了一个简单MATLAB脚本,以评估forward
,backward
和central
第一和第二导的差异近似为一个spesific功能对于不同的函数变量
(y = x^3-5x)
在两个不同x
值
(x=0.5 and x = 1.5)
和7个不同步长h
和比较相对误差分析衍生物的近似值。
但是,我需要每次手动输入x
和h
值。问题是,我该如何为7个不同的h
值和2个不同的x
值创建一个循环,并将所有结果作为矩阵?
clc
clear all
close all
h = 0.00001;
x1 = 0.5;
y = @(x) x.^3 - 5*x;
dy = @(x) 3*x.^2 - 5;
ddy = @(x) 6*x;
d1 = dy(x1);
d2 = ddy(x1);
%Forward Differencing
f1 = (y(x1+h) - y(x1))/h;
f2 = (y(x1+2*h) - 2*y(x1+h) + y(x1))/(h.^2);
%Central Differencing
c1 = (y(x1+h)-y(x1-h))/(2*h);
c2 = (y(x1+h)-2*y(x1)+y(x1-h))/(h.^2);
% Backward Differencing
b1 = (y(x1) - y(x1-h))/h;
b2 = (y(x1)-2*y(x1-h)+y(x1-2*h))/(h.^2);
% Relative Errors
ForwardError1 = (f1 - dy(x1))/dy(x1);
ForwardError2 = (f2 - ddy(x1))/ddy(x1);
CentralError1 = (c1 - dy(x1))/dy(x1);
CentralError2 = (c2 - ddy(x1))/ddy(x1);
BackwardError1 = (b1 - dy(x1))/dy(x1);
BackwardError2 = (b2 - ddy(x1))/ddy(x1);
或者,除此之外,您可能希望将脚本编写为一个函数,该函数需要'x'和'h'的输入。你可以通过函数定义返回6个输出,如函数[ForwardError1,ForwardError2,CentralError1,CentralError2,BackwardError1,BackwardError2] = calc_my_errors(x,h)'(然后删除全部清除)。请参阅[功能](https://uk.mathworks.com/help/matlab/ref/function.html)。 – Steve