Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
intg
integral definida
Seqüência de Chamamento
[v,err]=intg(a,b,f [,ea [,er])
Parâmetros
- a, b
números reais
- f
função externa (função, lista ou string)
- ea, er
números reais
- ea
erro absoluto requerido no resultado. Valor padrão: 1.d-14.
- er
erro relativo requerido no resultado. Valor padrão: 1.d-8.
- err
erro absoluto estimado no resultado
Descrição
intg(a,b,f)
avalia a integral definida de
a
a b
de f(t)dt
.
A função f(t)
deve ser contínua.
Espera-se que a avaliação satisfaça à seguinte precisão:
abs(I-v)<= max(ea,er*abs(I))
onde I é o valor exato
da integral.
f
é uma função externa :
Se f
é uma função, sua definição deve ser como
segue: y = f(t)
Se f
é uma lista, a lista deve ser como segue:
list(f,x1,x2,...)
onde f
é uma
função com seqüência de chamamento
f(t,x1,x2,...)
.
Se f
é um string, ele se refere ao nome de uma
função FORTRAN ou procedure C com dada seqüência de chamamento:
No caso FORTRAN, a seqüência de chamamento deve ser double
precision function f(x)
onde x
tabém é um
número de dupla precisão.
No caso C, a seqüência de chamamento é double f(double
*x)
.
Exemplos
//caso de função Scilab function y=f(x),y=x*sin(30*x)/sqrt(1-((x/(2*%pi))^2)),endfunction exact=-2.5432596188; I=intg(0,2*%pi,f) abs(exact-I) //caso de função Scilab com parâmetros function y=f1(x, w),y=x*sin(w*x)/sqrt(1-((x/(2*%pi))^2)),endfunction I=intg(0,2*%pi,list(f1,30)) abs(exact-I) // caso de código FORTRAN (compilador FORTRAN requerido) // escreve o código FORTRAN cd TMPDIR; F=[' double precision function ffun(x)' ' double precision x,pi' ' pi=3.14159265358979312d+0' ' ffun=x*sin(30.0d+0*x)/sqrt(1.0d+0-(x/(2.0d+0*pi))**2)' ' return' ' end']; mputl(F,fullfile(TMPDIR,'ffun.f')) // compile o código FORTRAN l=ilib_for_link('ffun',fullfile(TMPDIR,'ffun.f'),[],'f'); // linking incremental link(l,'ffun','f') //integrando a função I=intg(0,2*%pi,'ffun') abs(exact-I) // caso de código C (compilador C requerido) // escreva o código C C=['#include <math.h>' 'double cfun(double *x)' '{' ' double y,pi=3.14159265358979312;' ' y=*x/(2.0e0*pi);' ' return *x*sin(30.0e0**x)/sqrt(1.0e0-y*y);' '}']; mputl(C,fullfile(TMPDIR,'cfun.c')) // compile o código C l=ilib_for_link('cfun',fullfile(TMPDIR,'cfun.c'),[],'c'); // linking incremental link(l,'cfun','c') //integrando a função I=intg(0,2*%pi,'cfun') abs(exact-I)
Ver Também
Funções Utilizadas
As rotinas associadas podem ser encontradas no diretório SCI/modules/differential_equations/src/fortran :
dqag0.f e dqags.f de quadpack
Report an issue | ||
<< integrate | Equações Diferenciais | intl >> |