Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Programiranje u mathematici
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji diplomskih i starih studija -> Uvod u optimizaciju
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Boris Davidovič
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 08. 01. 2004. (23:05:18)
Postovi: (3C)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 20:40 sub, 17. 4. 2004    Naslov: Programiranje u mathematici Citirajte i odgovorite

Možda i nije mjesto na ovom forumu, ali ... :

Nekoliko pitanja o radu s Mathematicom :

1. Kako automatizirati sljedeću liniju :
Show[g[1], g[2], g[3], g[4], g[5], g[6], g[7], g[8],g[9],g[10]]

Ako je Array g napunjen plotovima, tj. dobiven sa :

g[i]=Plot[nešto] , i = 1...n

Kako pri tome onemogućiti da se izlaz od Plota prikaže, tj. da se vrijednosti samo
spreme u polje g?

2. Kako u Mathematici pisati funkcije koje unutar tijela imaju petlje i
slične stvari. Konkretno kako prevesti sljedeci C kod :

double spline(double y)
{
int i=0;
double sol,h;

h=(b-a)/n;

i=(int)ceil((y-a)/h);//u kojem smo segmentu

sol=f[i-1]+((f[i]-f[i-1])/(x[i]-x[i-1]))*(y-x[i-1]);//Newtonow oblik IP-a

return sol;
}

3. Kako preusmjeriti izlaz u tekući direktorij, a ne u onaj u kojem je instalirana Mathematica
(naravno, uz pretpostavku da se path ne navodi eksplicitno)

4. Jedan problem u radu s poljem funkcija ,tj. zašto sljedeći kod :
Array[l,n];

For[i=1,i<=n,i++,
l[i][z_] := f0[i - 1] +(f0[i] - f0[i - 1])/(x[i] - x[i - 1])*(z - x[i - 1]);]

(pri čemu su sve vrijednosti u poljima f0 i x ispravne i sve varijable počišćene)

radi, dok sljedeći :

Array[fi,n+1];

fi[0][z_]:=(x[1]-z)/(x[1]-x[0]) /;x[0]<=z<=x[1]
fi[0][z_]:=0 /; z>x[1]

fi[n][z_]:=(x[n-1]-z)/(x[n-1]-x[n]) /;x[n-1]<=z<=x[n]
fi[n][z_]:=0 /;z\[LessEqual]x[n-1]

For[i=1,i<=n-1,i++,

fi[i][z_]:=(z-x[i-1])/(x[i]-x[i-1]) /; x[i-1]<=z<=x[i];

fi[i][z_]:=(z-x[i+1])/(x[i]-x[i+1]) /;x[i]<z<=x[i+1];

fi[i][z_]:=0 /; z<x[i-1] || z>x[i+1];
]

Ne daje nikakav output?

Kodovi bi trebali generirati linearne splineove i to prvi eksplicitno na svakom segmentu
subdivizije, a drugi definira bazu za prostor linearnih splineova na nekom segmentu.

Hvala.
Možda i nije mjesto na ovom forumu, ali ... :

Nekoliko pitanja o radu s Mathematicom :

1. Kako automatizirati sljedeću liniju :
Show[g[1], g[2], g[3], g[4], g[5], g[6], g[7], g[8],g[9],g[10]]

Ako je Array g napunjen plotovima, tj. dobiven sa :

g[i]=Plot[nešto] , i = 1...n

Kako pri tome onemogućiti da se izlaz od Plota prikaže, tj. da se vrijednosti samo
spreme u polje g?

2. Kako u Mathematici pisati funkcije koje unutar tijela imaju petlje i
slične stvari. Konkretno kako prevesti sljedeci C kod :

double spline(double y)
{
int i=0;
double sol,h;

h=(b-a)/n;

i=(int)ceil((y-a)/h);//u kojem smo segmentu

sol=f[i-1]+((f[i]-f[i-1])/(x[i]-x[i-1]))*(y-x[i-1]);//Newtonow oblik IP-a

return sol;
}

3. Kako preusmjeriti izlaz u tekući direktorij, a ne u onaj u kojem je instalirana Mathematica
(naravno, uz pretpostavku da se path ne navodi eksplicitno)

4. Jedan problem u radu s poljem funkcija ,tj. zašto sljedeći kod :
Array[l,n];

For[i=1,i⇐n,i++,
l[i][z_] := f0[i - 1] +(f0[i] - f0[i - 1])/(x[i] - x[i - 1])*(z - x[i - 1]);]

(pri čemu su sve vrijednosti u poljima f0 i x ispravne i sve varijable počišćene)

radi, dok sljedeći :

Array[fi,n+1];

fi[0][z_]:=(x[1]-z)/(x[1]-x[0]) /;x[0]⇐z⇐x[1]
fi[0][z_]:=0 /; z>x[1]

fi[n][z_]:=(x[n-1]-z)/(x[n-1]-x[n]) /;x[n-1]⇐z⇐x[n]
fi[n][z_]:=0 /;z\[LessEqual]x[n-1]

For[i=1,i⇐n-1,i++,

fi[i][z_]:=(z-x[i-1])/(x[i]-x[i-1]) /; x[i-1]⇐z⇐x[i];

fi[i][z_]:=(z-x[i+1])/(x[i]-x[i+1]) /;x[i]<z⇐x[i+1];

fi[i][z_]:=0 /; z<x[i-1] || z>x[i+1];
]

Ne daje nikakav output?

Kodovi bi trebali generirati linearne splineove i to prvi eksplicitno na svakom segmentu
subdivizije, a drugi definira bazu za prostor linearnih splineova na nekom segmentu.

Hvala.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
veky
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 12. 2002. (19:59:43)
Postovi: (5B0)16
Sarma = la pohva - posuda
22 = 24 - 2
Lokacija: negdje daleko...

PostPostano: 23:15 sub, 17. 4. 2004    Naslov: Re: Programiranje u mathematici Citirajte i odgovorite

[quote="Boris Davidovič"]Možda i nije mjesto na ovom forumu, ali ... :

Nekoliko pitanja o radu s Mathematicom :

1. Kako automatizirati sljedeću liniju :
Show[g[1], g[2], g[3], g[4], g[5], g[6], g[7], g[8],g[9],g[10]]

Ako je Array g napunjen plotovima, tj. dobiven sa :

g[i]=Plot[nešto] , i = 1...n
[/quote]

Show@Array[g,9]

(Striktno, ovo što ti želiš je Show@@Array[g,9] , ali radit će i onako kako piše gore),

[quote] Kako pri tome onemogućiti da se izlaz od Plota prikaže, tj. da se vrijednosti samo
spreme u polje g?[/quote]

Vidi 'DisplayFunction' u Helpu. Pod Further Examples je detaljno objašnjeno.

[quote]2. Kako u Mathematici pisati funkcije koje unutar tijela imaju petlje i
slične stvari.[/quote]

Pogledaj 'Module' u Helpu.

[quote] Konkretno kako prevesti sljedeci C kod :

double spline(double y)
{
int i=0;
double sol,h;

h=(b-a)/n;

i=(int)ceil((y-a)/h);//u kojem smo segmentu

sol=f[i-1]+((f[i]-f[i-1])/(x[i]-x[i-1]))*(y-x[i-1]);//Newtonow oblik IP-a

return sol;
}[/quote]

Otprilike ovako (a , b i n su valjda globalne varijable):
[code:1]spline@y_?NumericQ:=Module[{i=0,sol,h},
h=(b-a)/n;
i=Ceiling[(y-a)/h];
sol=f[[i]]+(f[[i+1]-f[[i]])/(x[[i+1]]-x[[i]])*(y-x[[i]]);
sol
][/code:1]

[quote]3. Kako preusmjeriti izlaz u tekući direktorij, a ne u onaj u kojem je instalirana Mathematica
(naravno, uz pretpostavku da se path ne navodi eksplicitno)[/quote]

Vidi 'SetDirectory' u Helpu. Početni "tekući direktorij" je upravo onaj u kojem je instalirana Mma, inače.

[quote]4. Jedan problem u radu s poljem funkcija ,tj. zašto sljedeći kod :
Array[l,n];

For[i=1,i<=n,i++,
l[i][z_] := f0[i - 1] +(f0[i] - f0[i - 1])/(x[i] - x[i - 1])*(z - x[i - 1]);]

(pri čemu su sve vrijednosti u poljima f0 i x ispravne i sve varijable počišćene)

radi, dok sljedeći :

Array[fi,n+1];[/quote]

Smijem pitati što će ti ovo? Mislim, ne škodi, ali i ne treba...

[quote]
fi[0][z_]:=(x[1]-z)/(x[1]-x[0]) /;x[0]<=z<=x[1]
fi[0][z_]:=0 /; z>x[1]

fi[n][z_]:=(x[n-1]-z)/(x[n-1]-x[n]) /;x[n-1]<=z<=x[n]
fi[n][z_]:=0 /;z\[LessEqual]x[n-1]

For[i=1,i<=n-1,i++,

fi[i][z_]:=(z-x[i-1])/(x[i]-x[i-1]) /; x[i-1]<=z<=x[i];

fi[i][z_]:=(z-x[i+1])/(x[i]-x[i+1]) /;x[i]<z<=x[i+1];

fi[i][z_]:=0 /; z<x[i-1] || z>x[i+1];
]

Ne daje nikakav output?

Kodovi bi trebali generirati linearne splineove i to prvi eksplicitno na svakom segmentu
subdivizije, a drugi definira bazu za prostor linearnih splineova na nekom segmentu.[/quote]

Hm... možda se uvjeti ( /; ) ne evaluiraju dinamički... radi li kad u gornjem primjeru (koji radi) staviš uvjet na z koji ovisi o i ?
Boris Davidovič (napisa):
Možda i nije mjesto na ovom forumu, ali ... :

Nekoliko pitanja o radu s Mathematicom :

1. Kako automatizirati sljedeću liniju :
Show[g[1], g[2], g[3], g[4], g[5], g[6], g[7], g[8],g[9],g[10]]

Ako je Array g napunjen plotovima, tj. dobiven sa :

g[i]=Plot[nešto] , i = 1...n


Show@Array[g,9]

(Striktno, ovo što ti želiš je Show@@Array[g,9] , ali radit će i onako kako piše gore),

Citat:
Kako pri tome onemogućiti da se izlaz od Plota prikaže, tj. da se vrijednosti samo
spreme u polje g?


Vidi 'DisplayFunction' u Helpu. Pod Further Examples je detaljno objašnjeno.

Citat:
2. Kako u Mathematici pisati funkcije koje unutar tijela imaju petlje i
slične stvari.


Pogledaj 'Module' u Helpu.

Citat:
Konkretno kako prevesti sljedeci C kod :

double spline(double y)
{
int i=0;
double sol,h;

h=(b-a)/n;

i=(int)ceil((y-a)/h);//u kojem smo segmentu

sol=f[i-1]+((f[i]-f[i-1])/(x[i]-x[i-1]))*(y-x[i-1]);//Newtonow oblik IP-a

return sol;
}


Otprilike ovako (a , b i n su valjda globalne varijable):
Kod:
spline@y_?NumericQ:=Module[{i=0,sol,h},
   h=(b-a)/n;
   i=Ceiling[(y-a)/h];
   sol=f[[i]]+(f[[i+1]-f[[i]])/(x[[i+1]]-x[[i]])*(y-x[[i]]);
   sol
]


Citat:
3. Kako preusmjeriti izlaz u tekući direktorij, a ne u onaj u kojem je instalirana Mathematica
(naravno, uz pretpostavku da se path ne navodi eksplicitno)


Vidi 'SetDirectory' u Helpu. Početni "tekući direktorij" je upravo onaj u kojem je instalirana Mma, inače.

Citat:
4. Jedan problem u radu s poljem funkcija ,tj. zašto sljedeći kod :
Array[l,n];

For[i=1,i⇐n,i++,
l[i][z_] := f0[i - 1] +(f0[i] - f0[i - 1])/(x[i] - x[i - 1])*(z - x[i - 1]);]

(pri čemu su sve vrijednosti u poljima f0 i x ispravne i sve varijable počišćene)

radi, dok sljedeći :

Array[fi,n+1];


Smijem pitati što će ti ovo? Mislim, ne škodi, ali i ne treba...

Citat:

fi[0][z_]:=(x[1]-z)/(x[1]-x[0]) /;x[0]⇐z⇐x[1]
fi[0][z_]:=0 /; z>x[1]

fi[n][z_]:=(x[n-1]-z)/(x[n-1]-x[n]) /;x[n-1]⇐z⇐x[n]
fi[n][z_]:=0 /;z\[LessEqual]x[n-1]

For[i=1,i⇐n-1,i++,

fi[i][z_]:=(z-x[i-1])/(x[i]-x[i-1]) /; x[i-1]⇐z⇐x[i];

fi[i][z_]:=(z-x[i+1])/(x[i]-x[i+1]) /;x[i]<z⇐x[i+1];

fi[i][z_]:=0 /; z<x[i-1] || z>x[i+1];
]

Ne daje nikakav output?

Kodovi bi trebali generirati linearne splineove i to prvi eksplicitno na svakom segmentu
subdivizije, a drugi definira bazu za prostor linearnih splineova na nekom segmentu.


Hm... možda se uvjeti ( /; ) ne evaluiraju dinamički... radi li kad u gornjem primjeru (koji radi) staviš uvjet na z koji ovisi o i ?


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
Boris Davidovič
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 08. 01. 2004. (23:05:18)
Postovi: (3C)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 14:32 pon, 19. 4. 2004    Naslov: Citirajte i odgovorite

Nisam još uspio skužiti kako prvo spremiti plotove u polje, a da se pri tom ne prikazuju, pa ih kasnije prikazati sa Show[opcija]@@Array[...] , naime ne znam kuda ubaciti opciju koja ponovo prikazuje plot.

Onakav kod za modul kakav je bio u odgovoru baš i nije bio od pomoći, no sljedeći : [code:1]
Clear[a,b,n,h,x,f0,spline];
a=-1;
b=1;
n=10;
h=(b-a)/n;

Array[x,n+1];(*točke interpolacije*)
Array[f0,n+1];(*vrijednost f-je u točkama interpolacije*)

For[i=0,i<=n,i++,
x[i]=a+i*h;
f0[i]=f[x[i]];
]

spline[y_]:=Module[{i=0,sol},
i=Ceiling[(y-a)/h];
sol=f0[i]+((f0[i+1]-f0[i])/(x[i+1]-x[i]))*(y-x[i]);
sol
]

Plot[Evaluate[{spline[x],f[x]}],{x,a,b}]

[/code:1]

(f[z] je definirana kako treba)

točno izračuna vrijednosti u točkama, no plot javlja svakakve gluposti.

Inače, sve ovo mi je trebalo da probam plotati interpolaciju, kakva mi je već trebala, pa kako nijedna opcija nije radila probao sam sa svakom koja mi je pala na pamet.

U svakom slučaju sad sam uspio osposobiti BC++ 3.11 za DOS, pa neće biti strašno niti ako nitko ne odgovori na pitanja.
Nisam još uspio skužiti kako prvo spremiti plotove u polje, a da se pri tom ne prikazuju, pa ih kasnije prikazati sa Show[opcija]@@Array[...] , naime ne znam kuda ubaciti opciju koja ponovo prikazuje plot.

Onakav kod za modul kakav je bio u odgovoru baš i nije bio od pomoći, no sljedeći :
Kod:

Clear[a,b,n,h,x,f0,spline];
a=-1;
b=1;
n=10;
h=(b-a)/n;

Array[x,n+1];(*točke interpolacije*)
Array[f0,n+1];(*vrijednost f-je u točkama interpolacije*)

For[i=0,i<=n,i++,
     x[i]=a+i*h;
     f0[i]=f[x[i]];
     ]

spline[y_]:=Module[{i=0,sol},
    i=Ceiling[(y-a)/h];
    sol=f0[i]+((f0[i+1]-f0[i])/(x[i+1]-x[i]))*(y-x[i]);
    sol
    ]

Plot[Evaluate[{spline[x],f[x]}],{x,a,b}]



(f[z] je definirana kako treba)

točno izračuna vrijednosti u točkama, no plot javlja svakakve gluposti.

Inače, sve ovo mi je trebalo da probam plotati interpolaciju, kakva mi je već trebala, pa kako nijedna opcija nije radila probao sam sa svakom koja mi je pala na pamet.

U svakom slučaju sad sam uspio osposobiti BC++ 3.11 za DOS, pa neće biti strašno niti ako nitko ne odgovori na pitanja.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
krcko
Forumaš nagrađen za životno djelo
Forumaš nagrađen za životno djelo


Pridružen/a: 07. 10. 2002. (15:57:59)
Postovi: (18B3)16
Sarma = la pohva - posuda
655 = 759 - 104

PostPostano: 16:51 pon, 19. 4. 2004    Naslov: Citirajte i odgovorite

[quote="Boris Davidovič"]Nisam još uspio skužiti kako prvo spremiti plotove u polje, a da se pri tom ne prikazuju, pa ih kasnije prikazati sa Show[opcija]@@Array[...] , naime ne znam kuda ubaciti opciju koja ponovo prikazuje plot.[/quote]

Evo, ovako...

[code:1]slike=Table[Plot[Sin[n x],{x,0,2Pi},DisplayFunction->Identity],{n,1,3}]

Show[slike,DisplayFunction->$DisplayFunction][/code:1]
Boris Davidovič (napisa):
Nisam još uspio skužiti kako prvo spremiti plotove u polje, a da se pri tom ne prikazuju, pa ih kasnije prikazati sa Show[opcija]@@Array[...] , naime ne znam kuda ubaciti opciju koja ponovo prikazuje plot.


Evo, ovako...

Kod:
slike=Table[Plot[Sin[n x],{x,0,2Pi},DisplayFunction->Identity],{n,1,3}]

Show[slike,DisplayFunction->$DisplayFunction]



_________________
Vedran Krcadinac

Ljudi su razliciti, a nula je paran broj.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji diplomskih i starih studija -> Uvod u optimizaciju Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan