Въведение в Wolfram Mathematica

Основни операции

2+3
3.5-2.8
2*4
10/2
12^3
2x+3x
5!
Sqrt[121]
Sin[Pi]
ArcTan[1]

Скобите в Mathematica

Кръгли скоби

x(x+2)^2
(x+y(1-y))^2

Квадратни скоби - заграждат аргументите на даден оператор

Sqrt[60+4]
ArcSin[Sin[Pi/2]]
Log[E]

Фигурни скоби - заграждат елементите на списък

{1,2,3,4}

Mathematica не може да разбере какво имаме предвид със следните изрази:

[x+y(1-y)]^2  
(* (x+y(1-y))^2 *)

(1,2)
(* {1,2} *)

Sin(Pi)
(* Sin[Pi] *)

Символно и числено пресмятане

Обикновено Mathematica смята символно (и следователно точно), ако не сме указали друго

123/Sqrt[768]
Cos[Pi/12]
Log[2]

Можем да смятаме числено по следния начин:

N[123/Sqrt[768]]
N[Cos[Pi/12]]
N[Log[2]]

или

123./Sqrt[768]
Cos[Pi/12.]
Log[2.0]

Графики

Plot[x^3, {x,0,1}]

ListPlot[{{1,1},{2,2}}]

Дефиниране на функции

p[x_]:=x^2+5
g[x_]=Log[5.0*x];
p[5]
g[1]

p[x_]=D[x^2,x];
Plot[p[x],{x,0,5}]

p[x_]:=D[x^2,x]
Plot[p[x],{x,0,5}] (*не работи тъй като сме сложили : в дефиницията на p[x]*)

Работа със списъци и цикли

list={1,2,3,4};
list[[1]] (*индексацията започва от 1*)

For[i=1,i≤10,i++,
Print[i]
];

Популационна динамика

Дадени са данни за развитие на биологичната популация Paramecium aureia:
({{брой дни, 0, 2, 4, 6, 8, 10, 12, 14}, {бр. Paramecium 
aurelia (в капка), 4, 10, 46, 66, 70, 69, 71, 71}})
Да се приближат данните, като се използва:

моделът на Малтус с коефициент на прираст r=0.55;

(*решение на задачата на Коши 
   u'(t)=r u
u(0)=u0
*)
DSolve[{u'[t]==r*u[t],u[0]==u0},u[t],t]

(*r=0.55; u0=4*)
plot1=ListPlot[{{0,4},{2,10},{4,46},{6,66},{8,70},{10,69},{12,71},{14,71},{16,71}}, PlotStyle->Red];
plot2 = Plot[4*E^(0.55*t),{t,0,16}];
Show[plot1,plot2]

моделът на Верхълст с коефициент на прираст r=0.012.

(*решение на задачата на Коши 
   u'(t)=r u (K-u)
u(0)=u0
*)
DSolve[{u'[t]==r*u[t] * (K-u[t]),u[0]==u0},u[t],t]

(*r=0.012; u0=4; K=71*)

plot3=Plot[(71*4*E^(71*0.012*t))/(71+4*(E^(71*0.012*t)-1)),{t,0,16}, PlotRange->All];
Show[plot3,plot1]

Приближаване на производна на функция

Визуализация

PlotDer[f_,x1_,start_,end_]:=
(
minF = Min[Table[f[x],{x,start,end, 0.1}]]-1;
maxF = Max[Table[f[x],{x,start,end, 0.1}]]+1;
Manipulate[
	Show[
		Plot[{f[x],Limit[(f[x1]-f[y])/(x1-y),y->x2]*(x-x2)+f[x2]},{x,start,end}, PlotRange->{{start, end},{minF,maxF}}],
		Plot[{Limit[(f[x1]-f[y])/(x1-y),y->x1]*(x-x1)+f[x1]},{x,start,end}, PlotRange->{{start, end},{minF,maxF}}, PlotStyle->Black],
		ParametricPlot[{x, If[Abs[f[x1]]>Abs[f[x2]],f[x2],f[x1]]},{x,Min[0,x1,x2], Max[0,x1,x2]},PlotStyle->{Gray, Dashed}],
		ParametricPlot[{x, Max[f[x1],f[x2]]},{x,0, If[f[x1]>f[x2],x1,x2]},PlotStyle->{Gray, Dashed}],
		ParametricPlot[{x1, x},{x,0, f[x1]},PlotStyle->{Gray, Dashed}],
		ParametricPlot[{x2, x},{x,0, f[x2]},PlotStyle->{Gray, Dashed}],
		ListPlot[{{x1,f[x1]}, {x2,f[x2]}},PlotStyle->Orange]
	],{x2,start,end, 0.01}]
)

p[x_]:=Exp[x]
PlotDer[p,1,-2,2]

Да се приближи производната на функцията f(x)=(e^x) в интервала [0,10], като се използват формулите
а) f’(t) ≈((f(t+Δt) - f(t))/(Δt))
б) f’(t) ≈((f(t) - f(t-Δt))/(Δt))
в) f’(t) ≈((f(t+Δt) - f(t-Δt))/(2Δt))
Да се начертаят на една графика производната и нейните приближения при Δt=0.5, Δt=0.001 и Δt=(10^(-15)). Да се пресметнат абсолютните и относителните грешки за формула а), б), в).

(f[x+Δt]-f[x])/Δt

Δt=0.5;
f[x_]=Exp[x];
DerF[x_]=D[f[x],x];
DerFAppr[x_,Δt_]:=(f[x+Δt]-f[x])/Δt
Plot[{DerF[x],  DerFAppr[x,0.5], DerFAppr[x,0.001], DerFAppr[x,10^(-15)]},{x,0,10},PlotLegends->{"exact", "formula (a) with Δt=0.5", "formula (a) with Δt=0.001", "formula (a) with Δt=(10^(-15))"}]