2016-11-05 2 views
0
J = 0.05; 
B = 0.02; 
Tload[t_] := 0.0; 
R1 = 2; 
\[Alpha] = 30*\[Pi]/180; 
d = 0.05; 
g = 0.001; 
Nturns = 200; 
\[Mu]0 = 4*\[Pi]*10^(-7); 
r = 0.03; 
lm = 0.02; 
d = 0.1; 
W = Sqrt[2*r^2 - 2*r^2*Cos[2*a]]; 
Rgmax = g/(\[Mu]0*r*d); 
Rm = lm/(\[Mu]0*W*d); 
square[x_, x1_, x2_] := UnitStep[x - x1]*(1 - UnitStep[x - x2]) 
Rg[\[Theta]_] := 
Rgmax/((2 \[Alpha] - Mod[\[Theta][t], \[Pi]])* 
    square[Mod[\[Theta][t], \[Pi]], -2 \[Alpha], 
     2 \[Alpha]] + (2 \[Alpha] - Mod[-\[Theta][t], \[Pi]])* 
    square[Mod[-\[Theta][t], \[Pi]], -2 \[Alpha], 2 \[Alpha]]) 
L[\[Theta]_] := 
Nturns^2/(
    2*Rg[\[Theta]] + 
    Rm) *(square[Mod[\[Theta][t], \[Pi]], -2 \[Alpha], 2 \[Alpha]] + 
    square[Mod[-\[Theta][t], \[Pi]], -2 \[Alpha], 2 \[Alpha]]) 
Plot[L[\[Theta]], {\[Theta][t], -8 \[Alpha], 8 \[Alpha]}, 
PlotRange -> All] 

Je suis désolé mais je ne pouvais pas coller comme mathematica peut montrer (débutant ici). Cependant, j'ai essayé plusieurs solutions pour se débarrasser de l'expression 1/0 inf de L [thêta] mais je ne l'ai pas compris.Mathematica 1/0 Expression infinie lors du traçage

Veuillez le copier et le coller sur un ordinateur portable et l'exécuter.

Je multiplie L [thêta] avec ma fonction carrée pour que les zones non définies soient égales à zéro (f.e 2a, Pi-2a devrait être égal à zéro) mais cela n'a pas fonctionné.

Comment puis-je identifier cette fonction correctement?

Merci d'avance.

+0

Vous avez zéro dénominateur dans votre Rg []. Rg [\\ [Thêta] _]: = (denom = (2 \\ [Alpha] - Mod [\\ [Thêta], \\ [Pi]]) * carré [Mod [\\ [Thêta], \ \ [Pi]], -2 \\ [Alpha], 2 \\ [Alpha]] + (2 \\ [Alpha] - Mod [- \\ [Thêta], \\ [Pi]]) * carré [Mod [- \\ [Theta], \\ [Pi]], -2 \\ [Alpha], 2 \\ [Alpha]]); Si [denom == 0, Imprimer ["Zero denom"]; 1, denom ]); J'ai également changé votre \\ [Theta] [t] en \\ [Theta] partout dans votre code pour être plus normal. – Bill

+0

Theta [t] est une variable qui va mettre dans les équations différentielles à résoudre avec la fonction NDSolve, à ce stade, peu importe que cela dépende ou non. Cependant, Rg [thêta] a zéro dedans, je sais que ça devrait l'être aussi. S'il vous plaît essayez de tracer 1/Rg [thêta] il n'y a pas d'expressions 1/0. Si vous essayez de résoudre ou de tracer 1/(Rg [theta] + Rm qui est également dans la définition de L [thêta], il donne des intervalles 1/0 indéfinis :( –

+0

qu'est-ce que «a'? à 'alpha' et manqué un .. vous pourriez utiliser' UnitBox' d'ailleurs, mais je ne pense pas que cela se rapporte à votre erreur – agentp

Répondre

2

Ceci?

J=0.05; B=0.02; Tload[t_]:=0.0; R1=2; \[Alpha]=30*\[Pi]/180; d=0.05; 
g=0.001; Nturns=200; \[Mu]0=4*\[Pi]*10^-7; r=0.03; lm=0.02; d=0.1; 
W=Sqrt[2*r^2-2*r^2*Cos[2*\[Alpha]]]; Rgmax=g/(\[Mu]0*r*d); Rm=lm/(\[Mu]0*W*d); 
square[x_, x1_, x2_]:=UnitStep[x-x1]*(1-UnitStep[x-x2]); 
Rg[\[Theta]_]:=Rgmax/((2 \[Alpha]-Mod[\[Theta],\[Pi]])*square[Mod[\[Theta], 
    \[Pi]],-2 \[Alpha], 2 \[Alpha]] +(2 \[Alpha]-Mod[-\[Theta],\[Pi]])* 
    square[Mod[-\[Theta],\[Pi]],-2 \[Alpha], 2 \[Alpha]]); 
L[\[Theta]_] := Nturns^2/(2*Rg[\[Theta]]+Rm)*(square[Mod[\[Theta],\[Pi]], 
    -2 \[Alpha],2 \[Alpha]]+square[Mod[-\[Theta],\[Pi]],-2 \[Alpha], 2 \[Alpha]]); 

Plot[L[\[Theta]], {\[Theta],-8 \[Alpha],8 \[Alpha]}, PlotRange->All, PlotPoints->200] 

Tout ce que je ne faisais réparer votre un contre Alpha et votre Theta [t] contre Theta confusion.

Thêta est une variable et Theta [t] est une fonction. Il y a une explication compliquée de ceci, mais ce ne sont pas nécessairement la même chose et peuvent signifier des choses très différentes pour Mathematica. Plus vous vous éloignerez de la manière très conventionnelle de faire les choses dans Mathematica, plus vous risquez de tomber dans des trous de confusion sans aucun moyen de comprendre pourquoi il ne fait pas ce que vous attendez de lui.