2014 dxdy logo

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

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




На страницу 1, 2, 3  След.
 
 Вопрос по MatLab
Сообщение16.09.2007, 12:53 
Аватара пользователя
Недавно установил себе 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 
Это не глюк, а фича. :) Сравнение вещественных чисел может давать такого рода неустойчивость алгоритма.
Введите точность сравнения, скажем
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 
Аватара пользователя
Спасибо большое!
А чего здесь 'больше', неустоичивости алгоритма или неидеальности MATLAB'а?
И разъясните, если не трудно, что такое фича?

 
 
 
 
Сообщение17.09.2007, 11:42 
Аватара пользователя
Ошибка возникает на этапе x(2)=x(1)+0.02. Проблема в конечной вычислительной точности

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

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

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

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

 
 
 
 
Сообщение19.09.2007, 12:07 
Аватара пользователя
А бывает еще "это получилось случайно, но оказалось полезно".

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

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

 
 
 
 
Сообщение22.09.2007, 09:39 
извиняюсь, что как бы не совсем в "струю"....но такой вопрос...

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

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

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

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


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

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

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


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


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

 
 
 
 Re: Вопрос по MatLab
Сообщение05.10.2007, 04:53 
Matlab 7 - Г Matlab 6.5 рулит!! советую

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

 
 
 
 
Сообщение06.10.2007, 17:17 
Цитата:
пришли пример, как использовать..(если можно руководство пользования)


Например,

Код:
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 
Аватара пользователя
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  След.


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