Effacer les filtres
Effacer les filtres

How to write a symbolic function array?

1 vue (au cours des 30 derniers jours)
Zhenwei Yu
Zhenwei Yu le 5 Nov 2020
Commenté : Zhenwei Yu le 6 Nov 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 commentaires
Walter Roberson
Walter Roberson le 6 Nov 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 le 6 Nov 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

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Symbolic Math Toolbox dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by