Variable not updating with each iteration

I have many different equations with variables and coefficients running through a for loop and at the end, are sorted into [A] [b] and [x] matrices which are used to perform matrix math to solve for unknown x's before the loop starts over. [A] consists of the coefficients, [b] consists of numbers changing with the increase of each time step, and [x] consists of variables that are supposed to be updating. The problem is that the [x] variables aren't updating, it just gives me the original x's each time. What am I doing wrong? I would post the code here but it is pretty lengthy.

8 Comments

Ok, so you have a bug somewhere. You can't really tell us where. You won't let us see your code, which will probably be convoluted, from your description.
Is there any way we can guess what you are doing wrong? Let me see, that darn crystal ball is just so often on the fritz, as it is today. And my MATLAB tarot cards are short circuiting, as I spilled coffee on them. All that is left are the tea leaves. They tell me...
... that you need to learn to use the debugger. See what is happening as you follow the flow of your code. If you expect something to happen, and it does not, then it will be clear form the debugger.
Or, you can wait for my crystal ball to come back from the repair shop. They are just so slow to get parts though.
I would be happy to post the code, or send it to anyone who would be willing to help. As far as the debugger goes, there are no error messages. How can the debugger help me when there are no errors? Sorry, I'm extremely new to Matlab.
You step through the code, one line at a time if necessary, though you can set breakpoints where you expect to see something, and then jump to the next breakpoint.
You watch the values of the variables where something is supposed to be happening. I use the debugger frequently enough even when no error is generated.
Posting the code, if it is as complex as you seem to indicate will do little. Especially since you have not clearly explained exactly what you are trying to do or solve. This is a case where you have the most incentive, and the ability to solve the problem.
Make sure the code is well commented. When people see long code that is poorly commented or is uncommented, they tend to move on to better-written questions.
Would you be willing to take a look at it?
Post it. If it is well commented, I might glance at it and see if there is anything obvious. If it is not well commented then I will not spend any time trying to figure it out.
Ok thank you. I have attached the files. "properties" basically just provides "singlephase2" with information it needs to solve equations and "gmresSolver" is just a function needed to solve the matrix. The problem is in "singlephase2". The [x] matrix is formed at the end where I believe the problem occurs when it solves for [x] and continually gives me the same value of 7750 no matter what I change "t" to. Thanks for looking.
Stephen23
Stephen23 on 19 Jun 2016
Edited: Stephen23 on 19 Jun 2016
@zephyr21: ...and learn to use the debugging tools. They also work when there is no error, i.e. when you are writing, testing, and checking your code. No error needed.

Sign in to comment.

 Accepted Answer

zephyr21 - the function signature for gmresSolver is
function [ x, error_norm, iter, flag ] = gmresSolver ( A, x, b, M, restart, max_it, tol, n )
which returns four output parameters including x. Your code calls this function (from within SinglePhase2) as
gmresSolver(A,x,b,.0001,10,I*J,0.0000001,K);
and so the output from this function is being ignored. I suspect that you want to do something more like
[x,error_norm,iter,flag] = gmresSolver(A,x,b,.0001,10,I*J,0.0000001,K);
which will then update your x.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 19 Jun 2016

Commented:

on 19 Jun 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!