Substituting an expression not giving intended result
조회 수: 3 (최근 30일)
이전 댓글 표시
I'm trying to simplify the following expression using the subs function. In the code below, I was expecting Asubs = 3*Phi. Any ideas on what might be wrong in my code?
clear all;
clc;
syms phi(c,cbar,sigma) Phi(c,cbar,sigma) A(csol,cbar,sigma)
assumeAlso(sigma,'real')
assumeAlso(sigma>0)
phi(c,cbar,sigma)= (1/sqrt(2*sym(pi)*sigma^2))*exp(-(c-cbar)^2/(2*sigma^2))
A(csol,cbar,sigma)=3*int(phi(c,cbar,sigma),c,-inf,csol)
Phi(csol,cbar,sigma) = 1/2 + 1/2*erf(sqrt(2)*(csol-cbar)/(2*sigma))
%Phi(x,sigma) = 1/2 + 1/2*erf(sqrt(2)*(x)/(2*sigma))
Asubs = subs(A,Phi)
댓글 수: 0
채택된 답변
Star Strider
2019년 1월 7일
Since ‘Phi’ does not appear as such specifically in ‘A’, the substitution will fail.
Perhaps this is closer to what you want:
As = simplify(A/Phi)
prodcing:
As(csol, cbar, sigma) =
3
댓글 수: 2
Star Strider
2019년 1월 7일
I am still at a loss to understand what you are doing.
I would not use the Symbolic Math Toolbox for such calculations. It is primarily designed for derivations and other such. Use the matlabFunction (link) function to create anonymous functions from your symbolic functions. Then use them in your calculations.
추가 답변 (1개)
madhan ravi
2019년 1월 7일
syms c cbar sigma Phi A csol
assumeAlso(sigma,'real')
assumeAlso(sigma>0)
phi(c,cbar,sigma)= (1/sqrt(2*sym(pi)*sigma^2))*exp(-(c-cbar)^2/(2*sigma^2))
A(csol,cbar,sigma)=3*int(phi(c,cbar,sigma),c,-inf,csol)
Phi(csol,cbar,sigma) = 1/2 + 1/2*erf(sqrt(2)*(csol-cbar)/(2*sigma))
%Phi(x,sigma) = 1/2 + 1/2*erf(sqrt(2)*(x)/(2*sigma))
Asubs = vpa(subs(A,Phi)) % cbar csol and sigma values are not known
댓글 수: 2
참고 항목
카테고리
Help Center 및 File Exchange에서 Assumptions에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!