'+' 操作不适用于 function(x: real): real 和 real 类型。检查程序的运行对于a = 0.1; b = 1.0; h = 0.1;
The '+' operation is not applicable to the types function(x: real): real and real. Check the operation of the program for a = 0.1; b = 1.0; h = 0.1;
检查程序对a = 0.1的运行; b = 1.0; h = 0.1; select 参数 n 的值取决于任务。
为什么我会收到错误消息?解决这个问题的最佳方法是什么?如何简化?
var i, n: integer;
x, k, h, sx: real;
function Y(x: real): real;
begin
Y := x * arctan(x) - 0.5 * ln(1.0 + x * x)
end;
function S(x: real): real;
var sum, xx, p, znak, e: real;
begin
S := 0.5 * x * x;
p := x * x;
xx := - x * x;
k := 2;
e := 1e303;
while abs(e) > 1e-14 do
begin
k := k + 2;
p := p * xx;
e := p / (k * (k - 1));
S := S + e
end
end;
begin
h := 0.1;
writeln('x': 2, 'S(x)': 14,
'Y(x)': 18, 'n': 15);
for i := 1 to 10 do
begin
x := i * h;
sx := S(x);
n := round(k / 2);
writeln(x: 3: 1, sx: 18: 14,
Y(x): 18: 14, n: 10)
end
end.
-->'+'操作不适用于类型function(x: real): real and real
我尝试根据 x 是 a 到 b 的范围这一事实来解决问题,步骤为 h:
program test;
var y, a, b, h, x, Sx, Yx, n:real;
begin
a:=0.1;
b:=1.0;
h:=0.1;
x:=a;
n:=0;
while x<=b do
begin
Yx:= x*arctan(x)-ln(sqrt(1+exp(x)));
x:=x+h;
writeln(Yx);
writeln('---------------------', n); n:=n+1;
end;
end.
但是我不知道如何得到S(x)
错误信息的意思是+
的第一个参数是一个函数。我敢打赌这是 S := S + e
行。虽然您可以分配给 S
以设置 S
的 return 值,但您不能那样读回它。
您可以在该函数中引用一个函数;这与递归一起使用。但是你需要真正给自己打电话。例如。 Fibonacci := Fibonacci(i-1) * i
。现在*
左边不是函数,而是函数调用的结果
解决方案:只需使用一个临时变量,并将其分配给 S
在 S
的 end;
检查程序对a = 0.1的运行; b = 1.0; h = 0.1; select 参数 n 的值取决于任务。
为什么我会收到错误消息?解决这个问题的最佳方法是什么?如何简化?
var i, n: integer;
x, k, h, sx: real;
function Y(x: real): real;
begin
Y := x * arctan(x) - 0.5 * ln(1.0 + x * x)
end;
function S(x: real): real;
var sum, xx, p, znak, e: real;
begin
S := 0.5 * x * x;
p := x * x;
xx := - x * x;
k := 2;
e := 1e303;
while abs(e) > 1e-14 do
begin
k := k + 2;
p := p * xx;
e := p / (k * (k - 1));
S := S + e
end
end;
begin
h := 0.1;
writeln('x': 2, 'S(x)': 14,
'Y(x)': 18, 'n': 15);
for i := 1 to 10 do
begin
x := i * h;
sx := S(x);
n := round(k / 2);
writeln(x: 3: 1, sx: 18: 14,
Y(x): 18: 14, n: 10)
end
end.
-->'+'操作不适用于类型function(x: real): real and real
我尝试根据 x 是 a 到 b 的范围这一事实来解决问题,步骤为 h:
program test;
var y, a, b, h, x, Sx, Yx, n:real;
begin
a:=0.1;
b:=1.0;
h:=0.1;
x:=a;
n:=0;
while x<=b do
begin
Yx:= x*arctan(x)-ln(sqrt(1+exp(x)));
x:=x+h;
writeln(Yx);
writeln('---------------------', n); n:=n+1;
end;
end.
但是我不知道如何得到S(x)
错误信息的意思是+
的第一个参数是一个函数。我敢打赌这是 S := S + e
行。虽然您可以分配给 S
以设置 S
的 return 值,但您不能那样读回它。
您可以在该函数中引用一个函数;这与递归一起使用。但是你需要真正给自己打电话。例如。 Fibonacci := Fibonacci(i-1) * i
。现在*
左边不是函数,而是函数调用的结果
解决方案:只需使用一个临时变量,并将其分配给 S
在 S
end;