MATHLAB->C

Тема в разделе "WASM.HEAP", создана пользователем agent007, 1 мар 2007.

  1. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    Здравствуйте, помогите перевести функцию с матлаба на си...
    Код (Text):
    1. function f=n1yink(u,n,dt,m)
    2. % f=n1yink(u,n,dt,m) - Вычисление определенного интеграла
    3. % по квадратурным формулам Ньютона-Котеса
    4. % u - массив значений интегрируемой функции
    5. % n - число точек в массиве
    6. % dt - шаг интегрирования
    7. % m - число точек на интервале (порядок точности+1)
    8.  
    9. c=[
    10. 1   0   0   0   2
    11. 1   4   0   0   6
    12. 1   3   0   0   8
    13. 7   32  12  0   90
    14. 19  75  50  0   288
    15. 41  216 27  272 840
    16. 751 3577    1323    2989    17280];
    17.  
    18. f=0;f1=0;
    19. if any([n<=1 m<1]) break, end   % невозможно интегрировать
    20. m=min([m n 8]);
    21. m1=m-1;      % порядок точности
    22.  
    23. if m1==0     % специальный случай - формула прямоугольников
    24.  f=sum(u(1:n-1))*dt;
    25.  break
    26. end
    27.              % Коэффициенты квадратурной формулы
    28. d=[c(m1,1:round(m/2)) c(m1,fix(m/2):-1:1)]; % строка коэф-тов
    29. dd=c(m1,5);
    30.  
    31.              % Вычисление интеграла
    32. s=zeros(m,1);        % столбец значений частичных сумм
    33. for i=1:m
    34.  ix=(0:m1:n-m)+i;
    35.  s(i)=sum(u(ix));
    36. end
    37. f=m1*dt/dd*(d*s);
    38.  
    39. n1=n-max(ix);        % число неиспользованных точек
    40. if n1==0 break, end  % нет неиспользованных точек
    41.  
    42. f1=n1yink(u(n-n1:n),n1+1,dt,n1+1);
    43. f=f+f1;
    Заранее очень благодарен!
     
  2. Noble Ghost

    Noble Ghost New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2004
    Сообщения:
    204
    Адрес:
    Russia
    а в матлабе разве нет функции генерации сишного исходника? ;)