Need help to get the right codes using Mathematica

  • Mathematica
  • Thread starter kaizen.moto
  • Start date
  • Tags
    Mathematica
In summary: C are defined inside the function and are not being used anywhere else. As for the error, I am not sure what you are trying to do. Can you post the function and the arguments to the function which generate the error?
  • #1
kaizen.moto
98
0
Dear all,

Please help me to get the right codes of sumu17[m,n] and sumv17[m,n] that should be kept inside the Do-Loop.

You can refer to the attached file to view the code.

I appreciate for any comments.

Thank you.
 

Attachments

  • exercise_Do.nb
    115.5 KB · Views: 412
Physics news on Phys.org
  • #2
Sometimes, Kaizen, I'm convinced that you must be a machine or an alien. No human being would write code like this.
(Hey look! http://www.sitepoint.com/forums/css-53/page-background-big-image-how-eliminate-horizontal-scrollbar-766663.html#post4906935" [Broken])

In other words, I had a look at your notebook. It's not clear what you're asking, what you're trying to do or why you're trying to do it.

----

Anyway, I think that the notebook you uploaded is broken.
I found the sumu17 object that you're talking about at the end of your single, massive code block. There you define

u17[m_, n_] := sub[17][[1, 1]];
sumu17[mMAx_, n_] := Chop[Sum[u17[m, n], {m, 1, mMAx, 2}]];

where sub[17] is some horrendous matrix product that it's not necessary to care about.
How on earth, then, do you expect sumu17[mMAx, n] not to be anything but Floor[mMax/2] times sub[17][[1, 1]]?
 
Last edited by a moderator:
  • #3
Frankly speaking, Iam just a human being who is just about to embark into the world of programming. Being a novice user of Mathematica let alone to the world of programming language, this is the best code I could write so far. Iam pretty sure that the code can be further improved and simplifed but the problem is that I have lack of knowledge on how to do that.

I have now attached the full version of the code that I have created, yet again, its very lengthy and lots of repetition of expressions, so that it would become more clearer on what Iam trying to do and achieve. Iam also attach other files for further explanation and descriptions.

As Iam considered myself at the stage of crawling to learn Mathematica as a programming tool, Iam continuously trying my best to improve and simplified the code as possoble.

My question as I asked before is that how to get the right formulations for sumu1[m,n], sumu2[m,n], ...sumu17[m,n] and sumv1[m,n],...sumv17[m,n].

Thank you.
 

Attachments

  • DoLoopPlate.nb
    129.4 KB · Views: 419
  • FlowChart.doc
    44 KB · Views: 191
  • NotesforForum.nb
    138.5 KB · Views: 396
  • #4
I think you used () instead of [] for a function call. Of course, your code is a mess, so it is hard to know.

You really need to break this up. Your flow chart is a nice start. You should modularize your code into functions that do each step of the flow chart.
 
  • #5
Thank you for your comments.
Iam trying to break my codes now using Module eventhough I have no idea on how to do this. How can I separate the codes into modular functions in which they are inter-related to each other. In another words, I still cannot visualise the separations between them. Please let me know if you have any suggestions.
 
  • #6
kaizen.moto said:
Thank you for your comments.
Iam trying to break my codes now using Module eventhough I have no idea on how to do this. How can I separate the codes into modular functions in which they are inter-related to each other. In another words, I still cannot visualise the separations between them. Please let me know if you have any suggestions.
Your flow chart showed the process split into very clearly delineated sections. Your code should reflect this. And inside each of those you should think of a similar sub-flow-chart.
 
  • #7
I have successfully created the code separately using Module by breaking the codes into smaller parts and the results are as expected (* through hardwork and difficulties*). However, I have another new problem that it can only run up to about 25 cycles or iterations. When I try to run further, I got this warning and error messages:

' Results Inverse of badly conditioned matrix and Row Reduce badly conditioned matrix '.

The other problem is that its runs very slow especially when the iterators or variables get larger and larger. Iam pretty sure that the code could be further improved but this is the best syntax that I could get so far.

For this 25 cycles, it would take to about somewhere 1+ hours to run using my standard PC.
My target number of cycles would be up to 2500 cycles maximum and 750 the minimum.

Please let me know how to overcome this new problem.

Thank you.
 
  • #8
Can you post the function where the error occurs and the arguments to the function which generate the error?

Regarding the execution time. When I am trying to speed up code the first thing that I do is actually measure the time that each part takes and determine where the bulk of the time is being spent.
 
  • #9
The errors starts from this function (simplified version):

dispmat[variables_]:=Module[{local variables}, psimat = psimatrix[variables];.....; disp = (Inverse[mat A]).(mat B - mat C); disp]where mat A is 3 x 3 matrix, mat B is 3 x 1 (column vector) and mat C is also a column vector (3 x1 ). So, disp would give a 3 x 1 vector.

All these mat A, mat B and mat C contains the main variables m and n. As I mentioned it before, after running the code beyond 25 cycles and m & n gets larger values. I have got the warnings and errors of badly inversed matrix and badly row reduce matrix and eventually the codes stopped running without giving any outputs.

Do you have any ideas how to solve this problem as I need to run the codes further up to 2500 cycles max and 750 cycles minimum. And also Iam trying to improve the codes for computation time cost.

Do you think that by increasing the precision would tackle this issue?

Thank you.

Hope this helps.
 
  • #10
kaizen.moto said:
The errors starts from this function (simplified version):

dispmat[variables_]:=Module[{local variables}, psimat = psimatrix[variables];.....; disp = (Inverse[mat A]).(mat B - mat C); disp]
...
I have got the warnings and errors of badly inversed matrix and badly row reduce matrix and eventually the codes stopped running without giving any outputs.
Can you print out the determinant of A prior to each call to Inverse[A]? I suspect that the determinant will either be 0 or very close to 0.
 
  • #11
For the matter of discussion, I run the code for iterators of {m,1,11,2},{n,1,11,2}, (meaning there are 36 cycles in total) since code had failed to give results at the stage m = 11 and n = 5, i.e (11,5).

I encountered two warnings after running the code, first being inverse of badly conditioned matrix (IBC) and the other of Reduce of badly conditioned matrix (RBC). Both IBC and RBC happened at different stages of Module. IBC happens on Inverse matrix and RBC started at the stage of solving the simultaneous equations.

The determinat of mat A are as follows:

det A(1,1) = 1218.0571830493543;
det A(1,3) = 3.25849×E7+2.30668×E-9 i;
det A(1,5) = 5.23556×E11-0.000170191i ;
det A(1,7) = 5.33487×E15+13.1718i ;
det A(1,9) = 4.13566×E19-109791.i ;
det A(1,11) = 2.65883×E23+2.08477×E8i ;
det A(3,1) = 5.22604×E8;
det A(3,3) = 6.19662×E10+0.0000672132i ;
det A(3,5) = 7.29786×E13+0.301006i ;
det A(3,7) = 1.94001×E17+46.1054i ;
det A(3,9) = 6.80971×E20+280218i. ;
det A(3,11) = 2.61023×E24-5.66728×E9i ;
det A(5,1) = 7.22257×E13;
det A(5,3) = 1.28851×E15-0.144967i ;
det A(5,5) = 1.90658×E17-401.127i ;
det A(5,7) = 1.02526×E20+257353.i ;
det A(5,9) = 1.14107×E23+1.22945×E8i ;
det A(5,11) = 1.90323×E26+1.70316×E11i ;
det A(7,1) = 5.7285×E18;
det A(7,3) = 4.32027×E19;
det A(7,5) = 1.7982×E21-710529.i ;
det A(7,7) = 2.69851×E23-8.65577×E8i ;
det A(7,9) = 9.92617×E25-1.0085×E11i ;
det A(7,11) = 6.68698×E28+1.88156×E13i ;

IBC warning begins from these two iterators:
det A(9,1) = 3.264×E23;
det A(9,3) = 1.52529×E24;

No IBC warnings from these iterators:
det A(9,5) = 2.8594×E25;
det A(9,7) = 1.70011×E27+3.9149×E12i ;
det A(9,9) = 2.50373×E29-1.01033×E14 i;
det A(9,11) = 7.33413×E31-4.60551×E16i ;

IBC warnings resumed:
det A(11,1) = 1.47702×E28;
det A(11,3) = 5.11187×E28;
det A(11,5) = 5.62718×E29;
det A(11,7) = 1.71332×E31-1.76121×E16i ;
det A(11,9) = 1.22858×E33+1.1912×E18i ;
det A(11,11) = 1.77265×E35+7.89441×E19i ;

RBC warnings only started when solving the simultaneous equations from the iterators of (9,11), (11,1), (11,3) and still give outputs . Only from (11,5) until (11,11) , Mathematica gives RBC warnings with no outputs were shown. Mathematica stopped running at (11,5).

Iam assuming that eventhough there are IBC warnings displayed, code is still running and generate outputs. However, RBC warnings resulted serious problems especially when iterators get larger and eventually becomes unsolvable.

Therefore, from these observations, I must find way to solve the RBC issues, so that I could run the code up to (99,99) (2500 cycles) if possible. Is there any other way how to solve simultaneous equations using the ‘Solve’ command? How can I treat the simultaneous equations so that it can be solvable from iterators (11,5) onwards.
 
Last edited:
  • #12
Are those imaginary parts correct or are they a result of numerical precision loss?
 
  • #13
I have checked that those imaginary parts are not correct. When I solve the eigenvalues of a 6 x 6 matrix, I got 6 eigenvalues which contains 2 reals, 4 complex roots. The imaginary parts are not always true, they are just the result of numerical precision loss as you said.
 
  • #14
Can you do one more check? I think that your procedure is numerically unstable. Can you calculate the matrix condition number of A at each point by evaluating the following:

With[{singularValues = SingularValueList[A, Tolerance -> 0]},
First[singularValues]/Last[singularValues]]

Preferably at each step as you did for Det above. Also, if you can find which one has the largest condition number and print out what that matrix is, that would help.
 
  • #15
Finally, I have solved my problems, and I got the results. For now, I just need to refine my codes so that it can works faster and efficiently.

Thank you so much for your kind help.
 

1. What is Mathematica and how can it help me?

Mathematica is a powerful software program used for mathematical and scientific computations, data analysis, and visualization. It is widely used by scientists, researchers, and engineers to solve complex problems and perform calculations quickly and accurately. It offers a wide range of built-in functions and tools for various fields such as physics, chemistry, biology, and engineering.

2. How can I get help with using Mathematica?

There are several resources available for getting help with Mathematica. The official website offers extensive documentation, tutorials, and videos to help users get started. Additionally, there are online communities and forums where users can ask questions and get help from experienced Mathematica users. Many universities and institutions also offer workshops and courses on using Mathematica.

3. How do I find the right codes to solve a specific problem?

The best way to find the right codes in Mathematica is to first understand the problem you are trying to solve and then break it down into smaller steps. You can then use the built-in functions and tools in Mathematica to carry out each step and eventually solve the problem. It is also helpful to refer to the documentation and online resources to find the appropriate codes for specific tasks.

4. Can Mathematica be used for data analysis and visualization?

Yes, Mathematica has powerful capabilities for data analysis and visualization. It offers a wide range of statistical functions, as well as tools for importing, manipulating, and visualizing data. With its advanced graphics and visualization capabilities, Mathematica can help users gain insights from their data and present it in a visually appealing manner.

5. Is Mathematica compatible with other programming languages?

Yes, Mathematica is compatible with other programming languages such as C, Java, and Python. It also has built-in support for various file formats, making it easy to import and export data from other programs. This makes it a versatile tool for scientists and researchers who may need to use multiple programs for their work.

Similar threads

  • MATLAB, Maple, Mathematica, LaTeX
Replies
4
Views
341
  • MATLAB, Maple, Mathematica, LaTeX
Replies
2
Views
183
  • MATLAB, Maple, Mathematica, LaTeX
Replies
6
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
23
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
764
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
6
Views
5K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
7
Views
1K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
1K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
1K
Back
Top