2014 dxdy logo

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

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




 
 решение уравнений в MatLab
Сообщение13.10.2011, 10:15 
Подскажите пожалуйста, как сделать чтобы 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
Сообщение13.10.2011, 10:38 
Аватара пользователя
Чтобы 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
Сообщение13.10.2011, 13:15 
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
Сообщение13.10.2011, 16:58 
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
Сообщение13.10.2011, 20:11 
??? 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
Сообщение14.10.2011, 16:31 
Символьные вычисления не воспринимают вот эти вот 1i
Нужно явно писать комплексные числа через умножение.
В данном случае
strb = [num2str(real(b)) '+i*' num2str(imag(b))]

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


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