ضمن عرض سلام به دوستان
من یک تابع میخوام توسط دستور fsolve حل کننم، ولی به دلیل طولانی بودن تابع ورودی و عدم امکان تابپ، مجبور شدم به صورت رشته تابع بسازم، به این شکل یک ام فایل دارم:
[code=matlab]
function F = matrix(v)
M=[];
for d=1:9
A=sprintf('3*v(%d)-v(%d+1)- 3;',d,d);
M=vertcat(M,A);
end
B=sprintf('2*v(%d)-v(%d+1)-10;',d,d);
M=vertcat(M,B);
F=[M];
end
[/code]
( البته d تا 200 قراره بره، چون اجراش خیلی طولانی میشد، اینجا خلاصه نوشتم)
F تابع منه که قراره حل بشه و حالا از نوع string هست.
( یه دستگاه معادلات 200 متغیره و 200 مجهول است که میخوام با دستور fsolve حل کنم. )
حالا مشکل من اینجاست وقتی برای اجرا در Command Window تابع فراخوانی میکنم
[code=matlab]
[x,fval] = fsolve(@matrix,ّF0) % Call solver
[/code]
به دلیل string بودن F اجرا نمیشه.
چجوری باید این تبدیل انجام بدم؟
از سیمبول هم نمیشه استفاده کرد، چون v(1) v(2) v(3) و .... دارم.
واقعا ممنون میشم کمکم کنید. خیلی مهمه برام
من یک تابع میخوام توسط دستور fsolve حل کننم، ولی به دلیل طولانی بودن تابع ورودی و عدم امکان تابپ، مجبور شدم به صورت رشته تابع بسازم، به این شکل یک ام فایل دارم:
[code=matlab]
function F = matrix(v)
M=[];
for d=1:9
A=sprintf('3*v(%d)-v(%d+1)- 3;',d,d);
M=vertcat(M,A);
end
B=sprintf('2*v(%d)-v(%d+1)-10;',d,d);
M=vertcat(M,B);
F=[M];
end
[/code]
( البته d تا 200 قراره بره، چون اجراش خیلی طولانی میشد، اینجا خلاصه نوشتم)
F تابع منه که قراره حل بشه و حالا از نوع string هست.
( یه دستگاه معادلات 200 متغیره و 200 مجهول است که میخوام با دستور fsolve حل کنم. )
حالا مشکل من اینجاست وقتی برای اجرا در Command Window تابع فراخوانی میکنم
[code=matlab]
[x,fval] = fsolve(@matrix,ّF0) % Call solver
[/code]
به دلیل string بودن F اجرا نمیشه.
چجوری باید این تبدیل انجام بدم؟
از سیمبول هم نمیشه استفاده کرد، چون v(1) v(2) v(3) و .... دارم.
واقعا ممنون میشم کمکم کنید. خیلی مهمه برام
دیدگاه