Clear Filters
Clear Filters

How to write a symbolic function array?

1 view (last 30 days)
Zhenwei Yu
Zhenwei Yu on 5 Nov 2020
Commented: Zhenwei Yu on 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 Comments
Walter Roberson
Walter Roberson on 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 on 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

Sign in to comment.

Answers (0)

Categories

Find more on Symbolic Math Toolbox in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!