2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Вопрос по MatLab
Сообщение16.09.2007, 12:53 
Аватара пользователя


16/09/07
21
Недавно установил себе MatLab Version 7.2.0.232(R2006a)
Прочитал по нему самоучитель, но не могу распутать одну пролему..
Пишу в M-файле:
x = [0.1:0.02:0.14];
m = sign(x-0.12)
q = x(2)-0.12

В x должно храниться три числа: 0.1, 0.12 и 0.14
Согласно работе функции sign в m дложны быть числа: -1, 0 и 1
НО!!!
m =

-1 1 1


q =

1.387778780781446e-017
Причем, если написать
x = [0.08:0.02:0.14];
m = sign(x-0.1)
то как и должно быть
m =

-1 0 1 1
Для меня это просто как глюк программы..
В чем тут дело? И как это дело исправить??

 Профиль  
                  
 
 Re: Вопрос по MatLab
Сообщение16.09.2007, 18:00 
Заслуженный участник


15/05/05
3445
USA
Это не глюк, а фича. :) Сравнение вещественных чисел может давать такого рода неустойчивость алгоритма.
Введите точность сравнения, скажем
eps = 1.0e-15
Далее, если abs(x(i)-0.12) < eps , то m(i) =0, иначе m(i) = sign(x(i)-0.12)

 Профиль  
                  
 
 
Сообщение16.09.2007, 19:57 
Аватара пользователя


16/09/07
21
Спасибо большое!
А чего здесь 'больше', неустоичивости алгоритма или неидеальности MATLAB'а?
И разъясните, если не трудно, что такое фича?

 Профиль  
                  
 
 
Сообщение17.09.2007, 11:42 
Экс-модератор
Аватара пользователя


23/12/05
12064
Ошибка возникает на этапе x(2)=x(1)+0.02. Проблема в конечной вычислительной точности

Немножко оффтопика
А фича - это от feature, дословно даже не знаю как передать - некая особая черта, характерная особенность, но в отличие от бага позитивного характера.

Пример, поясняющий, что такое фича:
1й> прикинь, у меня в прачечной висит аппарат для размена долларов на квотеры …. Так вот если в него просто засунуть доллар, то он выдает 4x25с, а если его сложить пополам … то пока он его расправляет, то прогоняет 2 раза и выдает уже 8 монет 25с, как ты думаешь эта софтовая бага?
2й> если это писали РУССКИЕ программисты то это ФИЧА…, а если укуреные индусы, то тогда БАГА

 Профиль  
                  
 
 
Сообщение17.09.2007, 11:52 
Аватара пользователя


16/09/07
21
:) Спасибо!

 Профиль  
                  
 
 
Сообщение19.09.2007, 11:56 


07/08/07
97
Ну, вообще-то переводится это слово как "свойство, особенность".
В жаргоне - "это не ошибка, так и было задумано" :)

 Профиль  
                  
 
 
Сообщение19.09.2007, 12:07 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
А бывает еще "это получилось случайно, но оказалось полезно".

 Профиль  
                  
 
 
Сообщение20.09.2007, 18:17 
Заслуженный участник


15/05/05
3445
USA
PAV писал(а):
А бывает еще "это получилось случайно, но оказалось полезно".
Или "...но лень исправлять". Где-то на форуме была такая фраза: "...а что пользователю нужно, ему объяснит отдел рекламы".

Kirill.Netreba писал(а):
А чего здесь 'больше', неустоичивости алгоритма или неидеальности MATLAB'а?
Это - проявление неидеальности цифрового компьютера при работе с вещественными числами (double, float, real, single). Их сравнение всегда потенциально неустойчиво. При реализации численных алгоритмов это нужно учитывать.

 Профиль  
                  
 
 
Сообщение22.09.2007, 09:39 


15/11/05
46
Томск
извиняюсь, что как бы не совсем в "струю"....но такой вопрос...

в ранних версиях MatLab было возможно решение разреженных СЛАУ методами BiCG, BiCGStab,QMR и др., так называемыми, крыловскими методами.... но не было возможности их применения для СЛАУ с плотной матрицей

так вот вопрос в новых версиях появилась ли возможность применения этих методов для решения СЛАУ с плотной матрицей??

 Профиль  
                  
 
 
Сообщение28.09.2007, 16:29 


10/11/06
64
Цитата:
в ранних версиях MatLab было возможно решение разреженных СЛАУ методами BiCG, BiCGStab,QMR и др., так называемыми, крыловскими методами.... но не было возможности их применения для СЛАУ с плотной матрицей

так вот вопрос в новых версиях появилась ли возможность применения этих методов для решения СЛАУ с плотной матрицей??


По крайней мере в 7-й версии можно

 Профиль  
                  
 
 
Сообщение01.10.2007, 04:14 


15/11/05
46
Томск
K-3 писал(а):
Цитата:
в ранних версиях MatLab было возможно решение разреженных СЛАУ методами BiCG, BiCGStab,QMR и др., так называемыми, крыловскими методами.... но не было возможности их применения для СЛАУ с плотной матрицей

так вот вопрос в новых версиях появилась ли возможность применения этих методов для решения СЛАУ с плотной матрицей??


По крайней мере в 7-й версии можно


пришли пример, как использовать..(если можно руководство пользования)

 Профиль  
                  
 
 Re: Вопрос по MatLab
Сообщение05.10.2007, 04:53 


05/10/07
2
Matlab 7 - Г Matlab 6.5 рулит!! советую

 Профиль  
                  
 
 
Сообщение05.10.2007, 05:55 
Аватара пользователя


16/09/07
21
Скажите пожалуйста, есть в Матлабе функция которая определяет наличие одинаковых элементов в матрице? Например, x = [5 6 8 9 6 1 5]. Вызываю эту функцию и она мне возвращает 0 или 1 (true or false) в зависимости от наличия одинак. элементов. Хотя б там несколько одинаковых пар или только одна, не важно.

 Профиль  
                  
 
 
Сообщение06.10.2007, 17:17 


10/11/06
64
Цитата:
пришли пример, как использовать..(если можно руководство пользования)


Например,

Код:
A = [1, 3; 3, 1];
b = [4; 4];
bicg(A, b)



Можно указать допуск tol:
Код:
bicg(A, b, tol)

итерации останавливаются, как только $\|Ax-b\|_2/\|b\|_2$ не станет меньше tol

(Пишу по памяти: MATLAB'а нет под рукой)

Есть и другие опции

 Профиль  
                  
 
 
Сообщение06.10.2007, 17:34 
Экс-модератор
Аватара пользователя


23/12/05
12064
K-3, ну эт Вы дали :)

Я бы решал так. Пусть дана матрица a, и надо определить наличие в ней одинаковых элементов. Тогда, если я нигде не ошибся, этот код должен выдавать единицу при наличии и 0 при отсутствии таких элементов:
Код:
b=sort(reshape(a,1,prod(size(a))));
~prod(b(1:end-1)-b(2:end))

Ну и, если больше не нужно, то
Код:
clear b

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3  След.

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



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

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


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

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