2014 dxdy logo

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

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




 
 Как сделать, чтобы Matlab округлял число?
Сообщение04.02.2011, 11:32 
Есть такой код:

Код:
for i=1:3
firstDerVec=FirstDerivativeMultivarNumerical(func1,varsVector,curIterValues)
HessianNumericalTemp=HessianNumerical(func1,varsVector,curIterValues)

prod=HessianNumericalTemp\(firstDerVec')

curIterValues=curIterValues-(prod)';
end

answer=curIterValues;



firstDerVec вычисляет частные производные для все переменных, и подставляет
потом туда значения переменных, которые он получил в curIterValues.

HessianNumerical создает Матрицу вторых производных функции func1, с переменными, которые указаны в varsVector, и потом подставляет значения из
curIterValues.

В prod записывается (HessianNumericalTemp)^-1*firstDerVec.
Почему-то prod получает значения в виде a/b где a и b это целые,
а очень желательно, чтобы это было сохранение в виде double, даже с какой-то ошибкой т.к. уже после 2 итераций с числами, представленными в виде a/b ,
это начинает занимать очень много ресурсов компьютера, т.к. числа становятся очень большими ( a и b около 100 знаков).

Пример работы функции:
firstDerVec =[ 17199 18445]

HessianNumericalTemp =[ 3430, 7364; 7364, 5260]

prod =[440/351 646807/369252]

а нужно, чтобы был double, а не частное двух целых чисел.

Как можно сделать, чтобы prod сделать double?

Заранее благодарю.

 
 
 
 Re: Как сделать, чтобы Matlab округлял число?
Сообщение04.02.2011, 13:17 
Аватара пользователя
Например так:
Код:
prod = double(prod)


Еще для округления можно воспользоваться функцией vpa (но в тип double он не преобразует):

Код:
prod = vpa(prod,<Количество знаков>)

 
 
 
 Re: Как сделать, чтобы Matlab округлял число?
Сообщение04.02.2011, 19:20 
Работает, большое спасибо.

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


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