С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Matlab
Войти
Регистрация
Восстановить пароль
 
Igor
4629 / 3384 / 357
Регистрация: 11.11.2010
Сообщений: 6,192
Записей в блоге: 2
07.11.2017, 13:05  [ТС] 1
Добрый день!
Мало сталкивался с символьными вычислениями. Что я делаю не так? Хочу проинтегрировать из функции.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clear, clc
syms t s fi cj
global j fi;
 
%x(t)=ln(1+t);
n=4;
a=-1;
b=1;
 
s=0;
for j=1:n 
%[cj]=fsk0(t,j) // если раскомментить, то выдает то что нужно
cj=quad('fsk0', a, b); % а здесь ошибка 
s=s+cj*fi;
end
s
%hold on;
%grid on;
%p=linspace(a,b);
%S=subs(sk0,t,p);
%plot(p,log(1+p),p,S,'r--');
Matlab M
1
2
3
4
5
6
7
function [cj] = fsk0(t,j)
syms t p fi cj
global j;
p=((t.^2-1)^(j-1))/(factorial(j-1)*2^(j-1));
fi=sqrt((2*(j-1)+1)/2)*diff(p,'t',j-1);
cj=fi*log(1+t);
end
Добавлено через 2 часа 17 минут
А если так, то все нормально вроде:
Matlab M
1
2
3
4
5
for j=1:n 
[fi cj]=fsk0(t,j);
cj=quad('[cj]', a, b);
s=s+cj*fi
end
Добавлено через 14 часов 8 минут
Все равно ерунда - аппроксимация плохая получается. Точнее ее нет.

Добавлено через 5 минут
Полиномы Лежандра вроде правильно считаются, нормировка есть, а результат неадекватный...
0
SSC
Эксперт по математике/физике
2709 / 1434 / 420
Регистрация: 09.04.2015
Сообщений: 3,946
07.11.2017, 15:12 2
Igor, а почему Вы используете для интегрирования функцию quad численного интегрирования (стр 3 последнего блока), а потом с этим результатом проводите символьные вычисления (стр 4 последнего блока) ?
А ведь есть функция символьного интегрирования int.
PS Может я что-то не то пишу, задача мне не понятна, а код тестово тоже запустить не могу, тк Вы приводите промежуточные куски, не приводя вариант последней версии целиком.
0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru