Mathematica/偏導數/最小二乘法(線性回歸)


 

a = 2/123
a                          //輸出的還是2/123
N[a]                       //輸出的就是小數點
N[a,2]                     //保留三位小數點
Clear[a] 
Solve[2== x^2-7 , x]       //結果-3 和 3
Plot[Sin[x], {x, 0, pi}]
Integrate[1/(1 - x^3), x]
Log[1] = 0
積分中的積分d 一定適用esc dd 打出來的 或者\[DifferentialD]. 

求導:
    f = 1/(1+x)
    D[f,x]           也就是f'(x)
    D[f, {x, 2}]     二階導
ScientificForm[0.0000125] = 1.25 * (10^-5)  //這種是科學計數

微分:
DSolve[{y'[x] - 2*y[x] == 0}, y[x], x]             //不帶初值
DSolve[{y'[x] - 2*y[x] == 0, y[0] == 1}, y[x], x]  //初值微分方程y'-2y=0 y[0]=1

 

繪圖:

1,one dim一元函數

2,畫帶有積分的一元函數要注意:

 

 參數方程:

x=(sin t) ^3

y=(cos t) ^3

 

同時繪制2個參數圖:

 

 

參數圖並且求導:

 

三維參數圖:

r(t ) = (cos t)i + (sin t)j + (sin2t)k

 

 

 

 

 

 

 

z = x^2 + y^2

ContourPlot3D[x^2 + y^2 == z, {x, -3, 3}, {y, -3, 3}, {z, -18, 18}, PlotLabel -> "x^2+y^2=z"] 

 

 

2,:z^2 + x^2 -y^2=1

 

3 二元函數:

二元函數的圖形是三維坐標空間的一個點集. 所以二元函數形式為f(x,y) ,f(x,y)= c ,就是等位線(等高線)方程。

畫 (a)二元函數給定的曲面,(b)並且畫等高線(等位線),(c)並且畫f 給定點的等高線(等位線)

 

 

 

 

 4,三元函數:

三元函數的的圖形是四維空間的一個點集. 所以畫三元函數的一些等高線便於理解三元函數.

例如:f(x,y,z) = 4Ln(x^2 + y^2 + z^2)

可以畫f(x,y,z) = 0 ,f(x,y,z)=1 .... 三維等位面圖形。

 

5,參數化表面:並畫等位線

x = u cosv,   y=u sinv,  z=u , 0<=u <=2,  0<=v<=2Pi

ParametricPlot3D[{u*Cos[v], u Sin[v], u},  {u, 0, 2}, {v, 0, 
  2 Pi}    ]
ParametricPlot[
 Evaluate[Table[{z Cos[v], z Sin[v]}, {z, 0, 2, 1/3}]], {v, 0, 2 Pi}, 
 AspectRatio -> Automatic]

 

 

 

 

 

 

 

偏導數不存在的f(x,y) = sqrt(x^2 + y^2)

 

 

最小二乘法,線性回歸算法。

自己在筆上求了一階偏導數=0時的臨界點。二階偏導數太麻煩,還要判斷Wxx*Fyy - (Wxy)^2 > 0 , Wxx>0 才滿足求到最近距離。直接把上答案。

 

一階偏導數推到過程:

 

 

二階具體完整過程:

 

分析二階偏導數,才能確定是不是 w最小。

 

 

 

最小二乘方平面擬合:

 

 

 

 

畫3d圖形,繪制等高線,求二階導數fxx,fyy,fxy,求fxx*fyy - fxy^2:

Clear[x, y];
f[x_, y_] = 2*x^4 + y^4 - 2*x^2 - 2*y^2 + 3;
{xmin, xmax} = {-3/2 , 3/2};
{ymin, ymax} = {-3/2, 3/2};
Plot3D[f[x, y], {x, xmin, xmax}, {y, ymin, ymax}]  (* 繪制三維圖形 *)
ContourPlot[f[x, y], {x, xmin, xmax}, {y, ymin, ymax}] (* 繪制幾條等高線 *)
fx = D[f[x, y], x] ;       
fy = D[f[x, y], y];

(* 求critical points*)
cirt = Solve[{fx == 0, fy == 0}];

(*把臨界點寫成{x,y} {x,y} {x,y}... 形式*)
critpts = {x, y} /. cirt

(* 求二階導數*)
fxx = D[fx, x];
fxy = D[fx, y];
fyy = D[fy, y];

(*二階導數判別法 寫成{{臨界點},判別法的值,fxx的值}*)
disc = fxx * fyy - fxy ^2 {{x, y}, disc, fxx} /. cirt

 輸出:

 lagrange method:

到一個點的極大距離,求球面x^2+y^2+z^2=4離點(1,-1,1)最遠的點

1, method 1 use the build-in function Select[] method... But i think the it is not fastest, The F function has run two times order to get variable d

and Select[] method also run the f[x,y,z] two times. Select[] and Map[] should pay attention to these two functions.Big loop~......o(N) + o(N)

 

Use fully programming method: o(N)

as you can see, the d variable is not useable.

 

RegionPlot/PolarPlot 區域圖/極坐標圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM