Integrál v delphi – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Integrál v delphi – Delphi – Fórum – Programujte.comIntegrál v delphi – Delphi – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
lusishka0
Duch
14. 4. 2010   #1
-
0
-

dobrý den,

mohl by mi někdo poradit s tímto úkolem?Výpočet určitého integrálu x^2*e^-x v mezích <0,2> v delphi pomocí lichoběžníkového pravidla s přesností 10^-5.
moc děkuji

Nahlásit jako SPAM
IP: 90.177.85.–
Reklama
Reklama
liborb
~ Redaktor
+18
Guru
Nahlásit jako SPAM
IP: 85.207.166.–
Honzc0
Stálý člen
15. 4. 2010   #3
-
0
-

vidím, že žádná inspirace, tak tady je fce co to umí:

function LichobeznikovaMetoda:String;
var i,n,p,pre:Integer;
a,b,x,dx,S,S1:Extended;
pres: String;
k:array of Extended;
function VypInt(var x:Extended):Extended;
begin
Result := Power(x,2)*exp(x)-x;
end;
begin
a := 0; b :=2;
n := 2;
tol := 1e-5;
p := 1;
S := 0; S1 := tol+1;
pre := Length(FloatToStr(S1))-1;
while (abs(S-S1)/p>tol)and(n<100000) do
begin
S1 := S;
S := 0;
dx := (b-a)/n;
SetLength(k,0);
SetLength(k,n+1);
for i := 0 to n do
k[i] := 1;
x := a; k[0] := 1/2; k[n] := 1/2; p := 3;
for i := 0 to n do
begin
S := S+k[i]*VypInt(x)*dx;
x := x+dx;
end;
n := 2*n;
end;
S := S+abs(S-S1)/p;
pres := '%.'+IntToStr(pre)+'f';
Result := Format(pres, [S]);
end;

Nahlásit jako SPAM
IP: 85.207.57.–
Honzc0
Stálý člen
15. 4. 2010   #4
-
0
-

Malinká úprava:
1. místo p := 1; dát p := 3;
2.místo while (abs(S-S1)/p>tol)and(n<100000) do dát
while (abs(S-S1)>tol)and(n<100000) do
3.vymazat p := 3;

Nahlásit jako SPAM
IP: 85.207.57.–
lusishka0
Duch
15. 4. 2010   #5
-
0
-

To Honzc : moc děkuji,ale fce ,co jste použil jsme se neučili.Dá se říct,že je to stejné jako tato šablona?

program integr_lich;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
i,n:integer;
h,DM,HM,SK,SV,INT:real;
function f(x:real):real;
begin
f:=sqr(x);
end ;

begin
write('Zadej DM: ');
readln(DM);
write('Zadej HM: ');
readln(HM);
write('Zadej N: ');
readln(N);
h:=(HM-DM)/N;
SK:=f(DM)+f(HM);
SV:=0;
for i:=1 to N-1 do
SV:=SV+f(DM+i*h);
INT:=h*(SK/2+SV);
writeln('INTEGRAL= ',INT:10:6);
readln;

{ TODO -oUser -cConsole Main : Insert code here }
end.

Nahlásit jako SPAM
IP: 90.177.85.–
Honzc0
Stálý člen
16. 4. 2010   #6
-
0
-

To lusishka:
To co jsi napsal je výpočet Integrálu, ale s daným počtem dělení (n)
Nevím ovšem proč si necháváš zadat DM a HM, když jsou dané, a také ta funkce je nějaká jiná.
Jinak já jsem v tom svém příkladu nějak špatně přečetl tu tvou funkci. (asi proto, že je špatně zapsaná)

Takže i když nevím jaké funkce jste nebrali tak to napiš viz níže:

program integr_lich;


{$APPTYPE CONSOLE}

uses
SysUtils;

procedure LichobeznikovaMetoda;
var i,n:Integer;
x,dx,S,S1:Real;
function VypInt(var x:Real):Real;
begin
Result :=sqr(x)*exp(-x);
end;
begin
n := 2;
S := 0; S1 := 1;
while (abs(S-S1)>1e-5) do
begin
S1 := S;
S := 0;
x :=0;
dx := 2/n;
for i := 0 to n do
begin
if (i=0)or(i=n) then
S := S+VypInt(x)*dx/2
else
S := S+VypInt(x)*dx;
x := x+dx;
end;
n := 2*n;
end;
S := S+(S-S1)/3;
WriteLn('S = ',S:8:6);
end;

begin
WriteLn;
WriteLn('Vysledek vypoctu integralu x^2*x^(-x) v mezich <0,2>:');
WriteLn;
LichobeznikovaMetoda;
ReadLn; //Po stisku ENTER se program ukonci
end.

Nahlásit jako SPAM
IP: 85.207.57.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

INTEGRAL — založil XANI

Integrál — založil ukulele

Integrál 2 — založil ukulele

Integrál — založil hazard

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý