user2628566
user2628566

Reputation: 11

Scilab double integral

Below is the code for my program. I'm attempting to find the value of the integral of 1/ln(x), and then evaluate the integral from 0 to x, with this as the integrand. I'm not exactly sure what I'm doing wrong, but I am quite new to 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

Upvotes: 0

Views: 2495

Answers (2)

I know the question is porbably outdated; but the topic is still active. And I was looking for a code with double integral. Here, it looks strange to use "intg" just to calculate the area of the rectangle defined by its diagonal ((0,0), (x,I)): the result is just x*I... May be the initial aim was to consider "I" as a function of "x" (but in this case there is a convergence problem at x=1...); so restricting the integration of "I" to something above 1 gives the following code:

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

Note the use of integration variables x1 and x2, plus the use of quotes...

Upvotes: 0

spoorcc
spoorcc

Reputation: 2955

I'm not entirely sure on what you are trying to achieve, but I reformatted your code and added some suggestions to documentation. Maybe it will help you in finding the answer.

While loop

You can convert your while loop to a for loop

Your code

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

Could be

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

Functions

In your code, you redeclare the two functions every single iteration of the while loop. You could declare them outside the while loop and call them inside the loop.

Reformatted

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

Upvotes: 0

Related Questions