derivada
DownloadTélécharger
Actions
Vote :
ScreenshotAperçu

Informations
Catégorie :Category: nCreator TI-Nspire
Auteur Author: a.cejudo.v
Type : Classeur 3.0.1
Page(s) : 1
Taille Size: 3.17 Ko KB
Mis en ligne Uploaded: 11/07/2025 - 14:58:37
Mis à jour Updated: 11/07/2025 - 14:59:13
Uploadeur Uploader: a.cejudo.v (Profil)
Téléchargements Downloads: 5
Visibilité Visibility: Archive publique
Shortlink : https://tipla.net/a4793094
Type : Classeur 3.0.1
Page(s) : 1
Taille Size: 3.17 Ko KB
Mis en ligne Uploaded: 11/07/2025 - 14:58:37
Mis à jour Updated: 11/07/2025 - 14:59:13
Uploadeur Uploader: a.cejudo.v (Profil)
Téléchargements Downloads: 5
Visibilité Visibility: Archive publique
Shortlink : https://tipla.net/a4793094
Description
Fichier Nspire généré sur TI-Planet.org.
Compatible OS 3.0 et ultérieurs.
<<
local funcs = { {name="f1", f=function(x,y,z) return x/(y^2) - y/(x^2) + math.sin(z) end}, {name="f2", f=function(x,y,z) return math.exp(-x^2 - y^2) * math.cos(z) end}, {name="f3", f=function(x,y,z) return math.sin(x) + math.cos(y) + z^2 end}, } local selected_func = 1 local x0, y0, z0 = 1, 1, 0 local screen_w, screen_h = 320, 240 local scale = 50 local rot_x, rot_y = math.pi/6, math.pi/4 local zoom = 1 local pan_x, pan_y = 0, 0 local h = 1e-5 local function f(x,y,z) return funcs[selected_func].f(x,y,z) end local function d2fdx2(x,y,z) return (f(x+h,y,z) - 2*f(x,y,z) + f(x-h,y,z)) / (h^2) end local function d2fdy2(x,y,z) return (f(x,y+h,z) - 2*f(x,y,z) + f(x,y-h,z)) / (h^2) end local function d2fdz2(x,y,z) return (f(x,y,z+h) - 2*f(x,y,z) + f(x,y,z-h)) / (h^2) end local function d2fdxdy(x,y,z) return (f(x+h,y+h,z) - f(x+h,y-h,z) - f(x-h,y+h,z) + f(x-h,y-h,z)) / (4*h^2) end local function d2fdxdz(x,y,z) return (f(x+h,y,z+h) - f(x+h,y,z-h) - f(x-h,y,z+h) + f(x-h,y,z-h)) / (4*h^2) end local function d2fdydz(x,y,z) return (f(x,y+h,z+h) - f(x,y+h,z-h) - f(x,y-h,z+h) + f(x,y-h,z-h)) / (4*h^2) end local function T(x,y,z) return d2fdx2(x,y,z) + d2fdy2(x,y,z) + d2fdz2(x,y,z) + d2fdxdy(x,y,z) + d2fdxdz(x,y,z) + d2fdydz(x,y,z) end local function proyectar3D(x,y,z) local cosx, sinx = math.cos(rot_x), math.sin(rot_x) local cosy, siny = math.cos(rot_y), math.sin(rot_y) local y1 = y * cosx - z * sinx local z1 = y * sinx + z * cosx local x2 = x * cosy + z1 * siny local z2 = -x * siny + z1 * cosy local px = (x2 * scale * zoom) + screen_w/2 + pan_x local py = (y1 * scale * zoom) + screen_h/2 + pan_y return px, py, z2 end local function dibujarSuperficie(gc, z_fixed) local paso = 0.1 local xmin, xmax = -2, 2 local ymin, ymax = -2, 2 gc:setPen("black", 1) for x = xmin, xmax, paso do for y = ymin, ymax, paso do local z = funcs[selected_func].f(x, y, z_fixed) local px, py, pz = proyectar3D(x, y, z) local valT = T(x,y,z_fixed) local c = math.min(math.max((valT + 5) / 10, 0), 1) local gray = math.floor(255 * (1 - c)) gc:setBrush(gray, gray, gray, 255) gc:fillRect(px, py, 2, 2) end end end function on.create() platform.window:invalidate() end function on.paint(gc) gc:setFont("sansserif", "r", 14) gc:drawString("Función: "..funcs[selected_func].name, 10, 10, "top") gc:drawString(string.format("Punto: (%.2f, %.2f, %.2f)", x0, y0, z0), 10, 40, "top") gc:drawString(string.format("T(x,y,z): %.5f", T(x0,y0,z0)), 10, 70, "top") gc:drawString("Cambiar función: + / -", 10, 100, "top") gc:drawString("Mover punto: w/s (y), a/d (x), [/ ] (z)", 10, 120, "top") gc:drawString("Rotar: i/k (x), j/l (y)", 10, 140, "top") gc:drawString("Zoom: z/x", 10, 160, "top") gc:drawString("Pan: flechas", 10, 180, "top") dibujarSuperficie(gc, z0) end function on.charIn(char) if char == "+" then selected_func = (selected_func % #funcs) + 1 elseif char == "-" then selected_func = (selected_func - 2) % #funcs + 1 elseif char == "w" then y0 = y0 + 0.1 elseif char == "s" then y0 = y0 - 0.1 elseif char == "a" then x0 = x0 - 0.1 elseif char == "d" then x0 = x0 + 0.1 elseif char == "[" then z0 = z0 - 0.1 elseif char == "]" then z0 = z0 + 0.1 elseif char == "i" then rot_x = rot_x + 0.05 elseif char == "k" then rot_x = rot_x - 0.05 elseif char == "j" then rot_y = rot_y + 0.05 elseif char == "l" then rot_y = rot_y - 0.05 elseif char == "z" then zoom = zoom * 1.1 elseif char == "x" then zoom = zoom / 1.1 end platform.window:invalidate() end function on.arrowKey(key) local pan_step = 10 if key == "up" then pan_y = pan_y - pan_step elseif key == "down" then pan_y = pan_y + pan_step elseif key == "left" then pan_x = pan_x - pan_step elseif key == "right" then pan_x = pan_x + pan_step end platform.window:invalidate() end Made with nCreator - tiplanet.org
>>
Compatible OS 3.0 et ultérieurs.
<<
local funcs = { {name="f1", f=function(x,y,z) return x/(y^2) - y/(x^2) + math.sin(z) end}, {name="f2", f=function(x,y,z) return math.exp(-x^2 - y^2) * math.cos(z) end}, {name="f3", f=function(x,y,z) return math.sin(x) + math.cos(y) + z^2 end}, } local selected_func = 1 local x0, y0, z0 = 1, 1, 0 local screen_w, screen_h = 320, 240 local scale = 50 local rot_x, rot_y = math.pi/6, math.pi/4 local zoom = 1 local pan_x, pan_y = 0, 0 local h = 1e-5 local function f(x,y,z) return funcs[selected_func].f(x,y,z) end local function d2fdx2(x,y,z) return (f(x+h,y,z) - 2*f(x,y,z) + f(x-h,y,z)) / (h^2) end local function d2fdy2(x,y,z) return (f(x,y+h,z) - 2*f(x,y,z) + f(x,y-h,z)) / (h^2) end local function d2fdz2(x,y,z) return (f(x,y,z+h) - 2*f(x,y,z) + f(x,y,z-h)) / (h^2) end local function d2fdxdy(x,y,z) return (f(x+h,y+h,z) - f(x+h,y-h,z) - f(x-h,y+h,z) + f(x-h,y-h,z)) / (4*h^2) end local function d2fdxdz(x,y,z) return (f(x+h,y,z+h) - f(x+h,y,z-h) - f(x-h,y,z+h) + f(x-h,y,z-h)) / (4*h^2) end local function d2fdydz(x,y,z) return (f(x,y+h,z+h) - f(x,y+h,z-h) - f(x,y-h,z+h) + f(x,y-h,z-h)) / (4*h^2) end local function T(x,y,z) return d2fdx2(x,y,z) + d2fdy2(x,y,z) + d2fdz2(x,y,z) + d2fdxdy(x,y,z) + d2fdxdz(x,y,z) + d2fdydz(x,y,z) end local function proyectar3D(x,y,z) local cosx, sinx = math.cos(rot_x), math.sin(rot_x) local cosy, siny = math.cos(rot_y), math.sin(rot_y) local y1 = y * cosx - z * sinx local z1 = y * sinx + z * cosx local x2 = x * cosy + z1 * siny local z2 = -x * siny + z1 * cosy local px = (x2 * scale * zoom) + screen_w/2 + pan_x local py = (y1 * scale * zoom) + screen_h/2 + pan_y return px, py, z2 end local function dibujarSuperficie(gc, z_fixed) local paso = 0.1 local xmin, xmax = -2, 2 local ymin, ymax = -2, 2 gc:setPen("black", 1) for x = xmin, xmax, paso do for y = ymin, ymax, paso do local z = funcs[selected_func].f(x, y, z_fixed) local px, py, pz = proyectar3D(x, y, z) local valT = T(x,y,z_fixed) local c = math.min(math.max((valT + 5) / 10, 0), 1) local gray = math.floor(255 * (1 - c)) gc:setBrush(gray, gray, gray, 255) gc:fillRect(px, py, 2, 2) end end end function on.create() platform.window:invalidate() end function on.paint(gc) gc:setFont("sansserif", "r", 14) gc:drawString("Función: "..funcs[selected_func].name, 10, 10, "top") gc:drawString(string.format("Punto: (%.2f, %.2f, %.2f)", x0, y0, z0), 10, 40, "top") gc:drawString(string.format("T(x,y,z): %.5f", T(x0,y0,z0)), 10, 70, "top") gc:drawString("Cambiar función: + / -", 10, 100, "top") gc:drawString("Mover punto: w/s (y), a/d (x), [/ ] (z)", 10, 120, "top") gc:drawString("Rotar: i/k (x), j/l (y)", 10, 140, "top") gc:drawString("Zoom: z/x", 10, 160, "top") gc:drawString("Pan: flechas", 10, 180, "top") dibujarSuperficie(gc, z0) end function on.charIn(char) if char == "+" then selected_func = (selected_func % #funcs) + 1 elseif char == "-" then selected_func = (selected_func - 2) % #funcs + 1 elseif char == "w" then y0 = y0 + 0.1 elseif char == "s" then y0 = y0 - 0.1 elseif char == "a" then x0 = x0 - 0.1 elseif char == "d" then x0 = x0 + 0.1 elseif char == "[" then z0 = z0 - 0.1 elseif char == "]" then z0 = z0 + 0.1 elseif char == "i" then rot_x = rot_x + 0.05 elseif char == "k" then rot_x = rot_x - 0.05 elseif char == "j" then rot_y = rot_y + 0.05 elseif char == "l" then rot_y = rot_y - 0.05 elseif char == "z" then zoom = zoom * 1.1 elseif char == "x" then zoom = zoom / 1.1 end platform.window:invalidate() end function on.arrowKey(key) local pan_step = 10 if key == "up" then pan_y = pan_y - pan_step elseif key == "down" then pan_y = pan_y + pan_step elseif key == "left" then pan_x = pan_x - pan_step elseif key == "right" then pan_x = pan_x + pan_step end platform.window:invalidate() end Made with nCreator - tiplanet.org
>>