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, Супермодераторы



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

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


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

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