Escolar Documentos
Profissional Documentos
Cultura Documentos
OMaximatemumafunoto_poly_solveparaobtersoluluesdeequaesquebastantepoderosa
> to_poly_solve([3*cos(t)+sin(t)1=0],[t])
4
(%o1) %union ([t = 2 %z11 + ], [t = 2 %z9 atan ( )])
2 3
Assoluessodadasporuniesdelistasdesolues,quepodemdependerdeparametrosinteiros%zNNN,reais%rNNNou
complexos%cNNN.Podemosreindexarestesparmetroscomnicedummies.
> nicedummies(%)
4
(%o2) %union ([t = 2 %z0 + ], [t = 2 %z1 atan ( )])
2 3
>
> float(%)
VejasequalarespostadoMaxima,quandoseusaocomandosolve:
> solve([3*cos(t)+sin(t)1=0],[t])
Maisexemploscomto_poly_solve
> to_poly_solve([x*x1],[x])
> to_poly_solve(x*(x1)=0,x)
to_poly_solve,comoonomeindioca,usaumaalgoritmoquepassapelaconversonaformapolinomialdasequaesque
pretendemosresolver.
Quandoto_poly_solvenocapazdeencontrarsoluesexplicitas,entorespondecom%solve(...)
> to_poly_solve(x^k+2*x+1=0,x)
k
(%o7) %solve ([x + 2 x + 1 = 0], [x])
Porvezes,nestescasosumasubstituionosparmetrosdnossoluesexplicitas
> subst(k=2,%)
Arespostadeto_poly_solvepodetambmincluiroperaeslgicascom`%and',`%or',ou`%if'
> to_poly_solve([a*cos(t)+b*sin(t)1=0],[t])
2
b a 2 + 1 1
2 2
(%o9) %union (%if ((i b a = 0) %or ( b a + 1 1#0) , [t = 2 %z26 i log (
i b a i b
> to_poly_solve(abs(x)=a,x)
(%o10) %union (%if (isnonnegative_p (a) , [x = a], %union ()) , %if (isnonnegative_p (a) , [x = a], %union ()))
> isnonnegative_p(22)isnonnegative_p(22)
(%o11) false
(%o12) true
> to_poly_solve([x^2+2*y^2=1,y=x+1/2],[x,y])
10 2 1 + 2 5 2 + 10 2 5 1
(%o13) %union ([x = ,y = ], [x = ,y = ])
6 6 6 6
> to_poly_solve([x^2+2*y^2=1,y=x^2+1/2],[x,y])
13 3 1 + 13 13 3 1 + 13 13 3
(%o14) %union ([x = ,y = ], [x = ,y = ], [x = ,y =
2 4 2 4 2
> to_poly_solve([x^2+y^2=1,y^2x^2=1/2],[x,y])
1 3 1 3 1 3 1 3
(%o15) %union ([x = ,y = ], [x = ,y = ], [x = ,y = ], [x = ,y = ])
2 2 2 2 2 2 2 2
> to_poly_solve([x^2+y^2=1],[y])
2 2
(%o16) %union ([y = 1 x ], [y = 1 x ])
Aopo'use_grobner=truedeveserusadaparaoscasosemqueoMaximanorespondesatisfatriamente
> to_poly_solve([x^2+y^2=2^2,(x1)^2+(y1)^2=2^2],[x,y])
(%o17) %union ()
> to_poly_solve([x^2+y^2=2^2,(x1)^2+(y1)^2=2^2],[x,y],
'use_grobner=true)
7 1 1 + 7 1 + 7 7 1
(%o18) %union ([x = ,y = ], [x = ,y = ])
2 2 2 2
2Alternativasapoly_solve
Segarantirmosquef(x)=0temumanciasoluorealnointervalo[a,b]Podemosencontraressaraz(umvaloraproximado)com
ocomandofind_root
> find_root(cos(x)x,x,0,1)
(%o19) 0.7390851332151607
Vermaisopesnomenuequation
> solve(x^3x+1=0,x)
1 1
1 1
3i 1 1
23 1
3
1 3 i 23 1
3
3 i 1
2 2 2
(%o20) [x = + ( ) ( ),x = ( ) ( ) +
1 3 3
2 2 2 2 2 2
23
3
2 32 2 32 23
1
3 ( 3
) 3 ( 3
2
23 2 23 2
> float(%)
Para,obtervaloresaproximadosderazesdepolinmios,temos
> realroots(x^3+x1=0)
22895121
(%o22) [x = ]
33554432
Notequeasoluoacimaumvaloraproximadoenoumasoluoracionalexacta
> realroots(cos(x))
> allroots(x^3+x1)
> bfallroots(x^3+x1)
3Clculoderectastangentesacurvas
Retomandooproblemadeencontrararectatangentea(x^2)/4+(y^2)/9=1quepassamdopeloponto(4,4)
> c(t):=[2*cos(t),3*sin(t)]/*parametrizao*/
> define(dc(t),diff(c(t),t))/*derivada*/
> define(n(t),[dc(t)[2],dc(t)[1]])/*vectornormalacemt(nounitrio)*/
> P:[4,4]
(%o29) [4, 4]
> c(t)P/*vectordirectordarectarquepassaporPec(t)*/
> (c(t)P).n(t)/*queremosrtangenteacortogonalan*/
> ratsimp(%)
2 2
(%o32) 6 sin (t) 8 sin (t) + 6 cos (t) 12 cos (t)
> trigsimp(%)
Podemosusarto_poly_solve,paraobterasrazes.
> to_poly_solve(8*sin(t)12*cos(t)+6=0,t)
2 2
9 43 3 343
log (( + ) + ( ) ) 343 3
26 13 13 26
26 13
(%o34) %union [t = 2 %z74 i i atan ], [t = 2
2
43 9
+
13 26
> nicedummies(%)$sol:ratsimp(%)
3 43 6 6 + 3 43
(%o36) %union ([t = 2 %z0 atan ( )], [t = 2 %z1 atan ( ) + ])
2 43 + 9 2 43 9
> %z0:0$%z1:0/*queremosassoluesentre0e2*%pi*/$
> sol:float(''sol)
> sol[1]
> args(sol)
> args(sol)[1]
(%o42) [t = 0.5537238738589942]
rhsrighthandside
> t1:rhs(args(sol)[1][1])
(%o43) 0.5537238738589942
> t2:rhs(args(sol)[2][1])
(%o44) 1.729729080954129
> r1:parametric(P[1]+s*(c(t1)P)[1],P[2]+s*(c(t1)P)[2],s,6,5)
> r2:parametric(P[1]+s*(c(t2)P)[1],P[2]+s*(c(t2)P)[2],s,5,2)
> load(draw)$
set_draw_defaults(
dimensions=[500,300],
proportional_axes=xy,
axis_top=false,axis_bottom=false,
axis_left=false,axis_right=false,
grid=false,
xaxis=true,
xaxis_type=solid,
xaxis_width=1,
xaxis_color=black,
xtics_axis=true,
yaxis=true,
yaxis_width=1,
yaxis_type=solid,
yaxis_color=black,
ytics_axis=true,
line_width=2
)$
> wxdraw2d(
xrange=[3,5],
yrange=[4,5],
parametric(2*cos(t),3*sin(t),t,0,2*%pi),
color=green,
r1,
color=red,
r2,
point_size=2,
point_type=filled_circle,
color=black,
points([P]),
label(["P",4.5,3.5])
)
(%t49)
(%o49)
>
CreatedwithwxMaxima.