2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Разрядная сетка в Matlab!
Сообщение26.03.2008, 00:48 


26/03/08
2
Разбираю классический пример Уилкинсона в Matlab! Требуется изменить разрядную сетку,чтобы вычисления были более точными! Это возможно?

 Профиль  
                  
 
 
Сообщение26.03.2008, 04:34 
Модератор
Аватара пользователя


11/01/06
5702
http://www.mathworks.com/support/soluti ... on=1-1AGHW

 Профиль  
                  
 
 
Сообщение26.03.2008, 23:50 


26/03/08
2
Спасибо за информацию! Но я неуверенный пользователь Matlab! Не понятно, чем отличаются VPA и Digits? Можно ли с помощью Digits изменить разрядную сетку для улучшения точности вычислений?

 Профиль  
                  
 
 
Сообщение28.03.2008, 23:59 


10/11/06
64
Matlab --- это в первую очередь язык для численных расчетов, а не символьных (точных) и вся символьная математика в Matlabe - от Maple'а. Поэтому удобнее пример Уилкинсона рассмотреть используя нативные типы данных: double и single.

Вначале генерируем по известным корням $1,2,\dots,20$ сам многочлен:

Код:
>> f=poly(1:20)

f =

  1.0e+019 *

  Columns 1 through 10

    0.0000   -0.0000    0.0000   -0.0000    0.0000   -0.0000    0.0000   -0.0000    0.0000   -0.0000

  Columns 11 through 20

    0.0001   -0.0010    0.0063   -0.0311    0.1207   -0.3600    0.8038   -1.2871    1.3804   -0.8753

  Column 21

    0.2433


Теперь f содержит коэффициенты многочлена Уилкинсона.
Тип --- double (по умолчанию).

Ищем его корни:
Код:
>> roots(f)

ans =

   20.0003
   18.9981
   18.0065
   16.9875
   16.0139
   14.9920
   13.9996
   13.0046
   11.9963
   11.0012
   10.0001
    8.9997
    8.0001
    7.0000
    6.0000
    5.0000
    4.0000
    3.0000
    2.0000
    1.0000


Получили приемлемый результат.

Теперь используем тип данных single:
Код:
>> roots(single(f))

ans =

  26.0799         
  23.7053 + 6.1759i
  23.7053 - 6.1759i
  18.0389 + 9.5030i
  18.0389 - 9.5030i
  18.8840         
  12.1943 + 9.1001i
  12.1943 - 9.1001i
   8.3585 + 6.7668i
   8.3585 - 6.7668i
   6.2693 + 4.3811i
   6.2693 - 4.3811i
   5.1498 + 2.5574i
   5.1498 - 2.5574i
   4.1587 + 1.3935i
   4.1587 - 1.3935i
   3.1438 + 0.2486i
   3.1438 - 0.2486i
   1.9989         
   1.0000         


Никуда не годится

 Профиль  
                  
 
 
Сообщение09.01.2009, 01:01 


09/01/09
1
Чебоксары
Извините, если не там задаю вопрос.
Я пользуюсь MatLab. Проблема возникла при нахождении корней полинома очень высокого порядка (n=10000). Также при вычислении факториала 10000! MatLab загнулся (выводит Inf - очень большое число).
Всвязи с этим вопрос:
1. возможно ли как-то в MatLab (надстройки, дополнительное обновление, патчи) увеличить разрядность чисел (чтобы можно было подсчитать 10000! )?
2. Какие программы позволяют решать полиномы высокого порядка(например n=10000) с высокой точностью?

Вынесено из темы "Что лучше..." sashkaRus21, выбирайте тему аккуратнее. // maxal

 Профиль  
                  
 
 
Сообщение09.01.2009, 01:25 
Модератор
Аватара пользователя


11/01/06
5702
sashkaRus21
Про задание точности в матлабе - см. ссылку выше в этой теме.

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

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



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

Сейчас этот форум просматривают: Dmitriy40


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

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