solve nonlinear equation

1 次查看(过去 30 天)
Eman Ahmed Elsayed
Eman Ahmed Elsayed 2011-5-31
I write a method to solve any equation
function [ result ] = get( func )
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
result=solve(func);
end
when I run it on command window,I get an error.
>> f=@(x) 2*x+1
f =
@(x)2*x+1
>> [ result ] = get( f )
??? Error using ==> error
Function is not defined for 'function_handle' inputs.
Error in ==> solve>getEqns at 182
error('symbolic:solve:errmsg1', ...
Error in ==> solve at 67
[eqns,vars] = getEqns(varargin{:});
Error in ==> get at 4
result=solve(func);
so how can I fix the error

回答(3 个)

Oleg Komarov
Oleg Komarov 2011-5-31
You cannot solve a function handle.
You have to convert the anonymous function handle to a string function:
fh = @(x,y) 2*x+1-2*y;
% Convert to string
fs = func2str(fh);
% Extract only function part w/o @(.)
fs = regexprep(fs,'@\([\w,]+\)','');
% Solve
solve(fs)
  4 个评论
Eman Ahmed Elsayed
func2str doesn't work with me
>> f=@(x) 2*x+1
f =
@(x)2*x+1
>> func2str(f)
ans =
@(x)2*x+1
It's return the same equation
Matt Fig
Matt Fig 2011-6-1
Read the rest of the post. FUNC2STR is working just like Oleg showed...

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2011-6-1
solve() only applies to symbolic expressions. If you are going to use symbolic expressions you might as well do so from the start and save the trouble about constructing function handles.
  4 个评论
Walter Roberson
Walter Roberson 2011-6-1
If this is for an assignment, then it would help us to read the assignment question, as then we would not suggest things you cannot use.
Walter Roberson
Walter Roberson 2011-6-1
If the assignment prohibits you from passing around symbolic variables, then why does it permit you to use solve(), the symbolic equation solver?

请先登录,再进行评论。


Eman Ahmed Elsayed
I'm still have the same problem
  1 个评论
Oleg Komarov
Oleg Komarov 2011-6-1
What do you mean you have the same problem? Post the whole code you're using and the error message.

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by