Borrar filtros
Borrar filtros

How to write a symbolic function array?

1 visualización (últimos 30 días)
Zhenwei Yu
Zhenwei Yu el 5 de Nov. de 2020
Comentada: Zhenwei Yu el 6 de Nov. de 2020
function f=g5(x)
syms q b x
q=[6 7 1;7 11 2;1 2 22]
b=[-1;2;3]
x=transpose(sym('x',[1 3]))
f=1/2*transpose(x)*q*x+transpose(b)*x-2
end
This is my writing function
clc;
clear;
%%gradient descent
syms w
w=[2;2;6]
for i=1:30
w=w-5*gradient(g5(w))
%%if norm(gradient(g5(w)))>0.01
%%break
%%end
display(w)
end
This is the variable I setted trying to find the solution of the function. But the outcome is
w =
152 - 1050*x2 - 150*x3 - 900*x1
- 1050*x1 - 1650*x2 - 300*x3 - 298
- 150*x1 - 300*x2 - 3300*x3 - 444
I want to insert [2;2;6] into [x1;x2;x3] to get the value of the function. But it seems symbolic variables defined cannot be taken as parameters. Is there any way to change it into independent variables?
  6 comentarios
Walter Roberson
Walter Roberson el 6 de Nov. de 2020
w=[2;2;6];
g5(w)
ans = 512
function f=g5(x)
q = [6 7 1;7 11 2;1 2 22];
b = [-1;2;3];
f = 1/2*x'*q*x + b'*x - 2;
end
Looks okay to me.
Zhenwei Yu
Zhenwei Yu el 6 de Nov. de 2020
@Walter Roberson
Thanks for your help but it seems you may misunderstand my purpose. I got a function 1/2*x'*q*x + b'*x - 2, and I need to calculate its gradient. Something like (3x1+7x2+x3,7/2x1+11/2x2...). And use values in each point of gradient function to make it close to optimal point.
Your function is right and I just tested. But it seems I cannot preserve the unknown variables for further calculation

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.

Productos


Versión

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by