이 질문을 팔로우합니다.
- 팔로우하는 게시물 피드에서 업데이트를 확인할 수 있습니다.
- 정보 수신 기본 설정에 따라 이메일을 받을 수 있습니다.
How to plot two piecewise functions on same graph?
조회 수: 3 (최근 30일)
이전 댓글 표시
I need to plot the attached functions on same plot. Please help me to write the Matlab code.
Thanks in advance!
답변 (1개)
Walter Roberson
2022년 7월 23일
range = [-2 2];
fplot([f, g] , range)
댓글 수: 17
Amna Habib
2022년 7월 23일
can you please send me full code?
I have tried but it is not running.
x = linspace(0, 1 );
f = @(x) (x<0.5) .* (30.*x) + (x>=0.5).* (70.*x)-20;
g = @(x) (x<0.5).* 30.*(1-x) + (x>=0.5).* 50-(70.*x) ;
figure
plot(x, [f(x); g(x)], 'linewidth', 1.5 )
grid
axis([min(x) max(x) 0 50 ])
xlabel('x ')
ylabel('Function Value ')
legend('f(x)','g(x)', 'Location','best ')
Amna Habib
2022년 7월 23일
The above was some other function. Both are not running.
x = linspace(0, 1 );
f = @(x) (x<0.5) .* (7-3.* 'sqrt'(-2.* ('ln'(2.*x)))) + (x>=0.5).*(7+2.* 'sqrt'(-2.* ('ln'(2-2.*x))));
g = @(x) (x<0.5).* (7-5.* 'sqrt'(-1.* ('ln'(2-2.*x)))) + (x>=0.5).*(7+4.* 'sqrt'(-1.* ('ln'(2.*x))));
figure
plot(x, [f(x); g(x)], 'linewidth', 1.5 )
grid
axis([min(x) max(x) 0 1 ])
xlabel('x ')
ylabel('Function Value ')
legend('f(x)','g(x)', 'Location','best ')
Walter Roberson
2022년 7월 23일
Your question defines symbolic formulas, so you need to use the symbolic toolbox or you need to modify the question.
x = linspace(0, 1 ).';
f = @(x) (x<0.5) .* (30.*x) + (x>=0.5).* (70.*x)-20;
g = @(x) (x<0.5).* 30.*(1-x) + (x>=0.5).* 50-(70.*x) ;
figure
plot(x, [f(x), g(x)], 'linewidth', 1.5 )
Amna Habib
2022년 7월 23일
Can you please search the error in this code?
x = linspace(0, 1 );
f = @(x) (x<0.5) .* (7-3.* 'sqrt'(-2.* ('ln'(2.*x)))) + (x>=0.5).*(7+2.* 'sqrt'(-2.* ('ln'(2-2.*x))));
g = @(x) (x<0.5).* (7-5.* 'sqrt'(-1.* ('ln'(2-2.*x)))) + (x>=0.5).*(7+4.* 'sqrt'(-1.* ('ln'(2.*x))));
figure
plot(x, [f(x); g(x)], 'linewidth', 1.5 )
Walter Roberson
2022년 7월 23일
'ln'(2-2.*x)
if that was valid syntax at all, then it would mean that you want to take the vector of characters ['l' 'n'] and index that vector at the indices calculated by 2-2.*x, getting back a vector of characters.
By the way, matlab uses log() not ln()
Walter Roberson
2022년 7월 23일
In Maple you could in theory use code such as
`sqrt`(x)
Everything inside the back quotes becomes part of an atomic name that can be used as an identifier, and there are ways to code symbols and unicode characters. So you could, for example, create a function named `2π`
Commonly, Maple strips the back quotes out in presentation mode (2d output) and renders the symbols, but there are some cases such as copy and paste in 1d (code) mode where it leaves the back quotes unless the characters involved form a valid identifier.
Amna Habib
2022년 7월 26일
편집: Walter Roberson
2022년 7월 26일
i have corrected this code but I think there is still an error in function 'g'. can you please mention?
here is the code. the the file showing graphical result is attached.
x = linspace(0, 1 );
f = @(x) (x<0.5) .* (7-3.* sqrt(-2.* (log(2.*x)))) + (x>=0.5).*(7+2.* sqrt(-2.* (log(2-(2.*x)))));
g = @(x) (x<0.5).* (7-5.* sqrt(-1.* (log(2-(2.*x))))) + (x>=0.5).*(7+4.* sqrt(-1.* (log(2.*x))));
figure
plot(x, [f(x); g(x)], 'linewidth', 1.5 )
Warning: Imaginary parts of complex X and/or Y arguments ignored.

Amna Habib
2022년 7월 26일
편집: Amna Habib
2022년 7월 26일
x = linspace(0, 1 ).';
f = @(x) (x<0.5) .* (30.*x) + (x>=0.5).* (70.*x)-20 ;
g = @(x) (x<0.5).* 30.*(1-x) + (x>=0.5).* 50-(70.*x ) ;
figure
plot(x, [f(x), g(x)], 'linewidth', 1.5 )

Sorry I have another confusion in this plot too. I didn't found any error but the graph is not correct as compared to the manual plotting. Here is the code and tghe graph file is attached in .png
Thanks in advance!
Walter Roberson
2022년 7월 26일
You should recheck your definition of g, as it is everywhere complex. Consider for example x = 0, then 2-2*x is 2-0, log(2) is positive, -1.*log(2) is negative, sqrt(-log(2)) is complex.
x = linspace(0, 1 );
f = @(x) (x<0.5) .* (7-3.* sqrt(-2.* (log(2.*x)))) + (x>=0.5).*(7+2.* sqrt(-2.* (log(2-(2.*x)))));
g = @(x) (x<0.5).* (7-5.* sqrt(-1.* (log(2-(2.*x))))) + (x>=0.5).*(7+4.* sqrt(-1.* (log(2.*x))));
figure
plot(x, [f(x); g(x)], 'linewidth', 1.5 )
Warning: Imaginary parts of complex X and/or Y arguments ignored.

syms X real
F(X) = piecewise( (X<0.5), (7-3.* sqrt(-2.* (log(2.*X)))), (X>=0.5), (7+2.* sqrt(-2.* (log(2-(2.*X))))), 0)
F(X) =

G(X) = piecewise( (X<0.5), (7-5.* sqrt(-1.* (log(2-(2.*X))))), (X>=0.5), (7+4.* sqrt(-1.* (log(2.*X)))), 0)
G(X) =

limit(F, X, 0)
ans = 
limit(F, X, 1)
ans =
∞
limit(G, X, 0)
ans = 
limit(G, X, 1)
ans = 
Walter Roberson
2022년 7월 26일
x = linspace(0, 1 ).';
f = @(x) (x<0.5) .* (30.*x) + (x>=0.5).* (70.*x)-20 ;
g = @(x) (x<0.5).* 30.*(1-x) + (x>=0.5).* 50-(70.*x ) ;
figure
plot(x, [f(x), g(x)], 'linewidth', 1.5 )

syms X real
F(X) = piecewise((X<0.5), (30.*X), (X>=0.5), (70.*X)-20, 0 )
F(X) =

G(X) = piecewise((X<0.5), 30.*(1-X), (X>=0.5), 50-(70.*X), 0)
G(X) =

fplot([F, G], [0 1])

Amna Habib
2022년 7월 27일
x = linspace(0, 1 ).';
f = @(x) (x<0.5) .* (30.*x) + (x>=0.5).* (70.*x)-20 ;
g = @(x) (x<0.5).* 30.*(1-x) + (x>=0.5).* 50-(70.*x ) ;
figure
plot(x, [f(x), g(x)], 'linewidth', 1.5 )

syms X real
F(X) = piecewise((X<0.5), (30.*X), (X>=0.5), (70.*X)-20, 0 )
F(X) =

G(X) = piecewise((X<0.5), 30.*(1-X), (X>=0.5), 50-(70.*X), 0)
G(X) =

fplot([F, G], [0 1])

Walter Roberson
2022년 7월 27일
Look more closely at your functions
f = @(x) (x<0.5) .* (30.*x) + (x>=0.5).* (70.*x)-20 ;
g = @(x) (x<0.5).* 30.*(1-x) + (x>=0.5).* 50-(70.*x ) ;
Notice that the -20 in f not being multiplied by any condition. Notice that the -70.*x in g is not being multiplied by any condition.
참고 항목
카테고리
Help Center 및 File Exchange에서 Assumptions에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!오류 발생
페이지가 변경되었기 때문에 동작을 완료할 수 없습니다. 업데이트된 상태를 보려면 페이지를 다시 불러오십시오.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
아시아 태평양
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)
