I have got a problem here.
I want to use solver within a function I m writing. To give you more details, suppose I want to write a function like:
function [a] = example
a = solve('14 = x^2')
end
Now the problem is how I can key in a variable instead of 14 in that solver. I mean suppose I have a variable been defined before like: d = 14, now I want to write my function as below, but it doesn't work :(
function [a] = example
d = 14
a = solve('d = x^2')
end
Any help?

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 11 Feb. 2012

0 Stimmen

syms x
a = solve(x^2 - d)
Alternately,
d = 14
a = solve(subs(sym('d = x^2'), 'd', d));

4 Kommentare

Kian
Kian am 11 Feb. 2012
Thank you Walter for the answer.
Actually it works as you wrote it. But, I think for the case I have it does not, cause I think I wrote my issue not exactly in such a way it is. I mean you gave me a good answer, but that's just not exactly my case, so I write the equation itself, and I just put it in the shape you told me to do. So,
a = mat2(1,2);
b = mat2(1,3);
r = solve(subs(sym('a=(((1/273)-((0.0001844)*(log(((r*0.001)*b)/(0.611*((r*0.001)+0.622))))))^-1)-273'),'a',a,'b',b));
where mat2 has already been defined. According to what you said, now it should work out. But when I run the program it gives me an error saying:
??? Error using ==> sym.subs
Too many input arguments.
So, I think the problem is with the number of arguments I have in my equation(a & b). I think I didn't explain my issue well in the first place, so sorry for that.
I have got another problem relating to this issue as well.
Later I have a line as:
content = f - r;
where r is the result given by the solver, (f has already been computed), and then I have:
fid = fopen('Result.txt','wt');
fprintf(fid,'Content of the parcel is %5.2f\n',content);
fclose(fid);
Again when I run the program it gives me an error relating to this code line saying:
??? Error using ==> fprintf
Function is not defined for 'sym' inputs.
I would appreciate any help, and sorry for my lengthy question. I think I have now explained everything in detail.
Thanks again.
Walter Roberson
Walter Roberson am 12 Feb. 2012
Do not use subs(expression, var1, value1, var2, value2)
Instead use subs(expression, {var1, var2}, {value1, value2});
Walter Roberson
Walter Roberson am 12 Feb. 2012
If you have a number in symbolic form which does not contain any unresolved symbols, then use double() to convert it to double precision number. Otherwise use char() and print the result as a string.
Kian
Kian am 12 Feb. 2012
Thank you very much Walter. Both of the problems were solved.
Thank you again.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Gefragt:

am 11 Feb. 2012

Bearbeitet:

am 8 Okt. 2013

Community Treasure Hunt

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

Start Hunting!

Translated by