Advertisement
n0g3

2fgv terulet

May 21st, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 2.72 KB | None | 0 0
  1. // Összetett Trapéz szabály
  2.  
  3. function trapez(f,a,b,r)
  4.     if a>b
  5.         t=a
  6.         a=b
  7.         b=t
  8.     end
  9.     n=2^(r-1)
  10.     h=(b-a)/n
  11.     x=a+h:h:b-h
  12.     y=f(x)
  13.     m=0
  14.     for i=1:n-1
  15.         m=m+2*y(i)
  16.     end
  17.     m=h/2*(f(a)+m+f(b))
  18.     printf('%d részre osztva az [%1.6f;%1.6f] intervallumot a közelítő integrál értéke: %1.10f\n',n,a,b,m)
  19. endfunction
  20.  
  21. // Másik paraméterezés
  22.  
  23. function trapez2(f,a,b,n)
  24.     if a>b
  25.         t=a
  26.         a=b
  27.         b=t
  28.     end
  29.     h=(b-a)/n
  30.     x=a+h:h:b-h
  31.     y=f(x)
  32.     m=0
  33.     for i=1:n-1
  34.         m=m+2*y(i)
  35.     end
  36.     m=h/2*(f(a)+m+f(b))
  37.     printf('%d részre osztva az [%d;%d] intervallumot a közelítő integrál értéke: %1.10f\n',n,a,b,m)
  38. endfunction
  39.  
  40. // Harmadik paraméterezés
  41.  
  42. function trapez3(f,a,b,h)
  43.     if a>b
  44.         t=a
  45.         a=b
  46.         b=t
  47.     end
  48.     n=round((b-a)/h)
  49.     x=a+h:h:b-h
  50.     y=f(x)
  51.     m=0
  52.     for i=1:n-1
  53.         m=m+2*y(i)
  54.     end
  55.     m=h/2*(f(a)+m+f(b))
  56.     printf('%d részre osztva az [%d;%d] intervallumot a közelítő integrál értéke: %1.10f\n',n,a,b,m)
  57. endfunction
  58.  
  59. //Összetett Simpson szabály
  60.  
  61. function simpson(f,a,b,r)
  62.     if a>b
  63.         t=a
  64.         a=b
  65.         b=t
  66.     end
  67.     n=2^r
  68.     h=(b-a)/n
  69.     x=a+h:h:b-h
  70.     y=f(x)
  71.     m=0
  72. //páratlanadik osztópontok
  73.     for i=1:2:n
  74.         m=m+4*y(i)
  75.     end
  76. //párosadik osztópontok
  77.     for i=2:2:n-1
  78.         m=m+2*y(i)
  79.     end
  80.     m=h/3*(f(a)+m+f(b))
  81.     printf('%d részre osztva az [%1.6f;%1.6f] intervallumot a közelítő integrál értéke: %1.10f\n',n,a,b,m)
  82. endfunction
  83.  
  84.  
  85. function y=fg1(x)
  86.     y=-%e^x-x^2+3
  87. endfunction
  88.  
  89. function y=fg2(x)
  90.     y=atan(x)
  91. endfunction
  92. plot(-3:0.01:1.5,fg1)
  93. plot(-3:0.01:1.5,fg2)
  94.  
  95.  
  96. function y=metszes(x)
  97.     y=fg1(x)-fg2(x)
  98. endfunction
  99. plot(-3:0.01:1.5, metszes)
  100.  
  101. //intfel_1(metszes,-2.5, -1.5,0.001)
  102. //intfel_1(metszes,0,1,0.001)
  103.  
  104. a=-1.993164
  105. b=0.670898
  106. simpson(metszes,a,b,7)
  107.  
  108. fg2m=-1.1913811061
  109. fg1m=3.4323820974
  110. disp(fg1m-fg2m)
  111. function intfel_1(f,a,b,t)
  112.      l=1
  113.     if f(a)*f(b)>0 then
  114.         printf('Nem ellentétes előjelű az intervallum!')
  115.         return
  116.     end
  117.     if f(a)==0 then
  118.         printf('Az intervallum első végpontja megoldás! (%1.6f)\n',a)
  119.         return
  120.     end
  121.     if f(b)==0 then
  122.         printf('Az intervallum második végpontja megoldás! (%1.6f)\n',b)
  123.         return
  124.     end
  125.      while abs(b-a)>t & l<100
  126.        c=(a+b)/2
  127.        if f(a)*f(c) >0
  128.            a=c
  129.        elseif f(a)*f(c) <0
  130.            b=c
  131.        else
  132.            printf('%d lépés után a pontos megoldás: %1.6f\n',l,c)
  133.            abort
  134.        end
  135.        printf('%d lépés után a közelítő megoldás: %1.6f\n',l,c)
  136.        l=l+1
  137.     end
  138. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement