Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 решение уравнений в MatLab
Подскажите пожалуйста, как сделать чтобы MatLab решал уравнения типа


function[]=f(a1,a2)

mu=0.5;
b=a2/a1;

xx=solve('x^3+mu*x^2+b*x+mu^2=0');


Проблема в том, что он не считает mu и b числами, хотя к моменту выполнения они уже известны

 Re: решение уравнений в MatLab
Аватара пользователя
Чтобы solve использовал конкретные значения параметров, делают так:
Код:
xx=solve('x^3+mu*x^2+b*x+mu^2=0','mu = 4','b = 1');


Но параметры подаются извне, а в solve надо вводить их как строки. Значит надо преобразовать (например, с помощью функции num2str) их в строку и отправить в solve. Вот так:

Код:
function [] = f(a1,a2)

mu = 0.5;
b = a2/a1;

strmu = num2str(mu);
strb = num2str(b);

xx=solve('x^3+mu*x^2+b*x+mu^2=0',['mu = ',strmu],['b = ',strb]);
x = double(xx.x); %искомое решение, здесь происходит преобразование в тип double из sym

end

 Re: решение уравнений в MatLab
Warning: usage: [bnds,rowd,sens,rowp,rowg] =
mu(matin,blk,opt)
> In mu at 45
In cycle at 83
Error in ==> mu at 44
if nargin < 1 | nargin > 4

??? Output argument "bnds" (and maybe others) not
assigned during call to "C:\Program
Files\MATLAB\R2008a\toolbox\robust\rctobsolete\mutools\commands\mu.m
(mu)".


Вот что он выдал :(

-- Чт окт 13, 2011 15:03:33 --

и еще вопрос: как таким образом использовать комплексные коэффициенты? так не получается

 Re: решение уравнений в MatLab
voita в сообщении #492104 писал(а):
Warning: usage: [bnds,rowd,sens,rowp,rowg] =
mu(matin,blk,opt)
> In mu at 45

Не приписали значение для mu

voita в сообщении #492104 писал(а):
и еще вопрос: как таким образом использовать комплексные коэффициенты? так не получается

Как так?
1+j*2, или 1+i*2, или на карйняк так 1+sqrt(-1)*2
И не забывать при этом, что обе константы для мнимо единицы можно перепрописать.

 Re: решение уравнений в MatLab
??? Error using ==> solve at 77
' b = 0+1i ' is not a valid expression or equation.

Error in ==> equation at 9
xx=solve('x^3+mu*x^2+b*x+mu^2=0',['mu = ',strmu],['b =
',strb])

Выдало так при вызове функции для a1=1, a2=i

 Re: решение уравнений в MatLab
Символьные вычисления не воспринимают вот эти вот 1i
Нужно явно писать комплексные числа через умножение.
В данном случае
strb = [num2str(real(b)) '+i*' num2str(imag(b))]

 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group