Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661

Ошибка при присвоении элементу матрицы вычисленного значения

01.10.2016, 10:41. Показов 767. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
странная ошибка при присвоении элементу матрицы вычисленного значения
все вычисления интеграла происходят нормально (проверено). Но если n>=1000 то при присвоении
верно-вычисленных значений матрице S(1,i) происходит какой-то сбой и элементы становятся равными 0.001
(Если задать n=999 то все нормально);
Если передавать вычисленные значения не в матрицу а просто в переменную
Matlab M
1
X=hw01_int_digit(t,y,'левый');
то все ОК
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function [ output_args ] = Untitled2( input_args )
%основная функция
clc;
a=0.1; b=0.7; eps=1e-6;
n=1000
 
 h=(b-a)/n;
 t=a:h:b;
 y=zeros(1,n+1); 
  for j=1:n+1
     y(j)=hw01_func(t(j));
  end  
  S1=zeros(1,4);
  S1(1,1)=n; S1(1,2)=hw01_int_digit(t,y,'левый');
  S1(1,3)=hw01_int_digit(t,y,'правый');
  S1(1,4)= hw01_int_digit(t,y,'трапеций');
 
 S1
 
 function y= hw01_func(t)
  y= 0.89*t + 0.13* sin(t)-1.16*t^2; 
  
 function f=hw01_int_digit(t,y,s) 
% t -массив времен, y-массив знач, s назв метода интегрирования
 f=0; n=length(t);
switch s
case 'левый'
    for i=1:n-1
        f=f+(t(i+1)-t(i))*y(i);
     end;
case 'правый'
    for i=1:n-1
        f=f+(t(i+1)-t(i))*y(i+1);
     end;
case 'трапеций'
     for i=1:n-1
       f=f+(t(i+1)-t(i))*(y(i)+y(i+1))*0.5;   
     end;
end
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2016, 10:41
Ответы с готовыми решениями:

Ошибка при присвоении значения элементу матрицы
пытаюсь сделать умножение матриц при присвоении значения в строке 19 matrix_B = 3;// (rand() % 4000 + 100) / 100.0; вылетает ошибка, при...

Ошибка при присвоении значения элементу массива в функции
Есть такая вот структура: struct stantsia { string st; int hPrib,mPrib, hOtb,mOtb; }; Есть объявление массива: ...

Ошибка при присвоении значения Range к переменной
Пытаюсь создать массив в котором будут размещены все непустые строки из диапазона А2:102. Sub Price() Dim price_for_Bill As Double ...

3
Модератор
 Аватар для Centurio
1765 / 1610 / 541
Регистрация: 13.09.2015
Сообщений: 5,629
01.10.2016, 11:31
eugrita, пока под рукой матлаба нет, поэтому могу предложить подправленную программу. Результаты же смогу проверить лишь вечером.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
%основная функция
clc;
a=0.1;
b=0.7;
eps=1e-6;
n=1000 
t=linspace(a,b,n);
y=0.89*t+0.13*sin(t)-1.16*t.^2; 
S1=zeros(1,4);
S1(1,1)=n;
S1(1,2)=hw01_int_digit(t,y,'левый');
S1(1,3)=hw01_int_digit(t,y,'правый');
S1(1,4)= hw01_int_digit(t,y,'трапеций');
S1
Функция hw01_func тут не нужна.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function f=hw01_int_digit(T,Y,s) 
% T - массив времени, Y-массив знач, s - назв метода интегрирования
n=length(T);
TT=circshift(T',-1)-T';
switch s
  case 'левый'
    YY=Y(1:end-1);
  case 'правый'
    YY=Y(2:end);
  case 'трапеций'
    YY=(Y'+circshift(Y',-1))'/2;
    YY=YY(1:end-1);
end
f=sum(TT(1:end-1).*YY');
end
Ещё непонятно, зачем вы задаёте eps, раз её нигде не используете?
0
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
01.10.2016, 23:11  [ТС]
Несмотря на новизну для меня предложенного решения.(функции circshif linspace) вынужден настаивать на своем варианте. Так как надо было сделать строго по заданию -
Создать функцию hw01_func возвращающую значения подынтегральной функции f (t):
f (t) = 0,89 t + 0,13 sin(t) - 1.16 t2:
2. Создать функцию hw01_int_digit возвращающую значение интеграла дискретной f (t)
рассчитанное методами левых и правых прямоугольников, трапеций. Входные парамет-ры: вектор времени t, вектор значений подынтегр функции f (t), название метода интегрирования в виде строки. В функции через оператор switch : : : case (выбор построке - названию метода) реализовать вычисление интеграла
-------------------------------------------------------------------------------
Поэтому мне важнее найти причину сваливания уже сделанной (без изменений структуры) программы при n=1000 - что это , может точность вычислений? но по умолчанию без объявления типа matkab считает double
0
Модератор
 Аватар для Centurio
1765 / 1610 / 541
Регистрация: 13.09.2015
Сообщений: 5,629
02.10.2016, 09:31
eugrita, используйте формат long, в формате short отображаются только 4 цифры, а этого не хватает для нужного представления числа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2016, 09:31
Помогаю со студенческими работами здесь

Ошибка при присвоении значения полям записи
uses crt; type e = record who: string; what: integer; end; z=^e; var p: z; begin clrscr; ...

Ошибка при присвоении значения из результата запроса
Доброго времени суток всем. Не уверен, что мой вопрос из этой темы, но всё же... Подскажите, почему возникает эта ошибка в момент...

Ошибка 380 при присвоении значения Combobox
выполняю команду ComboBox1.Value = TextBox1.Text & ":" & Chr(9) & TextBox2.Text & Chr(9) & TextBox3.Text & Chr(9) & TextBox4.Text ...

Ошибка при присвоении значения переменной после блока WITH
Всем привет. Изучаю хранимые процедуры, подскажите плз: create procedure Proc1 @carType varchar(50), @maxPrice int OUTPUT AS ...

Ошибка при присвоении переменной значения ячейки массива
Ошибку error C2106: '=' : left operand must be l-value выдает на строчке: if (mas!=-1 && mas!=-1 && mas = mas) numprotclast = mas; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru