How to find the solution space (x,y,z) for a function f(x,y,z)=0 in MATLAB [closed] - matlab

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
I have a function, dependant on a vector k=(x,y,z) and a function f(x,y,z)=0, I would like to find the solution space for (x,y,z).
Can this even be done analytically in matlab? I imagine it can be done numerically because my initial thought was to plot the surface created by this function, however this is of no use to me as I have 9 other constants in my equation with no numerical value assigned to them. Many thanks in advance for any help.
EDIT: This is for a polynomial degree 4.

There are no generic, analytical solvers for given function f(x,y,z) neither in matlab, nor in any other language. If such solution would exist, the Riemann hypothesis (and dozens others) would be solved ;)
For simple problems you could use symbolic math toolbox and a solve function:
http://www.mathworks.com/help/symbolic/solve.html
And obbiously there are numerical solvers, which you can use like vpasolve and others
http://www.mathworks.com/help/symbolic/vpasolve.html

Related

How does matlab solve a differential equation? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 2 years ago.
Improve this question
This question is not about how to use matlab, but trying to find out what is happening when matab is solving a differential equation. Results are often different when using different numerical methods. i wonder which numerical method is used in matlab.
Matlab has all kinds of numerical solvers available. The basic set can be found at the bottom of this page:
https://www.mathworks.com/help/matlab/math/choose-an-ode-solver.html
If you'd like to know about a particular solver (say ode45) you can scroll to the bottom of the documentation for the given solver (for ode45 it's found here: https://www.mathworks.com/help/matlab/ref/ode45.html). For this solver the paper which explains it is linked. It may, however, be a little obtuse if you are unfamiliar with the general idea behind numerical solvers, so you might consider checking out a more pedagogical text in this area, such as the one at http://numerical.recipes/. You may also consider googling less complicated solvers like the Euler Method or the Runge-Kutta method -- both give you the flavor for how the numerical solvers work.

Anonymous Function In ode45 [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
I am learning about ode45 in my computational physics class. One thing I am a little confused about is the anonymous function. What is it? I have been searching around, but I can not seem to find anything.
Note: This is not a technical answer, this comes from my experience using ode45. Hopefully you find it useful and it answers your question. If anyone wants to correct any mistakes or details I have wrong, please do.
When using Matlab ode solvers, you have to specify the derivative function, which takes as inputs the independent variable (e.g., time) and the dependent variable(s) (e.g., position, speed, etc.). There are several ways to do this.
You can make a function function dydt=derivative(t,y) which evaluates the derivative at y and t, which you can call from other scripts. This is useful if you will be solving the same ode from a number of different m-files.
On the other hand, if you are only going to solve you ode from on m-file, there is no need to create a whole new function just for one ode, so you can use an anonymous function. You have two choices here. You can create a function like dydt=#(t,y) x+t and then when you call ode45 use ode45(dydt,tspan,y0) or define the ode in the function call: ode45(#(t,y) dydt,tspan,y0).
If solving small one-off problems, I generally define my ode as an anonymous function like dydt=#(t,y) .... If I am working on a bigger project I will write a function for the derivative.

Generate a random variable with an exponential distribution [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
In Matlab using the rand routine, how should I write the code to generate 500 samples from an exponential distribution, whose pdf is:
(1/mu)*exp(-x/mu); x>=0
Assuming you really have to do it using the rand function: exploit the property that the minus logarithm of a normalized uniform RV is a normalized exponential RV:
samples = -mu*log(rand(1,500));
Use random function.
For example to create a 4*6 matrix with mu=1.3 with an exponential distribution use:
random('Exponential',1.3,4,6)
or
random('exp',1.3,4,6)
If you have the Statistic toolbox you can simply use exprnd much like you use rand:
r = exprnd(mu);
where the size of r will be the size of the mean, mu, or
r = exprnd(mu,m,n);
where mu is a scalar mean, and m and n are the size of your desired output. If you type edit exprnd, you'll see that the code is virtually identical to that kindly provided by #LuisMendo. You might find the other functions related to the exponential distribution helpful to, such as exppdf and expcdf. These are simple as well and implement basic equation that you can find in your textbook or on Wikipedia.

Matrix equations in Matlab [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question appears to be off-topic because it lacks sufficient information to diagnose the problem. Describe your problem in more detail or include a minimal example in the question itself.
Closed 8 years ago.
Improve this question
I am doing an introduction course in MATLAB (I am a beginner) and I'm having trouble solving an issue regarding an equation of matrices.
The equation is
AX = C - BX
I want to solve for the matrix X. No matter how I have tried to solve it I come up either empty handed or with some sort of a syntax error. I think I am missing something fundamental.
Any help on the subject is very much appreciated.
For this equation to be consistent, A and B must have the same size. Therefore, you can re-write your equation as:
(A+B)X = C
This can be solved in MATLAB with:
X = (A+B)\C
Note that this will always find a solution, regardless of the size of A+B:
If A+B is square, you'll find "the" solution.
if A+B is over/underdetermined, it will return a least-squares approximation to X.
It's up to you to decide whether this is desirable or not.
In case C is zero, you might want to use null (or look at svd).

generate eigen images of an image matlab [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions concerning problems with code you've written must describe the specific problem — and include valid code to reproduce it — in the question itself. See SSCCE.org for guidance.
Closed 9 years ago.
Improve this question
I am new to image processing and am trying to learn few concepts by practically implementing certain functions. I heard about creating eigen images of an image, so tried to implement the same, to actually know what they are and what properties they alter.
Thus I obtained the eigen vectors using the eig function in matlab. How can I display these eigen images using the vector? Please forgive me if the question is wrong or rudimentary. Your help is much appreciated.
Assuming you have several images of size r x c, then taken the steps described on wikipedia, you should now have eigenvectors ev1, ev2 ... of length r x c.
If this is the case, it should be fairly easy to turn these into images again:
myImage1 = reshape(ev1,r,c);
Check whether r and c are in the right order and whether you need to transpose, but this is basically it.
For showing them you may want to look into surf or image.