How can i plot this graph?

12 vues (au cours des 30 derniers jours)
ak
ak le 3 Déc 2019
Commenté : ak le 3 Déc 2019
I am trying to plot the graphs of y=-x mod 1 and y=-0.5*cos(2*pi*-x) mod 1. There are two issues here, for some reason there are points for eg x=0.25 where the y value should be 1 but instead theres a line between 0.25 to the next x value. Secondly MATLAB is plotting and straight line on x=0 for the line y=-x mod 1 which doesnt make sense. any help would be appreciated.
clear
clc
clf
syms x y
f1 = y == mod(-0.5*cos(2*pi*-x),1);
f2 = y == mod(-x,1);
%f3 = y == mod(-0.5*cos(2*pi*(-y)),1);
p1 = fimplicit(f1,[-0.5 1.8 0 1]);
hold on
p2 = fimplicit(f2,[-0.5 1.8 0 1]);
%p3= fimplicit(f3,[-2 2 0 1]);
hold off
fsize=15;
title('Intersection of curves','FontSize',fsize)
xlabel('x(t)','FontSize',fsize)
ylabel('y(t)','FontSize',fsize)
%s=vpasolve(mod(y+0.5*cos(2*pi*y),1),mod(x+y,1),[1.7,0.5]);
%s.x
%s.y
% End of Program 05a.

Réponse acceptée

Walter Roberson
Walter Roberson le 3 Déc 2019
symbolic mod() does not mean what you think it means. When you pass an expression, it takes the mod of each subexpression, leaving any variables untouched, and drops the mod. For example, mod(5*x,3) is 2*x and not mod(2*x,3)
You have to replace your mod() operations with remainder operations such as
mod(A,B) --> A - floor(A/B)*B
(You might need a different expression for negative values of B)
  3 commentaires
Walter Roberson
Walter Roberson le 3 Déc 2019
syms x y
Mod = @(A,B) A - floor(A/B)*B;
f1 = y == Mod(-0.5*cos(2*pi*-x),1);
f2 = y == Mod(-x,1);
%f3 = y == mod(-0.5*cos(2*pi*(-y)),1);
p1 = fimplicit(f1,[-0.5 1.8 0 1]);
hold on
p2 = fimplicit(f2,[-0.5 1.8 0 1]);
%p3= fimplicit(f3,[-2 2 0 1]);
hold off
fsize=15;
title('Intersection of curves','FontSize',fsize)
xlabel('x(t)','FontSize',fsize)
ylabel('y(t)','FontSize',fsize)
This does not produce the same graph as before for me.
ak
ak le 3 Déc 2019
Ah, I see what you meant now...
It worked!! Thank you so much. You are an absolute HERO

Connectez-vous pour commenter.

Plus de réponses (1)

Marcel Kreuzberg
Marcel Kreuzberg le 3 Déc 2019
clear
clc
clf
x = -0.5:0.001:1.8;
f2=mod(x,1);
f1=mod(-0.5*cos(2*pi*-x),1);
plot(x,f1,'.');
hold on
plot(x,f2,'.');
hold off
fsize=15;
title('Intersection of curves','FontSize',fsize)
xlabel('x(t)','FontSize',fsize)
ylabel('y(t)','FontSize',fsize)

Catégories

En savoir plus sur Line Plots dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by