Найдите f (любое значение), например, f (1) или f (2) функции, которую вводит пользователь - PullRequest
0 голосов
/ 05 марта 2011

Основная проблема здесь состоит в том, чтобы оценить пользовательскую функцию в какой-то момент, потому что мы не знаем, будет ли пользователь вводить функцию в домене x или другом домене

Я пробовал это, но это не работает:

function y = f(~)
y = input('Enter you function: ');
end

и вот что я хочу:

>>f
Enter you function: a^2+3*a-3
>>f(1)
ans =
1

Ответы [ 2 ]

3 голосов
/ 05 марта 2011

Другое решение заключается в использовании функциональных дескрипторов:

>> f=@(x) x^2+3*x-3

f = 

    @(x)x^2+3*x-3

>> f(1)

ans =

     1

>> f(2)

ans =

     7
1 голос
/ 05 марта 2011

Это решение практически соответствует точным требованиям вашего вопроса. Я чувствую себя немного странно, используя это, хотя с EVAL. Вы также хотели бы включить в это проверку ошибок.

classdef f < handle

    properties (Access = private)
        functionString = '';
    end

    methods
        function obj = f
            if nargin == 0
                obj.functionString = input('Enter your function: ', 's');
            end
        end

        function value = subsref(obj, a)
            a = a.subs{:};
            value = eval(obj.functionString);
        end

        function display(obj)

        end
    end

end

Затем вы можете использовать этот класс как:

>> a = f
Enter your function: a^2+3*a-3
>> a(1)

ans =

     1

>> a(2)

ans =

     7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...