Autor |
Wiadomość |
vbazyl |
Wysłany: Pią 1:06, 30 Lis 2007 Temat postu: |
|
Z tego co pamiętam to obliczyć całkę metodą prostokątów i jakiś układ równań metodą gaussa. Całka jakby ktoś chciał:
Kod: |
float f(float x)
{
return x*sin(x*x)+5;
};
float calka(int N)
{
float xp=0;
float xk=2*3.14;
float sz=(xk-xp)/N;
xk=(xp+sz);
float suma=0;
float sr=(xp+xk)/2;
for(int i=0;i<N;i++)
{
suma+=sz*f(sr);
xp=xk;
xk=xp+sz;
sr=(xp+xk)/2;
};
return suma;
};
int main(int argc, char *argv[])
{
calka(4);
setprecision(3);
cout<<" n | I | I(n)-I(n+1)"<<endl;
cout<<" 2 | "<<calka(2)<<" | "<<calka(2)-calka(4)<<endl;
cout<<" 4 | "<<calka(4)<<" | "<<calka(4)-calka(8)<<endl;
cout<<" 8 | "<<calka(8)<<" | "<<calka(8)-calka(16)<<endl;
cout<<" 16 | "<<calka(16)<<" | "<<calka(16)-calka(32)<<endl;
cout<<" 32 | "<<calka(32)<<" | "<<calka(32)-calka(64)<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
|
|
|
|
boro |
Wysłany: Czw 23:42, 29 Lis 2007 Temat postu: |
|
PS1
wie ktoś co trzeba zrobić z metod numerycznych na środę? przynam się ze nie słuchałem faceta na zajęciach a bardzo chciałbym oddać program w nast.tygodniu :) |
|
|
eewkaa |
Wysłany: Nie 16:50, 25 Lis 2007 Temat postu: |
|
Rozwiązać metodą iteracji.
Wypisać rozwiązania (kolejne przybliżenia?) do pliku i w Excelu narysować wykresy.
Albo coś w tym stylu...
Jeśli ktoś pamięta coś więcej niech mnie poprawi. |
|
|
czart |
Wysłany: Sob 10:51, 24 Lis 2007 Temat postu: |
|
Co trzeba zrobić z tą ostatnią funkcją (x^2-2) pamięta ktoś ?? |
|
|
boro |
|
|
fala (aka tomek) |
Wysłany: Wto 22:04, 20 Lis 2007 Temat postu: |
|
tylko jak ktoś by chciał się podzielić tymi programami to najlepiej może niech zamieści na forum kody tak żeby większa rzesza mogła z nich skorzystać, bo np ja też nie pamiętam już co trzeba napisać |
|
|
wicher |
Wysłany: Wto 19:31, 20 Lis 2007 Temat postu: |
|
Ja bym też prosił o programy z dwóch (a nawet trzech) ostatnich zajęć bo za bardzo nie wiem co trzeba było zrobić. |
|
|
boro |
Wysłany: Wto 18:47, 20 Lis 2007 Temat postu: |
|
Dzięki Cheester. Wysłałem ci Czarcie na maila kilka programów. Może coś ci się przyda. |
|
|
Cheester |
Wysłany: Wto 18:25, 20 Lis 2007 Temat postu: |
|
wynik Newtona jest bardzo niedokładny, może ktoś ulepszy:
program newka;
uses crt;
var
licznik,licznik2,licznik3:integer;
a,b,x,fa,fb:real;
procedure bisekcja(var x:real; a,b:real;z:integer);
var
fa,fb,fx,eps:real;
begin
fa:=sin(a)+5*cos(5*a);
fb:=sin(b)+5*cos(5*b);
repeat
if (z=1) then licznik:=licznik+1;
if (z=2) then licznik2:=licznik2+1;
eps:=b-a;
if (z=1) then x:=a+(b-a)/2; if (z=2) then x:=a-fa*(b-a)/(fb-fa);
fx:=sin(x)+5*cos(5*x);
if (fa*fx<0) then
begin
fb:=fx;
b:=x;
end
else
begin
fa:=fx;
a:=x;
end;
until eps<0.001;
end;
procedure Newton( xb,xc:real;var w:real;var i:integer);
var xa:real;
eps:real;
begin
eps:=0.001;
xa:=xc;
if (cos(xb)-25*sin(5*xb))=0 then exit;
xb:=xa-(sin(xa)+5*cos(5*xa))/(cos(xa)-25*sin(5*xa));
i:=1;
while abs(xa-xb)>Eps do
begin
if (cos(xb)-25*sin(5*xb))=0 then exit;
xc:=xb-(sin(xb)+5*cos(5*xb))/(cos(xb)-25*sin(5*xb));
xa:=xb;
xb:=xc;
inc(i);
w:=xa;
end;
end;
begin
a:=0;
b:=1;
clrscr;
while (b<3.14*4) do
begin
licznik:=0;
licznik2:=0;
fa:=sin(a)+5*cos(5*a);
fb:=sin(b)+5*cos(5*b);
if fa*fb<0 then
begin
newton(a,b,x,licznik3);
write(x,' '); write(licznik3,' ');
bisekcja(x,a,b,1); write(x,' '); write(licznik,' ');
bisekcja(x,a,b,2); write(x,' '); writeln(licznik2,' ');
end;
a:=a+1;
b:=b+1;
end;
readln;
end.
|
|
|
czart |
Wysłany: Wto 18:11, 20 Lis 2007 Temat postu: |
|
Ja bym prosił o zadania z 2-3 ostatnich zajęć bo troche odpuściłem sobie i juz teraz nie wiem nawet co trzeba przyniesc ;d |
|
|
boro |
Wysłany: Wto 17:11, 20 Lis 2007 Temat postu: Metody Numeryczne - Domówki |
|
Ma ktoś może zrobione zadanie z MN na jutro i jest chętny do podzielenia sie nim /ps1/ ?
mam nadzieje ze to nie bedzie zakwalifikowane jako spam :] |
|
|