Перейти к содержанию
    

Chemtechnik

Новичок*
  • Постов

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Логарифм

    А вот для десятичного логарифма и к тому-же работаяющая гораздо быстрее. Для достаточно больших x, требуеся достаточно большая длина ряда. В нижеприведенной функции x преобразуется к виду 1<x<10, а далее вычисляется десятичный логарифм. Точность L= 10^(-6), если нужна большая - увеличьте длину ряда m исходя из соотношения : (9/11)^(2*m-1) < L/(100*(2*m-1)) В данном случае L=10^(-6) т.е. m=36 double log10_x (double ); double log10_x (double x){ int m= 36; // m-длина ряда, целое число double a,b,c,d,e,f,g,i,j; if (x==1) return 0; a=x; i=1; if (x<1){ a=1/x; i=-1; } j=0; while (a>10){ a/=10; j++; } if (a==10){ j++; return i*j; } b=(a-1)/(a+1); с=b*b; d=1/b; f=0; e=-1; while (m>0){ d*=c; e+=2; g=d/e; f+=g; m--; } f*=2; f*=0.43429448; // для точности 10^(-6) // округлите 1/ln(10) до 7-го знака, для 10^(-7) до 8-го и т.д.. f+=j; f*=i; return f; }
  2. Логарифм

    Вообще-то используя строку : #include <math.h> кроме логарифмической функции попадает куча ненужной информации, что приводит к быстрому расходу памяти в микроконтроллере, оссобенно в tiny и classic. Предлагаю использовать примерно такую функцию для всех x>0 ( вместо log (x) log_x (x), а вместо log10 (x) log10_x (x) ): double log_x (double ); double log_x (double x){ int m= ; /* (m-длина ряда, целое число) присвойте m значение , чем больше длина ряда, тем точнее значение логарифма, но тем дольше идет его расчет */ double b,c,d,e,f; b=(x-1)/(x+1); с=b*b; d=1/b; f=0; e=-1; while (m>0){ d*=c; e+=2; f+=(d/e); m--; } f*=2; return f; } А для вычисления десятичного логарифма важно помнить след. соотношение: lg (x) = ln (x) / ln (10 ) , а точнее это будет выглядеть так : log10_x (x) = log_x (x)/log_x (10);
  3. Посоветуйте-ка хороший учебник по программированию микроконтроллеров AVR на С . Мне очень понравились возможности именно Atmel - овского микроконтроллера. Встречается литература на asm , либо данные книги не являются учебниками. ( Например книга : "Микроконтроллеры AVR : от простого к сложному "( Голубцов М.С., Кириченкова А.В.)- не являются учебниками.) Нужен именно учебник для старта с описанием схем, использования АЦП и ЦАП, с практическими примерами, и именно на C. Проблем с Си нет. Да, и где можно обучиться этому. Возможно дистанционное обучение. Заранее благодарен.
×
×
  • Создать...