Filter löschen
Filter löschen

How to write a symbolic function array?

1 Ansicht (letzte 30 Tage)
Zhenwei Yu
Zhenwei Yu am 5 Nov. 2020
Kommentiert: Zhenwei Yu am 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 Kommentare
Walter Roberson
Walter Roberson am 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 am 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

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Symbolic Math Toolbox finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by