Line intersections - An example of translation of a function from Matlab to Smath - Messages
WroteJust an exercise on Smath to test functionalities and capabilities.
Try the attached file and play with it.
Thanks
Marco
InterX.sm (85 KiB) downloaded 168 time(s).
Hi Marco. Here some comments about your great file. As you suggest, I play with it.
Best regards.
Alvaro.
InterX.r1.sm (77 KiB) downloaded 83 time(s).
WroteTry the attached file and play with it.
1. Marco => still computing after 15 min ? !
2. Alvaro => red from top to bottom
WroteTry the attached file and play with it.
Attached is about timing in work sheet.
Observe the sequential timing [black].
t0:=time(1) is in collapsed area.
Contour_8 Hypersurface.sm (1 MiB) downloaded 59 time(s).
WroteHi Marco. Here some comments about your great file. As you suggest, I play with it.
Best regards.
Alvaro.
1 min 53 sec on my windows tablet pc.
Wrote
1 min 53 sec on my windows tablet pc.
SMath Studio 0.99.6611 time(0)-to =83.735 s on my windows10
WroteOriginally Posted by: Andrey Ivashov [url=/forum/yaf_postsm47126_Line-intersections.aspx#post47126][/url]
1 min 53 sec on my windows tablet pc.
SMath Studio 0.99.6611time(0)-to =83.735 son my windows10
Time taken in my win 10 laptop with SS 0.99.6619 shown.
Wrote5 min 25 s (win 10 x64, intel i5 quad core 2.40GHz)
reduced to 30-35 seconds using ranged indices to replace stack/augment/submatrix (most heavy operations were in stack/augment under loops)
InterX.r1 - ranged indices.sm (87 KiB) downloaded 76 time(s).
Great! Thank you Davide!
plotG(x,y,char,size,color):line(k:range(1,rows(x)),augment(x,y,el(r3,k):char,el(r4,k):size,el(r5,k):color),2,1)
plotG(xy,char,size,color):line(k:range(1,rows(xy)),augment(xy,el(r3,k):char,el(r4,k):size,el(r5,k):color),2,1)
Best regards.
Best regards.
Alvaro.
PD: I don't replace plotG because don't understand very well that syntax.
InterX.r1 - ranged indices.sm (90 KiB) downloaded 60 time(s).
WroteWroteI don't replace plotG because don't understand very well that syntax.
It is simple - ranged indexes used.
Thanks for the explanation, now I see the speed increment, and I don't think that it could be that big difference before you show it.
But actually the plotG(4) routine was which confuse me. I prefer
plotG(xy,char,size,color):if(cols(xy)>1,plotG(col(xy,1),col(xy,2),char,size,color),plotG(Re(xy),Im(xy),char,size,color))
because I think that any good plot implementation must to use complexes but not couple of reals. So, if xy argument have only one column, one can assume that data are as Z = X + iY.
Best regards.
Alvaro.
Quotebecause I think that any good plot implementation must to use complexes but not couple of reals. So, if xy argument have only one column, one can assume that data are as Z = X + iY.
Andrey misses this detail of your function about the complex values, but you can still do it; keep the if statement and replace the loops (the case with more than a column as shown by Andrey doesn't require the col() functions, this is redundant and time consuming... If you think that more than 2 columns might be provided, add the case and a single sumbatrix instead

WroteBut double the amazing time obtained by Davide. But it's just a "scalar" implementation, sure there are better ones.
Here's my pure SMATH find function. with similar time to MWFIND.
InterX.r1 - ranged indices_alyles.sm (94 KiB) downloaded 79 time(s).
WroteBTW, I would suggest to use another version of plotG which is much faster then previous one (and simplier):
plotG(x,y,char,size,color):line(k:range(1,rows(x)),augment(x,y,el(r3,k):char,el(r4,k):size,el(r5,k):color),2,1)
plotG(xy,char,size,color):line(k:range(1,rows(xy)),augment(xy,el(r3,k):char,el(r4,k):size,el(r5,k):color),2,1)
Best regards.
For such uses it would be good if the augment and stack functions could expand scalar arguments (or more generally any arguments not matching the maximum number of rows or cols) to uniformly populated vectors of the required size).
Then the above example wouldn't even need a helper function as you could write
augment(x,y,"*",10,"red"
Best regards.
WroteFor such uses it would be good if the augment and stack functions could expand scalar arguments (or more generally any arguments not matching the maximum number of rows or cols) to uniformly populated vectors of the required size).
Then the above example wouldn't even need a helper function as you could writeaugment(x,y,"*",10,"red"
I also vote for that augment() and stack () functionality.
In that case, we could even have "plot" functions (with the same functionality as augment())
plot(x,y)
plot(x,y,"*"
plot(x,y,"*",10)
plot(x,y,"*",10,"red"
Regards,
Radovan
I'm trying for the intersection of the two Trifolium, .
blue => native ... red => rotated.
They are created in "Page1 Trifolium.sm
Then recalled for the InterX(T1,T2)
Nothing happens >>> 1 hr ? [Win 7 Starter Edition ... 1.66 GHz]
Is it supposed to work ? Thanks in advance.
Page1 Trifolium.sm (32 KiB) downloaded 49 time(s).
Maths InterseX [Marco].sm (51 KiB) downloaded 51 time(s).
You are using an old version of the program. Try this one.
Notice that the point (0,0) is found several times by the algorithm. It could be interesting to check if it get the correct number of crosses at the origin.
Best regards.
Alvaro.
InterX.r1 - ranged indices_alyles.sm (88 KiB) downloaded 68 time(s).
-
New Posts
-
No New Posts