Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - 日本語 - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Ajuda do Scilab >> Equações Diferenciais > intg

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

  • intc — integral de Cauchy
  • intl — integral de Cauchy
  • inttrap — integração de dados experimentais por interpolação trapezoidal
  • intsplin — integração de dados experimentais por interpolação por spline
  • ode — Solucionador de equações diferenciais ordinárias

Funções Utilizadas

As rotinas associadas podem ser encontradas no diretório SCI/modules/differential_equations/src/fortran :

dqags.f e dqagse.f de quadpack

Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 14 15:09:42 CET 2017