Scilab双积分

时间:2013-08-09 15:21:00

标签: scilab

以下是我的程序的代码。我试图找到1 / ln(x)的积分值,然后计算从0到x的积分,并将其作为被积函数。我不确定我做错了什么,但我对Scilab很新。

t = input("t");
x=10; while x<t, x=x+10,
function y=f(x), y=(1/(log (x))), endfunction
I=intg(2,x,f);
function z=g(x), z=I, endfunction
W = intg(0,x,z);
W
end

2 个答案:

答案 0 :(得分:0)

我不完全确定您要实现的目标,但我重新格式化了您的代码,并为文档添加了一些建议。 也许它会帮助你找到答案。

while循环

您可以将while loop转换为for loop

您的代码

x=10; 
while x<t
   x=x+10
   //some code
end

可能

for x=10:10:t
   //some code
end

功能

在您的代码中,您在while循环的每次迭代中重新声明这两个函数。你可以在while循环之外声明它们并在循环中调用它们。

重新格式化

t = input("Please provide t: ");

// The function of 1/ln(x)
function y=f(x), y=1/log(x), endfunction

// Every time g(x) is called the current value of I is returned
function z=g(x), z=I, endfunction

for x=10:10:t

    //Find definite integral of function f from 2 to x 
    I = intg(2,x,f);

    //Find definite integral of I from 0 to x
    W = intg(0,x,g);

    disp( string(W) ); 
end

答案 1 :(得分:0)

我知道这个问题似乎已经过时了;但该话题仍然活跃。而且我正在寻找带有双积分的代码。 在这里,仅使用“ intg”来计算由对角线((0,0),(x,I))定义的矩形的面积看起来很奇怪:结果仅为x * I ... 可能最初的目的是考虑将“ I”作为“ x”的函数(但是在这种情况下,在x = 1处存在收敛问题)。因此将“ I”的积分限制为大于1的值将给出以下代码:

x=10:10:100;W2=integrate('integrate(''1/log(x2)'',''x2'',2,x1)','x1',1.001,x);

请注意使用积分变量x1和x2,以及使用引号...