Результат функции Юлии меняется при каждом сдвиге - PullRequest
1 голос
/ 11 марта 2019

Я пытаюсь создать трапециевидную функцию численным методом в Юлии.Я написал код, но мне нужно нажать Shift-Enter два раза, чтобы получить желаемый результат.

f(x)=(x+(2/x)^2

a=1
b=0
s=0.5*(f(a)+f(b))
n = 1
h=(b-a)/n

for i = 1 : n-1
s = s + f(a+(i*h))
end

I = h*s

Спасибо за помощь.

1 Ответ

2 голосов
/ 11 марта 2019

Этот код не работает.Также вам следует обернуть свою логику внутри функции, иначе она не будет работать должным образом (если вы не в Jupyter Notebook, который, я думаю, вы используете).Проблема в том, что переменная s находится в глобальной области видимости и не будет видна внутри цикла, если вы запустите свой код из REPL или в виде скрипта.

Вот правильный код:

function I(f, a, b, n)
    s=0.5*(f(a)+f(b))
    h=(b-a)/n
    for i = 1 : n-1
        s = s + f(a+(i*h))
    end
    h*s
end

и как вы можете его использовать:

julia> f(x)=x^4
f (generic function with 1 method)

julia> a=0
0

julia> b=1
1

julia> n=100
100

julia> I(f, a, b, n)
0.20003333300000006
...