GertSmit
Artikelen: 0
Berichten: 154
Lid geworden op: vr 28 aug 2020, 19:04

Computationeel vraagje

Hier is een operator, Xilvo heet hij, die vindt dat wiskundige algoritmes in programmaregels gevat geen wiskunde zijn. Zelf ben ik niet zo goed in hogere wiskunde, dus het omzetten is niet aan mijn besteedt. Is er iemand op het forum die het leuk vindt om programmaregels om te zetten in hogere wiskunde? Ik zou er mee geholpen zijn.

Het programma is geschreven in C/PHP en is de bladzijde https://dbphysics.org/dbphysics.php?page=partum-figura

Het is een plot-programma die een stuk ruimtetijd berekent.

De lus om een plot te berekenen wordt als volgt geschreven:

$file=fopen('./figure/'.$figuremain[0].'.xyz', 'w');
if (flock($file, LOCK_EX)) {
for($x=-$figuremain[2];$x<$figuremain[2];$x+=$figuremain[3]) {
for($y=-$figuremain[2];$y<$figuremain[2];$y+=$figuremain[3]) {
for($z=-$figuremain[2];$z<$figuremain[2];$z+=$figuremain[3]) {
$ktot=0; $xtot=0; $ytot=0; $ztot=0;
for($dtel=0;$dtel<$figuremain[1];$dtel++) {
$afx=($x-$dbx[$dtel])*($x-$dbx[$dtel]); $afy=($y-$dby[$dtel])*($y-$dby[$dtel]); $afz=($z-$dbz[$dtel])*($z-$dbz[$dtel]); $afs=sqrt($afx+$afy+$afz);
if($afs!=0) $krm=1/($afs*$afs); else $krm=9.9999999999999E+99;
$ktot=$ktot+$krm; $xtot=$xtot+($x-$dbx[$dtel])/$krm; $ytot=$ytot+($y-$dby[$dtel])/$krm; $ztot=$ztot+($z-$dbz[$dtel])/$krm;
}
fwrite($file, $ktot." ".$xtot." ".$ytot." ".$ztot." ");
}
}
}
echo nl2br('<br><br>File has been written.<br></article>');
flock($file, LOCK_UN);
}
fclose($file);

De lus om een plot om te zetten naar een jpeg afbeelding gaat als volgt:

$filev=fopen('./figure/'.preg_replace('/\.xyz/', '.tmp', $activefile), 'r');
$teller=0; while($teller<4) { $bit=fgetc($filev); if($bit==" ") $teller++; else $figuremain[$teller]=$figuremain[$teller].$bit; }
$teller=0; while($teller<$figuremain[1]) { $xyzteller=0; while($xyzteller<3) { $bit=fgetc($filev); if($bit==" ") $xyzteller++; else $db[$teller][$xyzteller]=$db[$teller][$xyzteller].$bit; } $teller++; }
fclose($filev);
echo '<article>Figure : '.$figuremain[0].' db : '.$figuremain[1].' spatiality : '.$figuremain[2].' density : '.$figuremain[3].'<br><br>';
for($tel=0;$tel<$figuremain[1];$tel++) echo 'db#'.$tel.' x: '.$db[$tel][0].' y: '.$db[$tel][1].' z: '.$db[$tel][2].'<br>';
if(file_exists('./figure/'.preg_replace('/\.xyz/', '.jpeg', $activefile))) { chmod('./figure/'.preg_replace('/\.xyz/', '.jpeg', $activefile), 0775); unlink('./figure/'.preg_replace('/\.xyz/', '.jpeg', $activefile)); }
$file = fopen('./figure/'.$activefile, 'r');
$maxt=""; $maxx=""; $maxy=""; $maxz=""; $x2max=""; $y2max="";
$mint="9.9999999999999E+99"; $minx="9.9999999999999E+99"; $miny="9.9999999999999E+99"; $minz="9.9999999999999E+99"; $x2min="9.9999999999999E+99"; $y2min="9.9999999999999E+99";
$avet=""; $avex=""; $avey=""; $avez=""; $x2ave=""; $y2ave=""; $numbersinset="0";
for($x=-$figuremain[2];$x<$figuremain[2];$x=$x+$figuremain[3]) {
for($y=-$figuremain[2];$y<$figuremain[2];$y=$y+$figuremain[3]) {
for($z=-$figuremain[2];$z<$figuremain[2];$z=$z+$figuremain[3]) {
for($teller=0;$teller<4;$teller++) $tot[$teller]="";
$teller=0;while($teller<4) { $bit=fgetc($file); if($bit==" ") $teller++; else $tot[$teller]=$tot[$teller].$bit; }
$x2=$tot[2]-.5*$tot[1]; $y2=$tot[3]-.5*$tot[1];
$numbersinset++;
$avet=$avet+$tot[0]; $avex=$avex+$tot[1]; $avey=$avey+$tot[2]; $avez=$avez+$tot[3];
$x2ave=$x2ave+$x2; $y2ave=$y2ave+$y2;
if($maxt<$tot[0]) $maxt=$tot[0]; if($maxx<$tot[1]) $maxx=$tot[1]; if($maxy<$tot[2]) $maxy=$tot[2]; if($maxz<$tot[3]) $maxz=$tot[3];
if($mint>$tot[0]) $mint=$tot[0]; if($minx>$tot[1]) $minx=$tot[1]; if($miny>$tot[2]) $miny=$tot[2]; if($minz>$tot[3]) $minz=$tot[3];
if($x2max<$x2) $x2max=$x2; if($y2max<$y2) $y2max=$y2;
if($x2min>$x2) $x2min=$x2; if($y2min>$y2) $y2min=$y2;
}
}
}
echo nl2br("\nMaximum Curvature:".$maxt." x:".$maxx." y:".$maxy." z:".$maxz." x2:".$x2max." y2:".$y2max);
echo nl2br("\nMinumum Curvature:".$mint." x:".$minx." y:".$miny." z:".$minz." x2:".$x2min." y2:".$y2min);
$avet=$avet/$numbersinset; $avex=$avex/$numbersinset; $avey=$avey/$numbersinset; $avez=$avez/$numbersinset;
$x2ave=$x2ave/$numbersinset; $y2ave=$y2ave/$numbersinset;
echo nl2br("\nAverage Curvature:".$avet." x:".$avex." y:".$avey." z:".$avez." x2:".$x2ave." y2:".$y2ave);
fclose($file);
$width=abs($x2min)+abs($x2max); $height=abs($y2min)+abs($y2max);
echo nl2br("\n\nCreating jpeg image\nWidth: ".$width." Height: ".$height);
if($_POST['curvature']&&$_POST['range']&&_POST['scale']) { $kromming=$_POST['curvature']; $afstand=$_POST['range']; $schaal=$_POST['scale'];
} else { $kromming="1"; $afstand=".5"; $schaal="1"; }
echo nl2br("\nCurvature:".$kromming." Range:".$afstand." Scale:".$schaal."\n");
$color="255"; $colormodus="0"; $im=imagecreatetruecolor(800,600);
$file=fopen('./figure/'.$activefile, 'r');
for($teller=0;$teller<$figuremain[1];$teller++) for($xyzteller=0;$xyzteller<3;$xyzteller++) $db[$teller][$xyzteller]="";
for($x=-$figuremain[2];$x<$figuremain[2];$x=$x+$figuremain[3]) {
for($y=-$figuremain[2];$y<$figuremain[2];$y=$y+$figuremain[3]) {
for($z=-$figuremain[2];$z<$figuremain[2];$z=$z+$figuremain[3]) {
for($teller=0;$teller<4;$teller++) $tot[$teller]="";
$teller=0;while($teller<4) { $bit=fgetc($file); if($bit==" ") $teller++; else $tot[$teller]=$tot[$teller].$bit; }
$x2=$tot[2]-.5*$tot[1]; $y2=$tot[3]-.5*$tot[1];
$x2=$x2*$schaal; $y2=$y2*$schaal;
$x2=$x2*(800/$width); $y2=$y2*(600/$height);
echo " ";
$color = imagecolorallocate($im,(96*($x/$figuremain[2]))+160,(96*($x/$figuremain[2]))+160,(96*($x/$figuremain[2]))+160);
if($tot[0]>(($kromming/$afstand)-$afstand)&&$tot[0]<(($kromming/$afstand)+$afstand)) imagesetpixel ($im,400+intval($x2),300-intval($y2),$color);
}
}
}
fclose($file);


Ben benieuwd of er wiskundigen zijn die de uitdaging aandurven.
Gebruikersavatar
OOOVincentOOO
Artikelen: 0
Berichten: 1.639
Lid geworden op: ma 29 dec 2014, 14:34

Re: Computationeel vraagje

Waarom speel je zo op de man toe?

Inderdaad ik ook vind een programmeer code is niet een efficiente universele manier om wiskunde te communiceren.

Helaas ken ik de taal PHP/C niet. Ik probeerde de code op een online PHP compiler zoals hier: Compiler.

Het eerste wat opvalt is dat er een file geopend dient te worden. Je schrijft:

Code: Selecteer alles

file=fopen('./figure/'.$figuremain[0].'.xyz', 'w');
Misschien kun je de code aanpassen of een andere taal gebruiken zodat iemand deze kan test op een van de velen online compilers?

Tevens is de code zoals jij die plaatst onleesbaar. Gebruik de </> om code te plaatsen zoals ook het gebruiken van tabs maakt de code meer leesbaar maar dit moet jijzelf doen:

Om iets te delen moet de auteur ook zijn best doen. Op zijn minst een beetje de taal respecteren waarin hij wil commmuniceren. En dat, doe jij niet, te zien hoe jij de code plaatst met een slordige copy/paste zonder enkele tabs of indents.

Code: Selecteer alles

$file=fopen('./figure/'.$figuremain[0].'.xyz', 'w');
if (flock($file, LOCK_EX)) {
	for($x=-$figuremain[2];$x<$figuremain[2];$x+=$figuremain[3]) {
		for($y=-$figuremain[2];$y<$figuremain[2];$y+=$figuremain[3]) {
			for($z=-$figuremain[2];$z<$figuremain[2];$z+=$figuremain[3]) {
				$ktot=0; $xtot=0; $ytot=0; $ztot=0;
				for($dtel=0;$dtel<$figuremain[1];$dtel++) {
					$afx=($x-$dbx[$dtel])*($x-$dbx[$dtel]); $afy=($y-$dby[$dtel])*($y-$dby[$dtel]); $afz=		($z-$dbz[$dtel])*	($z-$dbz[$dtel]); $afs=sqrt($afx+$afy+$afz);
					if($afs!=0) $krm=1/($afs*$afs); else $krm=9.9999999999999E+99;
						$ktot=$ktot+$krm; $xtot=$xtot+($x-$dbx[$dtel])/$krm; $ytot=$ytot+($y-$dby[$dtel])/$krm; $ztot=$ztot+	($z-$dbz[$dtel])/$krm;
}
fwrite($file, $ktot." ".$xtot." ".$ytot." ".$ztot." ");
}
}
}
echo nl2br('<br><br>File has been written.<br></article>');
flock($file, LOCK_UN);
}
fclose($file);
Laatst gewijzigd door OOOVincentOOO op wo 02 nov 2022, 11:05, 1 keer totaal gewijzigd.
GertSmit
Artikelen: 0
Berichten: 154
Lid geworden op: vr 28 aug 2020, 19:04

Re: Computationeel vraagje

De code aanpassen zou alleen maar meer i/o opleveren. Veel efficiënter dan dit kan niet.
Voor elke C/PHP programmeur zou het een 'walk in the parc' moeten zijn.
Gebruikersavatar
OOOVincentOOO
Artikelen: 0
Berichten: 1.639
Lid geworden op: ma 29 dec 2014, 14:34

Re: Computationeel vraagje

Ik ga niet in dat rommetje code kijken. Zonder de file welke geopend dient te worden.

Tevens respectloos zoals amateur code plaatsen met copy/paste zonder indents/tabs zonder commentaar is niet serieus te nemen.

nb. ik kan mij beste helpen in andere prog. talen. Maar ik ga niet dat rommeltje zonder commentaar analyseren.
GertSmit
Artikelen: 0
Berichten: 154
Lid geworden op: vr 28 aug 2020, 19:04

Re: Computationeel vraagje

Weer ééntje die op de emotie speelt. Niet erg wetenschappelijk.
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.725
Lid geworden op: vr 30 mar 2018, 16:51

Re: Computationeel vraagje

GertSmit schreef: wo 02 nov 2022, 11:04 Voor elke C/PHP programmeur zou het een 'walk in the parc' moeten zijn.
Al helemaal voor de programmeur zelf. Tenslotte heeft hij de formules waarop de code gebaseerd is.
Die programmeur ben jij. Waarom doe je het dan zelf niet?

Verder is de code volkomen onleesbaar, zoals Vincent al opmerkte. Het forum heeft een mogelijkheid code te plaatsen met behoud van indents en dergelijke. Daar heb ik je op gewezen maar om onduidelijke redenen weiger je daar gebruik van te maken. Als jij het vertikt de code in leesbare vorm te plaatsten zal niemand deze letterbrei voor jou willen ontcijferen.
GertSmit
Artikelen: 0
Berichten: 154
Lid geworden op: vr 28 aug 2020, 19:04

Re: Computationeel vraagje

Je speelt weer op de man Xilvo, vriendelijkheid ontbeert je. Hou het alsjeblieft wetenschappelijk en zakelijk. Blijkbaar ken je geen C, elke C programmeur lacht om die paar programmaregels en heeft zeker geen tierelantijntjes nodig.
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.725
Lid geworden op: vr 30 mar 2018, 16:51

Re: Computationeel vraagje

Ik speel niet op de man, ik zeg dat de code onleesbaar is. Iedereen bekend met C (zoals ik) weet dat inspringen belangrijk is voor de leesbaarheid, net als een niet-proportioneel font.
GertSmit schreef: wo 02 nov 2022, 11:24 ...elke C programmeur lacht om die paar programmaregels en heeft zeker geen tierelantijntjes nodig.
Nogmaals, waarom doe je het dan zelf niet?
GertSmit
Artikelen: 0
Berichten: 154
Lid geworden op: vr 28 aug 2020, 19:04

Re: Computationeel vraagje

Goed lezen Xilvo, ik zal het even herhalen:

Zelf ben ik niet zo goed in hogere wiskunde, dus het omzetten is niet aan mijn besteedt. Is er iemand op het forum die het leuk vindt om programmaregels om te zetten in hogere wiskunde? Ik zou er mee geholpen zijn.
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.725
Lid geworden op: vr 30 mar 2018, 16:51

Re: Computationeel vraagje

GertSmit schreef: wo 02 nov 2022, 11:31 Goed lezen Xilvo, ik zal het even herhalen:

Zelf ben ik niet zo goed in hogere wiskunde, dus het omzetten is niet aan mijn besteedt. Is er iemand op het forum die het leuk vindt om programmaregels om te zetten in hogere wiskunde? Ik zou er mee geholpen zijn.
Als jij het programma hebt geschreven dan heb je wiskundige formules gehad waarop de code gebaseerd is.
Je kunt geen op wiskunde gebaseerde code schrijven zonder eerst die wiskunde op papier te hebben.

Niemand gaat hier tijd in steken als je zelf al niet de moeite neemt het leesbaar te plaatsen.
GertSmit
Artikelen: 0
Berichten: 154
Lid geworden op: vr 28 aug 2020, 19:04

Re: Computationeel vraagje

Jij kunt niet voorspellen wat andere mensen al of niet gaan doen. Dat jij het niet leuk vindt is duidelijk. Je hoeft niet hoor, het is een verzoek aan mensen die het wel willen.
Gebruikersavatar
OOOVincentOOO
Artikelen: 0
Berichten: 1.639
Lid geworden op: ma 29 dec 2014, 14:34

Re: Computationeel vraagje

Klopt het dat een bestand word geopen waaruit coordinaten: x, y en z worden gelezen?

Code: Selecteer alles

$file=fopen('./figure/'.$figuremain[0].'.xyz', 'w');
Dan word van de coordinaten de straal berekend naar de oorsprong of iets anders er staat geen commentaar bij en onleesbaar in huidige vorm. Dan loopen door alle coordinaten:
$$R=\sqrt{\Delta x^2+\Delta y^2+\Delta z^2}$$
Wat jullie kromming Kr noemen maar is niets anders dan de stelling van Pythagoras.

Code: Selecteer alles

$afx=($x-$dbx[$dtel])*($x-$dbx[$dtel]);
$afy=($y-$dby[$dtel])*($y-$dby[$dtel]);
$afz=($z-$dbz[$dtel])*($z-$dbz[$dtel]);

$afs=sqrt($afx+$afy+$afz);

if($afs!=0) $krm=1/($afs*$afs); else $krm=9.9999999999999E+99;
De andere code naar jij verteld schijft dit naar een jpegje. Dus ik zie niet de inhoudelijke relevantie waarom dit te posten.

Dus mijn vraag is: wat is dit bestand met coordinaten? En hoe worden de relevante coordinaten bepaald in deze file.

(nb. het antwoord weet ik een beetje omdat ik ergens in jullie document een random generator heb gezien. Maar geen uitleg: hoe, wat en waarom.)

Het is en blijft brutaal de code gewoon niet netjes op te schrijven. Ik ben een idioot (en misschien ook zo gezien worden) de tijd te nemen hiervoor.
Gebruikersavatar
OOOVincentOOO
Artikelen: 0
Berichten: 1.639
Lid geworden op: ma 29 dec 2014, 14:34

Re: Computationeel vraagje

OOOVincentOOO schreef: wo 02 nov 2022, 14:39 Wat jullie kromming Kr noemen maar is niets anders dan de stelling van Pythagoras.
Even een correctie, ik was niet volledig correct. De kromming is volgens de code/document:
$$Kr=\frac{1}{R^2}=\frac{1}{\Delta x^2 + \Delta y^2 +\Delta z^2}$$
De invers square law is eigenlijk zeer bekende natuurkunde van voor het jaar 1800 denk ik. Hier is zijn een drietal (gravitatie, electriciteit en straling) mooie voorbeelden: hyperphysics. De relativiteits theorie (1914) heeft dit niet eens nodig en toont/bewijst de inverse square law eigenlijk aan volgens mijn begrip dit bij: simpele aard-maan-zon situatie en snelheden veel lager dan lichtsnelheid.

Opmerking:
De gepresenteerde code gebruikt alleen afstanden. Dit zijn onvoldoende gegevens om iets te berekenen. Volgens jullie huidige programma/document is de gravitatie (of wat dan ook berekend word) uitgedruk in inches anders dan in millimeter. Er zullen op zijn minst extra constanten/variabelen gedefinieerd worden. Dit is ook iets om mee te nemen.

Echter de vraag welk bestand (indien zo) geopend word en hoe de x, y, z data hierin tot stand komt kan ik niet achterhalen. Behalve dat ergens in het document een stukje code stond/staat met random generators zonder beschrijving: hoe, wat waar en waarom.

Code: Selecteer alles

$file=fopen('./figure/'.$figuremain[0].'.xyz', 'w');
flappelap
Artikelen: 0
Berichten: 1.356
Lid geworden op: za 30 dec 2017, 10:49

Re: Computationeel vraagje

Dit gaat niet over de code, maar ik zat even om te neuzen op het paper dat jullie op Vixra hebben gezet. Ik kon daar weinig chocola van breien, maar ik vond wel de uitspraak

"The ideas of Einstein are widely accepted, although there has never been a real theoretic thesis that
combines curvature and the traditional Newtonian gravitation laws"

in jullie hoofdstuk omtrent zwaartekracht en kromming. Wel, laat ik nu exact op dit onderwerp gepromoveerd zijn. Zie

https://research.rug.nl/en/publications ... -revisited

Dus deze stelling van jullie klopt niet, en ik kon het natuurlijk niet laten om jullie te wijzen op mijn onderzoek. Voor de rest kan ik weinig over jullie project zeggen, want ik mis een stuk motivatie en aanknoping met gevestigde natuurkunde.
Gebruikersavatar
physicalattraction
Moderator
Artikelen: 0
Berichten: 4.163
Lid geworden op: do 30 mar 2006, 15:37

Re: Computationeel vraagje

Opmerking moderator

Zonder enige moeite van de topicstarter om de code leesbaar op te schrijven heeft deze discussie geen zin, en gaat derhalve op slot.

Terug naar “Theorieontwikkeling”