2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 решение уравнений в MatLab
Сообщение13.10.2011, 10:15 


20/04/11
13
Подскажите пожалуйста, как сделать чтобы 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 
Заслуженный участник
Аватара пользователя


11/04/08
2737
Физтех
Чтобы 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 


20/04/11
13
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 


28/10/09
35
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 


20/04/11
13
??? 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 


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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group